diff --git a/README.md b/README.md index 12dbbf40..4cd6f3dd 100644 --- a/README.md +++ b/README.md @@ -72,13 +72,12 @@ Every argument is optional. | [exempt-assignees](#exempt-assignees) | Assignees on issues/PRs exempted from stale | | | [exempt-issue-assignees](#exempt-issue-assignees) | Override [exempt-assignees](#exempt-assignees) for issues only | | | [exempt-pr-assignees](#exempt-pr-assignees) | Override [exempt-assignees](#exempt-assignees) for PRs only | | -| [exempt-all-assignees](#exempt-all-assignees) | Exempt all issues/PRs with assignees from stale | `false` | -| [exempt-all-issue-assignees](#exempt-all-issue-assignees) | Override [exempt-all-assignees](#exempt-all-assignees) for issues only | | -| [exempt-all-pr-assignees](#exempt-all-pr-assignees) | Override [exempt-all-assignees](#exempt-all-assignees) for PRs only | | +| [exempt-all-issue-assignees](#exempt-all-issue-assignees) | Exempt all issues with assignees from stale | `false` | +| [exempt-all-pr-assignees](#exempt-all-pr-assignees) | Exempt all PRs with assignees from stale | `false` | | [exempt-draft-pr](#exempt-draft-pr) | Skip the stale action for draft PRs | `false` | | [enable-statistics](#enable-statistics) | Display statistics in the logs | `true` | -| [ignore-issue-updates](#ignore-issue-updates) | Any update (update/comment) can reset the stale idle time on the issues | | -| [ignore-pr-updates](#ignore-pr-updates) | Any update (update/comment) can reset the stale idle time on the PRs | | +| [ignore-issue-updates](#ignore-issue-updates) | Any update (update/comment) can reset the stale idle time on the issues | `false` | +| [ignore-pr-updates](#ignore-pr-updates) | Any update (update/comment) can reset the stale idle time on the PRs | `false` | ### List of output options @@ -126,7 +125,8 @@ You can fine tune which issues or pull requests should be marked as stale based - [exempt-milestones](#exempt-milestones) - [exempt-all-milestones](#exempt-all-milestones) - [exempt-assignees](#exempt-assignees) -- [exempt-all-assignees](#exempt-all-assignees) +- [exempt-all-issue-assignees](#exempt-all-issue-assignees) +- [exempt-all-pr-assignees](#exempt-all-pr-assignees) - [ignore-issue-updates](#ignore-issue-updates) - [ignore-pr-updates](#ignore-pr-updates) @@ -453,25 +453,21 @@ Override [exempt-assignees](#exempt-assignees) but only to process the pull requ Default value: unset -#### exempt-all-assignees +#### exempt-all-issue-assignees -If set to `true`, the issues or the pull requests with an assignee will not be marked as stale automatically. +If set to `true`, the issues with an assignee will not be marked as stale automatically. Priority over [exempt-assignees](#exempt-assignees). Default value: `false` -#### exempt-all-issue-assignees - -Override [exempt-all-assignees](#exempt-all-assignees) but only to exempt the issues with an assignee to be marked as stale automatically. - -Default value: unset - #### exempt-all-pr-assignees -Override [exempt-all-assignees](#exempt-all-assignees) but only to exempt the pull requests with an assignee to be marked as stale automatically. +If set to `true`, the pull requests with an assignee will not be marked as stale automatically. -Default value: unset +Priority over [exempt-assignees](#exempt-assignees). + +Default value: `false` #### exempt-draft-pr diff --git a/__tests__/assignees.spec.ts b/__tests__/assignees.spec.ts index 86c45349..7e9b4907 100644 --- a/__tests__/assignees.spec.ts +++ b/__tests__/assignees.spec.ts @@ -8,9 +8,8 @@ interface ITestData { id: number; isPullRequest: boolean; assignees: string[]; - exemptAllAssignees: boolean; - exemptAllIssueAssignees: boolean | undefined; - exemptAllPrAssignees: boolean | undefined; + exemptAllIssueAssignees: boolean; + exemptAllPrAssignees: boolean; exemptAssignees: string; exemptIssueAssignees: string; exemptPrAssignees: string; @@ -59,325 +58,324 @@ describe('assignees options', (): void => { }); describe.each` - id | isPullRequest | assignees | exemptAllAssignees | exemptAllIssueAssignees | exemptAllPrAssignees | exemptAssignees | exemptIssueAssignees | exemptPrAssignees | shouldStale | description - ${100} | ${false} | ${[]} | ${false} | ${undefined} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee'} - ${101} | ${false} | ${[]} | ${true} | ${undefined} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and only exemptAllAssignees is enabled'} - ${102} | ${false} | ${[]} | ${false} | ${true} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and only exemptAllIssueAssignees is enabled'} - ${103} | ${false} | ${[]} | ${false} | ${undefined} | ${true} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and only exemptAllPrAssignees is enabled'} - ${104} | ${false} | ${[]} | ${true} | ${false} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is disabled'} - ${105} | ${false} | ${[]} | ${true} | ${true} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is enabled'} - ${106} | ${false} | ${[]} | ${true} | ${undefined} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is disabled'} - ${107} | ${false} | ${[]} | ${true} | ${undefined} | ${true} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is enabled'} - ${108} | ${false} | ${[]} | ${false} | ${false} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is disabled'} - ${109} | ${false} | ${[]} | ${false} | ${true} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is enabled'} - ${200} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is disabled'} - ${201} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${''} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is enabled'} - ${202} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${''} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and only exemptAllAssignees is enabled'} - ${203} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${''} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and only exemptAllIssueAssignees is enabled'} - ${204} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${''} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and only exemptAllPrAssignees is enabled'} - ${205} | ${false} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is disabled'} - ${206} | ${false} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${''} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is enabled'} - ${207} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${''} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is disabled'} - ${208} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${''} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is enabled'} - ${209} | ${false} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is disabled'} - ${210} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${''} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is enabled'} - ${211} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is disabled'} - ${212} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${''} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is enabled'} - ${213} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is disabled'} - ${300} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has a different assignee'} - ${301} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees has a different assignee'} - ${302} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptAssignees has a different assignee'} - ${303} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled and exemptAssignees has a different assignee'} - ${304} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled and exemptAssignees has a different assignee'} - ${305} | ${false} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptAssignees has a different assignee'} - ${306} | ${false} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptAssignees has a different assignee'} - ${307} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptAssignees has a different assignee'} - ${308} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptAssignees has a different assignee'} - ${309} | ${false} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptAssignees has a different assignee'} - ${310} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptAssignees has a different assignee'} - ${311} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has a different assignee'} - ${312} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees has a different assignee'} - ${313} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has a different assignee'} - ${400} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has the same assignee'} - ${401} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees has the same assignee'} - ${402} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptAssignees has the same assignee'} - ${403} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled and exemptAssignees has the same assignee'} - ${404} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled and exemptAssignees has the same assignee'} - ${405} | ${false} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptAssignees has the same assignee'} - ${406} | ${false} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptAssignees has the same assignee'} - ${407} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptAssignees has the same assignee'} - ${408} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptAssignees has the same assignee'} - ${409} | ${false} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptAssignees has the same assignee'} - ${410} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptAssignees has the same assignee'} - ${411} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has the same assignee'} - ${412} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees has the same assignee'} - ${413} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has the same assignee'} - ${500} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'} - ${501} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} - ${502} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} - ${503} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} - ${504} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} - ${505} | ${false} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'} - ${506} | ${false} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} - ${507} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'} - ${508} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} - ${509} | ${false} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'} - ${510} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} - ${511} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'} - ${512} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} - ${513} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'} - ${600} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} - ${601} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} - ${602} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} - ${603} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} - ${604} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} - ${605} | ${false} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} - ${606} | ${false} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} - ${607} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} - ${608} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} - ${609} | ${false} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} - ${610} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} - ${611} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} - ${612} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} - ${613} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} - ${700} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'} - ${701} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} - ${702} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} - ${703} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} - ${704} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} - ${705} | ${false} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'} - ${706} | ${false} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} - ${707} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'} - ${708} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} - ${709} | ${false} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'} - ${710} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} - ${711} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'} - ${712} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} - ${713} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'} - ${800} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${''} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} - ${801} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} - ${802} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} - ${803} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} - ${804} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} - ${805} | ${false} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'bad'} | ${''} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} - ${806} | ${false} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} - ${807} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} - ${808} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} - ${809} | ${false} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'bad'} | ${''} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} - ${810} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} - ${811} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${''} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} - ${812} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} - ${813} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${''} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} - ${900} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} - ${901} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} - ${902} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} - ${903} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} - ${904} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} - ${905} | ${false} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'assignee'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} - ${906} | ${false} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} - ${907} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} - ${908} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} - ${909} | ${false} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'assignee'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} - ${910} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} - ${911} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} - ${912} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} - ${913} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} - ${1000} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} - ${1001} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} - ${1002} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} - ${1003} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} - ${1004} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} - ${1005} | ${false} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} - ${1006} | ${false} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} - ${1007} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} - ${1008} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} - ${1009} | ${false} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} - ${1010} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} - ${1011} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} - ${1012} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} - ${1013} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} - ${1100} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} - ${1101} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} - ${1102} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} - ${1103} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} - ${1104} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} - ${1105} | ${false} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} - ${1106} | ${false} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} - ${1107} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} - ${1108} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} - ${1109} | ${false} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} - ${1110} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} - ${1111} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} - ${1112} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} - ${1113} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} - ${1200} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} - ${1201} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} - ${1202} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} - ${1203} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} - ${1204} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} - ${1205} | ${false} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} - ${1206} | ${false} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} - ${1207} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} - ${1208} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} - ${1209} | ${false} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} - ${1210} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} - ${1211} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} - ${1212} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} - ${1213} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} - ${1300} | ${true} | ${[]} | ${false} | ${undefined} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee'} - ${1301} | ${true} | ${[]} | ${true} | ${undefined} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and only exemptAllAssignees is enabled'} - ${1302} | ${true} | ${[]} | ${false} | ${true} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and only exemptAllIssueAssignees is enabled'} - ${1303} | ${true} | ${[]} | ${false} | ${undefined} | ${true} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and only exemptAllPrAssignees is enabled'} - ${1304} | ${true} | ${[]} | ${true} | ${false} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is disabled'} - ${1305} | ${true} | ${[]} | ${true} | ${true} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is enabled'} - ${1306} | ${true} | ${[]} | ${true} | ${undefined} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is disabled'} - ${1307} | ${true} | ${[]} | ${true} | ${undefined} | ${true} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is enabled'} - ${1308} | ${true} | ${[]} | ${false} | ${false} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is disabled'} - ${1309} | ${true} | ${[]} | ${false} | ${true} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is enabled'} - ${1400} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is disabled'} - ${1401} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${''} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is enabled'} - ${1402} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${''} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and only exemptAllAssignees is enabled'} - ${1403} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and only exemptAllIssueAssignees is enabled'} - ${1404} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${''} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and only exemptAllPrAssignees is enabled'} - ${1405} | ${true} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${''} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is disabled'} - ${1406} | ${true} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${''} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is enabled'} - ${1407} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is disabled'} - ${1408} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${''} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is enabled'} - ${1409} | ${true} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is disabled'} - ${1410} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is enabled'} - ${1411} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is disabled'} - ${1412} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${''} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is enabled'} - ${1413} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is disabled'} - ${1500} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has a different assignee'} - ${1501} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees has a different assignee'} - ${1502} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptAssignees has a different assignee'} - ${1503} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled and exemptAssignees has a different assignee'} - ${1504} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled and exemptAssignees has a different assignee'} - ${1505} | ${true} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptAssignees has a different assignee'} - ${1506} | ${true} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptAssignees has a different assignee'} - ${1507} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptAssignees has a different assignee'} - ${1508} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptAssignees has a different assignee'} - ${1509} | ${true} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptAssignees has a different assignee'} - ${1510} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptAssignees has a different assignee'} - ${1511} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has a different assignee'} - ${1513} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has a different assignee'} - ${1600} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has the same assignee'} - ${1601} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees has the same assignee'} - ${1602} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptAssignees has the same assignee'} - ${1603} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled and exemptAssignees has the same assignee'} - ${1604} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled and exemptAssignees has the same assignee'} - ${1605} | ${true} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptAssignees has the same assignee'} - ${1606} | ${true} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptAssignees has the same assignee'} - ${1607} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptAssignees has the same assignee'} - ${1608} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptAssignees has the same assignee'} - ${1609} | ${true} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptAssignees has the same assignee'} - ${1610} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptAssignees has the same assignee'} - ${1611} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has the same assignee'} - ${1612} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees has the same assignee'} - ${1613} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has the same assignee'} - ${1701} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} - ${1702} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} - ${1703} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} - ${1704} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} - ${1705} | ${true} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'} - ${1706} | ${true} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} - ${1707} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'} - ${1708} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} - ${1709} | ${true} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'} - ${1710} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} - ${1711} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'} - ${1800} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} - ${1801} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${'assignee'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} - ${1802} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} - ${1803} | ${true} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} - ${1804} | ${true} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} - ${1805} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'bad'} | ${'assignee'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} - ${1806} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} - ${1807} | ${true} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'bad'} | ${'assignee'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} - ${1808} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${'assignee'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} - ${1809} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} - ${1810} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${'assignee'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} - ${1900} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} - ${1901} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} - ${1902} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} - ${1903} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} - ${1904} | ${true} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'} - ${1905} | ${true} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} - ${1906} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'} - ${1907} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} - ${1908} | ${true} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'} - ${1909} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} - ${1910} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} - ${1911} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'} - ${2000} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} - ${2001} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} - ${2002} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} - ${2003} | ${true} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} - ${2004} | ${true} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} - ${2005} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} - ${2006} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} - ${2007} | ${true} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} - ${2008} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} - ${2009} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} - ${2010} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} - ${2100} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} - ${2101} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} - ${2102} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} - ${2103} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} - ${2104} | ${true} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} - ${2105} | ${true} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} - ${2106} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} - ${2107} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} - ${2108} | ${true} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} - ${2109} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} - ${2110} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} - ${2200} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} - ${2201} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} - ${2202} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} - ${2203} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} - ${2204} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} - ${2205} | ${true} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} - ${2206} | ${true} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} - ${2207} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} - ${2208} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} - ${2209} | ${true} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} - ${2210} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} - ${2311} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} - ${2312} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} - ${2313} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} - ${2300} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} - ${2301} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} - ${2302} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} - ${2303} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} - ${2304} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} - ${2305} | ${true} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} - ${2306} | ${true} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} - ${2307} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} - ${2308} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} - ${2309} | ${true} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'assignee'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} - ${2310} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} - ${2311} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} - ${2400} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} - ${2401} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} - ${2402} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} - ${2403} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} - ${2404} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} - ${2405} | ${true} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} - ${2406} | ${true} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} - ${2407} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} - ${2408} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} - ${2409} | ${true} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} - ${2410} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} - ${2411} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} - ${2412} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} - ${2413} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} + id | isPullRequest | assignees | exemptAllIssueAssignees | exemptAllPrAssignees | exemptAssignees | exemptIssueAssignees | exemptPrAssignees | shouldStale | description + ${100} | ${false} | ${[]} | ${false} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee'} + ${101} | ${false} | ${[]} | ${true} | ${true} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and only exemptAllAssignees is enabled'} + ${102} | ${false} | ${[]} | ${true} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and only exemptAllIssueAssignees is enabled'} + ${103} | ${false} | ${[]} | ${false} | ${true} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and only exemptAllPrAssignees is enabled'} + ${104} | ${false} | ${[]} | ${false} | ${true} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is disabled'} + ${105} | ${false} | ${[]} | ${true} | ${true} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is enabled'} + ${106} | ${false} | ${[]} | ${true} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is disabled'} + ${107} | ${false} | ${[]} | ${true} | ${true} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is enabled'} + ${108} | ${false} | ${[]} | ${false} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is disabled'} + ${109} | ${false} | ${[]} | ${true} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is enabled'} + ${200} | ${false} | ${['assignee']} | ${false} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is disabled'} + ${201} | ${false} | ${['assignee']} | ${false} | ${true} | ${''} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is enabled'} + ${202} | ${false} | ${['assignee']} | ${true} | ${true} | ${''} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and only exemptAllAssignees is enabled'} + ${203} | ${false} | ${['assignee']} | ${true} | ${false} | ${''} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and only exemptAllIssueAssignees is enabled'} + ${204} | ${false} | ${['assignee']} | ${false} | ${true} | ${''} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and only exemptAllPrAssignees is enabled'} + ${205} | ${false} | ${['assignee']} | ${false} | ${true} | ${''} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is disabled'} + ${206} | ${false} | ${['assignee']} | ${true} | ${true} | ${''} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is enabled'} + ${207} | ${false} | ${['assignee']} | ${true} | ${false} | ${''} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is disabled'} + ${208} | ${false} | ${['assignee']} | ${true} | ${true} | ${''} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is enabled'} + ${209} | ${false} | ${['assignee']} | ${false} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is disabled'} + ${210} | ${false} | ${['assignee']} | ${true} | ${false} | ${''} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is enabled'} + ${211} | ${false} | ${['assignee']} | ${false} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is disabled'} + ${212} | ${false} | ${['assignee']} | ${false} | ${true} | ${''} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is enabled'} + ${213} | ${false} | ${['assignee']} | ${false} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is disabled'} + ${300} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has a different assignee'} + ${301} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees has a different assignee'} + ${302} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptAssignees has a different assignee'} + ${303} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled and exemptAssignees has a different assignee'} + ${304} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled and exemptAssignees has a different assignee'} + ${305} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptAssignees has a different assignee'} + ${306} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptAssignees has a different assignee'} + ${307} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptAssignees has a different assignee'} + ${308} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptAssignees has a different assignee'} + ${309} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptAssignees has a different assignee'} + ${310} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptAssignees has a different assignee'} + ${311} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has a different assignee'} + ${312} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees has a different assignee'} + ${313} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has a different assignee'} + ${400} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has the same assignee'} + ${401} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees has the same assignee'} + ${402} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptAssignees has the same assignee'} + ${403} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled and exemptAssignees has the same assignee'} + ${404} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled and exemptAssignees has the same assignee'} + ${405} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptAssignees has the same assignee'} + ${406} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptAssignees has the same assignee'} + ${407} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptAssignees has the same assignee'} + ${408} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptAssignees has the same assignee'} + ${409} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptAssignees has the same assignee'} + ${410} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptAssignees has the same assignee'} + ${411} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has the same assignee'} + ${412} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees has the same assignee'} + ${413} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has the same assignee'} + ${500} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'} + ${501} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} + ${502} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} + ${503} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} + ${504} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} + ${505} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'} + ${506} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} + ${507} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'} + ${508} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} + ${509} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'} + ${510} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} + ${511} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'} + ${512} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} + ${513} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'} + ${600} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} + ${601} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} + ${602} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} + ${603} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} + ${604} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} + ${605} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} + ${606} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} + ${607} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} + ${608} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} + ${609} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} + ${610} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} + ${611} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} + ${612} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} + ${613} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} + ${700} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'} + ${701} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} + ${702} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} + ${703} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} + ${704} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} + ${705} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'} + ${706} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} + ${707} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'} + ${708} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} + ${709} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'} + ${710} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} + ${711} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'} + ${712} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} + ${713} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'} + ${800} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${''} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} + ${801} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${''} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} + ${802} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} + ${803} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} + ${804} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${''} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} + ${805} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${''} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} + ${806} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} + ${807} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} + ${808} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} + ${809} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${''} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} + ${810} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} + ${811} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${''} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} + ${812} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${''} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} + ${813} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${''} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} + ${900} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} + ${901} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} + ${902} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} + ${903} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} + ${904} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} + ${905} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} + ${906} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} + ${907} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} + ${908} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} + ${909} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} + ${910} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} + ${911} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} + ${912} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} + ${913} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} + ${1000} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} + ${1001} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} + ${1002} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} + ${1003} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} + ${1004} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} + ${1005} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} + ${1006} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} + ${1007} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} + ${1008} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} + ${1009} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} + ${1010} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} + ${1011} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} + ${1012} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} + ${1013} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} + ${1100} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} + ${1101} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} + ${1102} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} + ${1103} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} + ${1104} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} + ${1105} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} + ${1106} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} + ${1107} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} + ${1108} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} + ${1109} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} + ${1110} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} + ${1111} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} + ${1112} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} + ${1113} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} + ${1200} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} + ${1201} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} + ${1202} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} + ${1203} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} + ${1204} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} + ${1205} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} + ${1206} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} + ${1207} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} + ${1208} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} + ${1209} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} + ${1210} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} + ${1211} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} + ${1212} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} + ${1213} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} + ${1300} | ${true} | ${[]} | ${false} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee'} + ${1301} | ${true} | ${[]} | ${true} | ${true} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and only exemptAllAssignees is enabled'} + ${1302} | ${true} | ${[]} | ${true} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and only exemptAllIssueAssignees is enabled'} + ${1303} | ${true} | ${[]} | ${false} | ${true} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and only exemptAllPrAssignees is enabled'} + ${1304} | ${true} | ${[]} | ${false} | ${true} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is disabled'} + ${1305} | ${true} | ${[]} | ${true} | ${true} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is enabled'} + ${1306} | ${true} | ${[]} | ${true} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is disabled'} + ${1307} | ${true} | ${[]} | ${true} | ${true} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is enabled'} + ${1308} | ${true} | ${[]} | ${false} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is disabled'} + ${1309} | ${true} | ${[]} | ${true} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is enabled'} + ${1400} | ${true} | ${['assignee']} | ${false} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is disabled'} + ${1401} | ${true} | ${['assignee']} | ${false} | ${true} | ${''} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is enabled'} + ${1402} | ${true} | ${['assignee']} | ${true} | ${true} | ${''} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and only exemptAllAssignees is enabled'} + ${1403} | ${true} | ${['assignee']} | ${true} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and only exemptAllIssueAssignees is enabled'} + ${1404} | ${true} | ${['assignee']} | ${false} | ${true} | ${''} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and only exemptAllPrAssignees is enabled'} + ${1405} | ${true} | ${['assignee']} | ${false} | ${true} | ${''} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is disabled'} + ${1406} | ${true} | ${['assignee']} | ${true} | ${true} | ${''} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is enabled'} + ${1407} | ${true} | ${['assignee']} | ${true} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is disabled'} + ${1408} | ${true} | ${['assignee']} | ${true} | ${true} | ${''} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is enabled'} + ${1409} | ${true} | ${['assignee']} | ${false} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is disabled'} + ${1410} | ${true} | ${['assignee']} | ${true} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is enabled'} + ${1411} | ${true} | ${['assignee']} | ${false} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is disabled'} + ${1412} | ${true} | ${['assignee']} | ${false} | ${true} | ${''} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is enabled'} + ${1413} | ${true} | ${['assignee']} | ${false} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is disabled'} + ${1500} | ${true} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has a different assignee'} + ${1501} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees has a different assignee'} + ${1502} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptAssignees has a different assignee'} + ${1503} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled and exemptAssignees has a different assignee'} + ${1504} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled and exemptAssignees has a different assignee'} + ${1505} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptAssignees has a different assignee'} + ${1506} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptAssignees has a different assignee'} + ${1507} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptAssignees has a different assignee'} + ${1508} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptAssignees has a different assignee'} + ${1509} | ${true} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptAssignees has a different assignee'} + ${1510} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptAssignees has a different assignee'} + ${1511} | ${true} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has a different assignee'} + ${1513} | ${true} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has a different assignee'} + ${1600} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has the same assignee'} + ${1601} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees has the same assignee'} + ${1602} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptAssignees has the same assignee'} + ${1603} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled and exemptAssignees has the same assignee'} + ${1604} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled and exemptAssignees has the same assignee'} + ${1605} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptAssignees has the same assignee'} + ${1606} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptAssignees has the same assignee'} + ${1607} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptAssignees has the same assignee'} + ${1608} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptAssignees has the same assignee'} + ${1609} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptAssignees has the same assignee'} + ${1610} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptAssignees has the same assignee'} + ${1611} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has the same assignee'} + ${1612} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees has the same assignee'} + ${1613} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has the same assignee'} + ${1701} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} + ${1702} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} + ${1703} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} + ${1704} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} + ${1705} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'} + ${1706} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} + ${1707} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'} + ${1708} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} + ${1709} | ${true} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'} + ${1710} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'} + ${1711} | ${true} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'} + ${1800} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} + ${1801} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'assignee'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} + ${1802} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} + ${1803} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} + ${1804} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} + ${1805} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'assignee'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} + ${1806} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} + ${1807} | ${true} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'assignee'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} + ${1808} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'assignee'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} + ${1809} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} + ${1810} | ${true} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'assignee'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'} + ${1900} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} + ${1901} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} + ${1902} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} + ${1903} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} + ${1904} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'} + ${1905} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} + ${1906} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'} + ${1907} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} + ${1908} | ${true} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'} + ${1909} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} + ${1910} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'} + ${1911} | ${true} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'} + ${2000} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} + ${2001} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} + ${2002} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} + ${2003} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} + ${2004} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} + ${2005} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} + ${2006} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} + ${2007} | ${true} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} + ${2008} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} + ${2009} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} + ${2010} | ${true} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'} + ${2100} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} + ${2101} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} + ${2102} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} + ${2103} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} + ${2104} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} + ${2105} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} + ${2106} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} + ${2107} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} + ${2108} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} + ${2109} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} + ${2110} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'} + ${2200} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} + ${2201} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} + ${2202} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} + ${2203} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} + ${2204} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} + ${2205} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} + ${2206} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} + ${2207} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} + ${2208} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} + ${2209} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} + ${2210} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} + ${2311} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} + ${2312} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} + ${2313} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'} + ${2300} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} + ${2301} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} + ${2302} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} + ${2303} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} + ${2304} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} + ${2305} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} + ${2306} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} + ${2307} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} + ${2308} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} + ${2309} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} + ${2310} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} + ${2311} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'} + ${2400} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} + ${2401} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} + ${2402} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} + ${2403} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} + ${2404} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} + ${2405} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} + ${2406} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} + ${2407} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} + ${2408} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} + ${2409} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} + ${2410} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} + ${2411} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} + ${2412} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} + ${2413} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'} `( '$description', ({ id, isPullRequest, assignees, - exemptAllAssignees, exemptAllIssueAssignees, exemptAllPrAssignees, exemptAssignees, @@ -386,7 +384,6 @@ describe('assignees options', (): void => { shouldStale }: ITestData): void => { beforeEach((): void => { - opts.exemptAllAssignees = exemptAllAssignees; opts.exemptAllIssueAssignees = exemptAllIssueAssignees; opts.exemptAllPrAssignees = exemptAllPrAssignees; opts.exemptAssignees = exemptAssignees; diff --git a/__tests__/constants/default-processor-options.ts b/__tests__/constants/default-processor-options.ts index 92fe08a6..37093192 100644 --- a/__tests__/constants/default-processor-options.ts +++ b/__tests__/constants/default-processor-options.ts @@ -41,9 +41,8 @@ export const DefaultProcessorOptions: IIssuesProcessorOptions = Object.freeze({ exemptAssignees: '', exemptIssueAssignees: '', exemptPrAssignees: '', - exemptAllAssignees: false, - exemptAllIssueAssignees: undefined, - exemptAllPrAssignees: undefined, + exemptAllIssueAssignees: false, + exemptAllPrAssignees: false, enableStatistics: true, labelsToRemoveWhenUnstale: '', labelsToAddWhenUnstale: '', diff --git a/action.yml b/action.yml index 688af75c..14bdfb9f 100644 --- a/action.yml +++ b/action.yml @@ -152,17 +152,13 @@ inputs: description: 'The assignees which exempt a pull request from being marked as stale. Separate multiple assignees with commas (eg. "user1,user2"). Override "exempt-assignees" option regarding only the pull requests.' default: '' required: false - exempt-all-assignees: - description: 'Exempt all issues and pull requests with assignees from being marked as stale. Default to false.' + exempt-all-issue-assignees: + description: 'Exempt all issues with assignees from being marked as stale. Default to false.' default: 'false' required: false - exempt-all-issue-assignees: - description: 'Exempt all issues with assignees from being marked as stale. Override "exempt-all-assignees" option regarding only the issues.' - default: '' - required: false exempt-all-pr-assignees: - description: 'Exempt all pull requests with assignees from being marked as stale. Override "exempt-all-assignees" option regarding only the pull requests.' - default: '' + description: 'Exempt all pull requests with assignees from being marked as stale. Default to false.' + default: 'false' required: false exempt-draft-pr: description: 'Exempt draft pull requests from being marked as stale. Default to false.' diff --git a/dist/index.js b/dist/index.js index 15c68c6e..046c120c 100644 --- a/dist/index.js +++ b/dist/index.js @@ -5,140 +5,124 @@ /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; - -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.Assignees = void 0; -const lodash_deburr_1 = __importDefault(__nccwpck_require__(1601)); -const option_1 = __nccwpck_require__(5931); -const words_to_list_1 = __nccwpck_require__(1883); -const issue_logger_1 = __nccwpck_require__(2984); -const logger_service_1 = __nccwpck_require__(1973); -class Assignees { - constructor(options, issue) { - this._options = options; - this._issue = issue; - this._issueLogger = new issue_logger_1.IssueLogger(issue); - } - static _cleanAssignee(assignee) { - return lodash_deburr_1.default(assignee.toLowerCase()); - } - shouldExemptAssignees() { - if (!this._issue.hasAssignees) { - this._issueLogger.info('This $$type has no assignee'); - this._logSkip(); - return false; - } - if (this._shouldExemptAllAssignees()) { - this._issueLogger.info(logger_service_1.LoggerService.white('└──'), 'Skipping this $$type because it has an exempt assignee'); - return true; - } - const exemptAssignees = this._getExemptAssignees(); - if (exemptAssignees.length === 0) { - this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `No assignee option was specified to skip the stale process for this $$type`); - this._logSkip(); - return false; - } - this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `Found ${logger_service_1.LoggerService.cyan(exemptAssignees.length)} assignee${exemptAssignees.length > 1 ? 's' : ''} that can exempt stale on this $$type`); - const hasExemptAssignee = exemptAssignees.some((exemptAssignee) => this._hasAssignee(exemptAssignee)); - if (!hasExemptAssignee) { - this._issueLogger.info(logger_service_1.LoggerService.white('├──'), 'No assignee on this $$type can exempt the stale process'); - this._logSkip(); - } - else { - this._issueLogger.info(logger_service_1.LoggerService.white('└──'), 'Skipping this $$type because it has an exempt assignee'); - } - return hasExemptAssignee; - } - _getExemptAssignees() { - return this._issue.isPullRequest - ? this._getExemptPullRequestAssignees() - : this._getExemptIssueAssignees(); - } - _getExemptIssueAssignees() { - if (this._options.exemptIssueAssignees === '') { - this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptIssueAssignees)} is disabled. No specific assignee can skip the stale process for this $$type`); - if (this._options.exemptAssignees === '') { - this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAssignees)} is disabled. No specific assignee can skip the stale process for this $$type`); - return []; - } - const exemptAssignees = words_to_list_1.wordsToList(this._options.exemptAssignees); - this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAssignees)} is set. ${logger_service_1.LoggerService.cyan(exemptAssignees.length)} assignee${exemptAssignees.length === 1 ? '' : 's'} can skip the stale process for this $$type`); - return exemptAssignees; - } - const exemptAssignees = words_to_list_1.wordsToList(this._options.exemptIssueAssignees); - this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptIssueAssignees)} is set. ${logger_service_1.LoggerService.cyan(exemptAssignees.length)} assignee${exemptAssignees.length === 1 ? '' : 's'} can skip the stale process for this $$type`); - return exemptAssignees; - } - _getExemptPullRequestAssignees() { - if (this._options.exemptPrAssignees === '') { - this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptPrAssignees)} is disabled. No specific assignee can skip the stale process for this $$type`); - if (this._options.exemptAssignees === '') { - this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAssignees)} is disabled. No specific assignee can skip the stale process for this $$type`); - return []; - } - const exemptAssignees = words_to_list_1.wordsToList(this._options.exemptAssignees); - this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAssignees)} is set. ${logger_service_1.LoggerService.cyan(exemptAssignees.length)} assignee${exemptAssignees.length === 1 ? '' : 's'} can skip the stale process for this $$type`); - return exemptAssignees; - } - const exemptAssignees = words_to_list_1.wordsToList(this._options.exemptPrAssignees); - this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptPrAssignees)} is set. ${logger_service_1.LoggerService.cyan(exemptAssignees.length)} assignee${exemptAssignees.length === 1 ? '' : 's'} can skip the stale process for this $$type`); - return exemptAssignees; - } - _hasAssignee(assignee) { - const cleanAssignee = Assignees._cleanAssignee(assignee); - return this._issue.assignees.some((issueAssignee) => { - const isSameAssignee = cleanAssignee === Assignees._cleanAssignee(issueAssignee.login); - if (isSameAssignee) { - this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `@${issueAssignee.login} is assigned on this $$type and is an exempt assignee`); - } - return isSameAssignee; - }); - } - _shouldExemptAllAssignees() { - return this._issue.isPullRequest - ? this._shouldExemptAllPullRequestAssignees() - : this._shouldExemptAllIssueAssignees(); - } - _shouldExemptAllIssueAssignees() { - if (this._options.exemptAllIssueAssignees === true) { - this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAllIssueAssignees)} is enabled. Any assignee on this $$type will skip the stale process`); - return true; - } - else if (this._options.exemptAllIssueAssignees === false) { - this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAllIssueAssignees)} is disabled. Only some specific assignees on this $$type will skip the stale process`); - return false; - } - this._logExemptAllAssigneesOption(); - return this._options.exemptAllAssignees; - } - _shouldExemptAllPullRequestAssignees() { - if (this._options.exemptAllPrAssignees === true) { - this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAllPrAssignees)} is enabled. Any assignee on this $$type will skip the stale process`); - return true; - } - else if (this._options.exemptAllPrAssignees === false) { - this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAllPrAssignees)} is disabled. Only some specific assignees on this $$type will skip the stale process`); - return false; - } - this._logExemptAllAssigneesOption(); - return this._options.exemptAllAssignees; - } - _logExemptAllAssigneesOption() { - if (this._options.exemptAllAssignees) { - this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAllAssignees)} is enabled. Any assignee on this $$type will skip the stale process`); - } - else { - this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAllAssignees)} is disabled. Only some specific assignees on this $$type will skip the stale process`); - } - } - _logSkip() { - this._issueLogger.info(logger_service_1.LoggerService.white('└──'), 'Skip the assignees checks'); - } -} -exports.Assignees = Assignees; + +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Assignees = void 0; +const lodash_deburr_1 = __importDefault(__nccwpck_require__(1601)); +const option_1 = __nccwpck_require__(5931); +const words_to_list_1 = __nccwpck_require__(1883); +const issue_logger_1 = __nccwpck_require__(2984); +const logger_service_1 = __nccwpck_require__(1973); +class Assignees { + constructor(options, issue) { + this._options = options; + this._issue = issue; + this._issueLogger = new issue_logger_1.IssueLogger(issue); + } + static _cleanAssignee(assignee) { + return lodash_deburr_1.default(assignee.toLowerCase()); + } + shouldExemptAssignees() { + if (!this._issue.hasAssignees) { + this._issueLogger.info('This $$type has no assignee'); + this._logSkip(); + return false; + } + if (this._shouldExemptAllAssignees()) { + this._issueLogger.info(logger_service_1.LoggerService.white('└──'), 'Skipping this $$type because it has an exempt assignee'); + return true; + } + const exemptAssignees = this._getExemptAssignees(); + if (exemptAssignees.length === 0) { + this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `No assignee option was specified to skip the stale process for this $$type`); + this._logSkip(); + return false; + } + this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `Found ${logger_service_1.LoggerService.cyan(exemptAssignees.length)} assignee${exemptAssignees.length > 1 ? 's' : ''} that can exempt stale on this $$type`); + const hasExemptAssignee = exemptAssignees.some((exemptAssignee) => this._hasAssignee(exemptAssignee)); + if (!hasExemptAssignee) { + this._issueLogger.info(logger_service_1.LoggerService.white('├──'), 'No assignee on this $$type can exempt the stale process'); + this._logSkip(); + } + else { + this._issueLogger.info(logger_service_1.LoggerService.white('└──'), 'Skipping this $$type because it has an exempt assignee'); + } + return hasExemptAssignee; + } + _getExemptAssignees() { + return this._issue.isPullRequest + ? this._getExemptPullRequestAssignees() + : this._getExemptIssueAssignees(); + } + _getExemptIssueAssignees() { + if (this._options.exemptIssueAssignees === '') { + this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptIssueAssignees)} is disabled. No specific assignee can skip the stale process for this $$type`); + if (this._options.exemptAssignees === '') { + this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAssignees)} is disabled. No specific assignee can skip the stale process for this $$type`); + return []; + } + const exemptAssignees = words_to_list_1.wordsToList(this._options.exemptAssignees); + this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAssignees)} is set. ${logger_service_1.LoggerService.cyan(exemptAssignees.length)} assignee${exemptAssignees.length === 1 ? '' : 's'} can skip the stale process for this $$type`); + return exemptAssignees; + } + const exemptAssignees = words_to_list_1.wordsToList(this._options.exemptIssueAssignees); + this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptIssueAssignees)} is set. ${logger_service_1.LoggerService.cyan(exemptAssignees.length)} assignee${exemptAssignees.length === 1 ? '' : 's'} can skip the stale process for this $$type`); + return exemptAssignees; + } + _getExemptPullRequestAssignees() { + if (this._options.exemptPrAssignees === '') { + this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptPrAssignees)} is disabled. No specific assignee can skip the stale process for this $$type`); + if (this._options.exemptAssignees === '') { + this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAssignees)} is disabled. No specific assignee can skip the stale process for this $$type`); + return []; + } + const exemptAssignees = words_to_list_1.wordsToList(this._options.exemptAssignees); + this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAssignees)} is set. ${logger_service_1.LoggerService.cyan(exemptAssignees.length)} assignee${exemptAssignees.length === 1 ? '' : 's'} can skip the stale process for this $$type`); + return exemptAssignees; + } + const exemptAssignees = words_to_list_1.wordsToList(this._options.exemptPrAssignees); + this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptPrAssignees)} is set. ${logger_service_1.LoggerService.cyan(exemptAssignees.length)} assignee${exemptAssignees.length === 1 ? '' : 's'} can skip the stale process for this $$type`); + return exemptAssignees; + } + _hasAssignee(assignee) { + const cleanAssignee = Assignees._cleanAssignee(assignee); + return this._issue.assignees.some((issueAssignee) => { + const isSameAssignee = cleanAssignee === Assignees._cleanAssignee(issueAssignee.login); + if (isSameAssignee) { + this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `@${issueAssignee.login} is assigned on this $$type and is an exempt assignee`); + } + return isSameAssignee; + }); + } + _shouldExemptAllAssignees() { + return this._issue.isPullRequest + ? this._shouldExemptAllPullRequestAssignees() + : this._shouldExemptAllIssueAssignees(); + } + _shouldExemptAllIssueAssignees() { + if (this._options.exemptAllIssueAssignees) { + this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAllIssueAssignees)} is enabled. Any assignee on this $$type will skip the stale process`); + return true; + } + this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAllIssueAssignees)} is disabled. Only some specific assignees on this $$type will skip the stale process`); + return false; + } + _shouldExemptAllPullRequestAssignees() { + if (this._options.exemptAllPrAssignees) { + this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAllPrAssignees)} is enabled. Any assignee on this $$type will skip the stale process`); + return true; + } + this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAllPrAssignees)} is disabled. Only some specific assignees on this $$type will skip the stale process`); + return false; + } + _logSkip() { + this._issueLogger.info(logger_service_1.LoggerService.white('└──'), 'Skip the assignees checks'); + } +} +exports.Assignees = Assignees; /***/ }), @@ -147,47 +131,47 @@ exports.Assignees = Assignees; /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; - -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.ExemptDraftPullRequest = void 0; -const option_1 = __nccwpck_require__(5931); -const logger_service_1 = __nccwpck_require__(1973); -const issue_logger_1 = __nccwpck_require__(2984); -class ExemptDraftPullRequest { - constructor(options, issue) { - this._options = options; - this._issue = issue; - this._issueLogger = new issue_logger_1.IssueLogger(issue); - } - shouldExemptDraftPullRequest(pullRequestCallback) { - return __awaiter(this, void 0, void 0, function* () { - if (this._issue.isPullRequest) { - if (this._options.exemptDraftPr) { - this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptDraftPr)} is enabled`); - const pullRequest = yield pullRequestCallback(); - if ((pullRequest === null || pullRequest === void 0 ? void 0 : pullRequest.draft) === true) { - this._issueLogger.info(logger_service_1.LoggerService.white('└──'), `Skip the $$type draft checks`); - return true; - } - else { - this._issueLogger.info(logger_service_1.LoggerService.white('└──'), `Continuing the process for this $$type because it is not a draft`); - } - } - } - return false; - }); - } -} -exports.ExemptDraftPullRequest = ExemptDraftPullRequest; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ExemptDraftPullRequest = void 0; +const option_1 = __nccwpck_require__(5931); +const logger_service_1 = __nccwpck_require__(1973); +const issue_logger_1 = __nccwpck_require__(2984); +class ExemptDraftPullRequest { + constructor(options, issue) { + this._options = options; + this._issue = issue; + this._issueLogger = new issue_logger_1.IssueLogger(issue); + } + shouldExemptDraftPullRequest(pullRequestCallback) { + return __awaiter(this, void 0, void 0, function* () { + if (this._issue.isPullRequest) { + if (this._options.exemptDraftPr) { + this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptDraftPr)} is enabled`); + const pullRequest = yield pullRequestCallback(); + if ((pullRequest === null || pullRequest === void 0 ? void 0 : pullRequest.draft) === true) { + this._issueLogger.info(logger_service_1.LoggerService.white('└──'), `Skip the $$type draft checks`); + return true; + } + else { + this._issueLogger.info(logger_service_1.LoggerService.white('└──'), `Continuing the process for this $$type because it is not a draft`); + } + } + } + return false; + }); + } +} +exports.ExemptDraftPullRequest = ExemptDraftPullRequest; /***/ }), @@ -196,59 +180,43 @@ exports.ExemptDraftPullRequest = ExemptDraftPullRequest; /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.IgnoreUpdates = void 0; -const option_1 = __nccwpck_require__(5931); -const issue_logger_1 = __nccwpck_require__(2984); -class IgnoreUpdates { - constructor(options, issue) { - this._options = options; - this._issue = issue; - this._issueLogger = new issue_logger_1.IssueLogger(issue); - } - shouldIgnoreUpdates() { - return this._shouldIgnoreUpdates(); - } - _shouldIgnoreUpdates() { - return this._issue.isPullRequest - ? this._shouldIgnorePullRequestUpdates() - : this._shouldIgnoreIssueUpdates(); - } - _shouldIgnorePullRequestUpdates() { - if (this._options.ignorePrUpdates === true) { - this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.IgnorePrUpdates)} is enabled. The stale counter will ignore any updates or comments on this $$type and will use the creation date as a reference ignoring any kind of update`); - return true; - } - else if (this._options.ignorePrUpdates === false) { - this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.IgnorePrUpdates)} is disabled. The stale counter will take into account updates and comments on this $$type to avoid to stale when there is some update`); - return false; - } - this._logIgnoreUpdates(); - return this._options.ignoreUpdates; - } - _shouldIgnoreIssueUpdates() { - if (this._options.ignoreIssueUpdates === true) { - this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.IgnoreIssueUpdates)} is enabled. The stale counter will ignore any updates or comments on this $$type and will use the creation date as a reference ignoring any kind of update`); - return true; - } - else if (this._options.ignoreIssueUpdates === false) { - this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.IgnoreIssueUpdates)} is disabled. The stale counter will take into account updates and comments on this $$type to avoid to stale when there is some update`); - return false; - } - this._logIgnoreUpdates(); - return this._options.ignoreUpdates; - } - _logIgnoreUpdates() { - if (this._options.ignoreUpdates) { - this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.IgnoreUpdates)} is enabled. The stale counter will ignore any updates or comments on this $$type and will use the creation date as a reference ignoring any kind of update`); - } - else { - this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.IgnoreUpdates)} is disabled. The stale counter will take into account updates and comments on this $$type to avoid to stale when there is some update`); - } - } -} -exports.IgnoreUpdates = IgnoreUpdates; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.IgnoreUpdates = void 0; +const option_1 = __nccwpck_require__(5931); +const issue_logger_1 = __nccwpck_require__(2984); +class IgnoreUpdates { + constructor(options, issue) { + this._options = options; + this._issue = issue; + this._issueLogger = new issue_logger_1.IssueLogger(issue); + } + shouldIgnoreUpdates() { + return this._shouldIgnoreUpdates(); + } + _shouldIgnoreUpdates() { + return this._issue.isPullRequest + ? this._shouldIgnorePullRequestUpdates() + : this._shouldIgnoreIssueUpdates(); + } + _shouldIgnorePullRequestUpdates() { + if (this._options.ignorePrUpdates) { + this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.IgnorePrUpdates)} is enabled. The stale counter will ignore any updates or comments on this $$type and will use the creation date as a reference ignoring any kind of update`); + return true; + } + this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.IgnorePrUpdates)} is disabled. The stale counter will take into account updates and comments on this $$type to avoid to stale when there is some update`); + return false; + } + _shouldIgnoreIssueUpdates() { + if (this._options.ignoreIssueUpdates) { + this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.IgnoreIssueUpdates)} is enabled. The stale counter will ignore any updates or comments on this $$type and will use the creation date as a reference ignoring any kind of update`); + return true; + } + this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.IgnoreIssueUpdates)} is disabled. The stale counter will take into account updates and comments on this $$type to avoid to stale when there is some update`); + return false; + } +} +exports.IgnoreUpdates = IgnoreUpdates; /***/ }), @@ -257,44 +225,44 @@ exports.IgnoreUpdates = IgnoreUpdates; /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.Issue = void 0; -const is_labeled_1 = __nccwpck_require__(6792); -const is_pull_request_1 = __nccwpck_require__(5400); -const operations_1 = __nccwpck_require__(7957); -class Issue { - constructor(options, issue) { - this.operations = new operations_1.Operations(); - this._options = options; - this.title = issue.title; - this.number = issue.number; - this.created_at = issue.created_at; - this.updated_at = issue.updated_at; - this.labels = issue.labels; - this.pull_request = issue.pull_request; - this.state = issue.state; - this.locked = issue.locked; - this.milestone = issue.milestone; - this.assignees = issue.assignees; - this.isStale = is_labeled_1.isLabeled(this, this.staleLabel); - } - get isPullRequest() { - return is_pull_request_1.isPullRequest(this); - } - get staleLabel() { - return this._getStaleLabel(); - } - get hasAssignees() { - return this.assignees.length > 0; - } - _getStaleLabel() { - return this.isPullRequest - ? this._options.stalePrLabel - : this._options.staleIssueLabel; - } -} -exports.Issue = Issue; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Issue = void 0; +const is_labeled_1 = __nccwpck_require__(6792); +const is_pull_request_1 = __nccwpck_require__(5400); +const operations_1 = __nccwpck_require__(7957); +class Issue { + constructor(options, issue) { + this.operations = new operations_1.Operations(); + this._options = options; + this.title = issue.title; + this.number = issue.number; + this.created_at = issue.created_at; + this.updated_at = issue.updated_at; + this.labels = issue.labels; + this.pull_request = issue.pull_request; + this.state = issue.state; + this.locked = issue.locked; + this.milestone = issue.milestone; + this.assignees = issue.assignees; + this.isStale = is_labeled_1.isLabeled(this, this.staleLabel); + } + get isPullRequest() { + return is_pull_request_1.isPullRequest(this); + } + get staleLabel() { + return this._getStaleLabel(); + } + get hasAssignees() { + return this.assignees.length > 0; + } + _getStaleLabel() { + return this.isPullRequest + ? this._options.stalePrLabel + : this._options.staleIssueLabel; + } +} +exports.Issue = Issue; /***/ }), @@ -303,796 +271,796 @@ exports.Issue = Issue; /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.IssuesProcessor = void 0; -const core = __importStar(__nccwpck_require__(2186)); -const github_1 = __nccwpck_require__(5438); -const option_1 = __nccwpck_require__(5931); -const get_humanized_date_1 = __nccwpck_require__(965); -const is_date_more_recent_than_1 = __nccwpck_require__(1473); -const is_valid_date_1 = __nccwpck_require__(891); -const is_boolean_1 = __nccwpck_require__(8236); -const is_labeled_1 = __nccwpck_require__(6792); -const clean_label_1 = __nccwpck_require__(7752); -const should_mark_when_stale_1 = __nccwpck_require__(2461); -const words_to_list_1 = __nccwpck_require__(1883); -const assignees_1 = __nccwpck_require__(7236); -const ignore_updates_1 = __nccwpck_require__(2935); -const exempt_draft_pull_request_1 = __nccwpck_require__(854); -const issue_1 = __nccwpck_require__(4783); -const issue_logger_1 = __nccwpck_require__(2984); -const logger_1 = __nccwpck_require__(6212); -const milestones_1 = __nccwpck_require__(4601); -const stale_operations_1 = __nccwpck_require__(5080); -const statistics_1 = __nccwpck_require__(3334); -const logger_service_1 = __nccwpck_require__(1973); -/*** - * Handle processing of issues for staleness/closure. - */ -class IssuesProcessor { - constructor(options) { - this.staleIssues = []; - this.closedIssues = []; - this.deletedBranchIssues = []; - this.removedLabelIssues = []; - this.addedLabelIssues = []; - this.addedCloseCommentIssues = []; - this._logger = new logger_1.Logger(); - this.options = options; - this.client = github_1.getOctokit(this.options.repoToken); - this.operations = new stale_operations_1.StaleOperations(this.options); - this._logger.info(logger_service_1.LoggerService.yellow(`Starting the stale action process...`)); - if (this.options.debugOnly) { - this._logger.warning(logger_service_1.LoggerService.yellowBright(`Executing in debug mode!`)); - this._logger.warning(logger_service_1.LoggerService.yellowBright(`The debug output will be written but no issues/PRs will be processed.`)); - } - if (this.options.enableStatistics) { - this.statistics = new statistics_1.Statistics(); - } - } - static _updatedSince(timestamp, num_days) { - const daysInMillis = 1000 * 60 * 60 * 24 * num_days; - const millisSinceLastUpdated = new Date().getTime() - new Date(timestamp).getTime(); - return millisSinceLastUpdated <= daysInMillis; - } - static _endIssueProcessing(issue) { - const consumedOperationsCount = issue.operations.getConsumedOperationsCount(); - if (consumedOperationsCount > 0) { - const issueLogger = new issue_logger_1.IssueLogger(issue); - issueLogger.info(logger_service_1.LoggerService.cyan(consumedOperationsCount), `operation${consumedOperationsCount > 1 ? 's' : ''} consumed for this $$type`); - } - } - static _getCloseLabelUsedOptionName(issue) { - return issue.isPullRequest ? option_1.Option.ClosePrLabel : option_1.Option.CloseIssueLabel; - } - processIssues(page = 1) { - var _a, _b; - return __awaiter(this, void 0, void 0, function* () { - // get the next batch of issues - const issues = yield this.getIssues(page); - if (issues.length <= 0) { - this._logger.info(logger_service_1.LoggerService.green(`No more issues found to process. Exiting...`)); - (_a = this.statistics) === null || _a === void 0 ? void 0 : _a.setOperationsCount(this.operations.getConsumedOperationsCount()).logStats(); - return this.operations.getRemainingOperationsCount(); - } - else { - this._logger.info(`${logger_service_1.LoggerService.yellow('Processing the batch of issues')} ${logger_service_1.LoggerService.cyan(`#${page}`)} ${logger_service_1.LoggerService.yellow('containing')} ${logger_service_1.LoggerService.cyan(issues.length)} ${logger_service_1.LoggerService.yellow(`issue${issues.length > 1 ? 's' : ''}...`)}`); - } - const labelsToAddWhenUnstale = words_to_list_1.wordsToList(this.options.labelsToAddWhenUnstale); - const labelsToRemoveWhenUnstale = words_to_list_1.wordsToList(this.options.labelsToRemoveWhenUnstale); - for (const issue of issues.values()) { - // Stop the processing if no more operations remains - if (!this.operations.hasRemainingOperations()) { - break; - } - const issueLogger = new issue_logger_1.IssueLogger(issue); - yield issueLogger.grouping(`$$type #${issue.number}`, () => __awaiter(this, void 0, void 0, function* () { - yield this.processIssue(issue, labelsToAddWhenUnstale, labelsToRemoveWhenUnstale); - })); - } - if (!this.operations.hasRemainingOperations()) { - this._logger.warning(logger_service_1.LoggerService.yellowBright(`No more operations left! Exiting...`)); - this._logger.warning(`${logger_service_1.LoggerService.yellowBright('If you think that not enough issues were processed you could try to increase the quantity related to the')} ${this._logger.createOptionLink(option_1.Option.OperationsPerRun)} ${logger_service_1.LoggerService.yellowBright('option which is currently set to')} ${logger_service_1.LoggerService.cyan(this.options.operationsPerRun)}`); - (_b = this.statistics) === null || _b === void 0 ? void 0 : _b.setOperationsCount(this.operations.getConsumedOperationsCount()).logStats(); - return 0; - } - this._logger.info(`${logger_service_1.LoggerService.green('Batch')} ${logger_service_1.LoggerService.cyan(`#${page}`)} ${logger_service_1.LoggerService.green('processed.')}`); - // Do the next batch - return this.processIssues(page + 1); - }); - } - processIssue(issue, labelsToAddWhenUnstale, labelsToRemoveWhenUnstale) { - var _a; - return __awaiter(this, void 0, void 0, function* () { - (_a = this.statistics) === null || _a === void 0 ? void 0 : _a.incrementProcessedItemsCount(issue); - const issueLogger = new issue_logger_1.IssueLogger(issue); - issueLogger.info(`Found this $$type last updated at: ${logger_service_1.LoggerService.cyan(issue.updated_at)}`); - // calculate string based messages for this issue - const staleMessage = issue.isPullRequest - ? this.options.stalePrMessage - : this.options.staleIssueMessage; - const closeMessage = issue.isPullRequest - ? this.options.closePrMessage - : this.options.closeIssueMessage; - const staleLabel = issue.isPullRequest - ? this.options.stalePrLabel - : this.options.staleIssueLabel; - const closeLabel = issue.isPullRequest - ? this.options.closePrLabel - : this.options.closeIssueLabel; - const skipMessage = issue.isPullRequest - ? this.options.stalePrMessage.length === 0 - : this.options.staleIssueMessage.length === 0; - const daysBeforeStale = issue.isPullRequest - ? this._getDaysBeforePrStale() - : this._getDaysBeforeIssueStale(); - if (issue.state === 'closed') { - issueLogger.info(`Skipping this $$type because it is closed`); - IssuesProcessor._endIssueProcessing(issue); - return; // Don't process closed issues - } - if (issue.locked) { - issueLogger.info(`Skipping this $$type because it is locked`); - IssuesProcessor._endIssueProcessing(issue); - return; // Don't process locked issues - } - const onlyLabels = words_to_list_1.wordsToList(this._getOnlyLabels(issue)); - if (onlyLabels.length > 0) { - issueLogger.info(`The option ${issueLogger.createOptionLink(option_1.Option.OnlyLabels)} was specified to only process issues and pull requests with all those labels (${logger_service_1.LoggerService.cyan(onlyLabels.length)})`); - const hasAllWhitelistedLabels = onlyLabels.every((label) => { - return is_labeled_1.isLabeled(issue, label); - }); - if (!hasAllWhitelistedLabels) { - issueLogger.info(logger_service_1.LoggerService.white('└──'), `Skipping this $$type because it doesn't have all the required labels`); - IssuesProcessor._endIssueProcessing(issue); - return; // Don't process issues without all of the required labels - } - else { - issueLogger.info(logger_service_1.LoggerService.white('├──'), `All the required labels are present on this $$type`); - issueLogger.info(logger_service_1.LoggerService.white('└──'), `Continuing the process for this $$type`); - } - } - else { - issueLogger.info(`The option ${issueLogger.createOptionLink(option_1.Option.OnlyLabels)} was not specified`); - issueLogger.info(logger_service_1.LoggerService.white('└──'), `Continuing the process for this $$type`); - } - issueLogger.info(`Days before $$type stale: ${logger_service_1.LoggerService.cyan(daysBeforeStale)}`); - const shouldMarkAsStale = should_mark_when_stale_1.shouldMarkWhenStale(daysBeforeStale); - // Try to remove the close label when not close/locked issue or PR - yield this._removeCloseLabel(issue, closeLabel); - if (this.options.startDate) { - const startDate = new Date(this.options.startDate); - const createdAt = new Date(issue.created_at); - issueLogger.info(`A start date was specified for the ${get_humanized_date_1.getHumanizedDate(startDate)} (${logger_service_1.LoggerService.cyan(this.options.startDate)})`); - // Expecting that GitHub will always set a creation date on the issues and PRs - // But you never know! - if (!is_valid_date_1.isValidDate(createdAt)) { - IssuesProcessor._endIssueProcessing(issue); - core.setFailed(new Error(`Invalid issue field: "created_at". Expected a valid date`)); - } - issueLogger.info(`$$type created the ${get_humanized_date_1.getHumanizedDate(createdAt)} (${logger_service_1.LoggerService.cyan(issue.created_at)})`); - if (!is_date_more_recent_than_1.isDateMoreRecentThan(createdAt, startDate)) { - issueLogger.info(`Skipping this $$type because it was created before the specified start date`); - IssuesProcessor._endIssueProcessing(issue); - return; // Don't process issues which were created before the start date - } - } - if (issue.isStale) { - issueLogger.info(`This $$type has a stale label`); - } - else { - issueLogger.info(`This $$type hasn't a stale label`); - } - const exemptLabels = words_to_list_1.wordsToList(issue.isPullRequest - ? this.options.exemptPrLabels - : this.options.exemptIssueLabels); - if (exemptLabels.some((exemptLabel) => is_labeled_1.isLabeled(issue, exemptLabel))) { - if (issue.isStale) { - issueLogger.info(`An exempt label was added after the stale label.`); - yield this._removeStaleLabel(issue, staleLabel); - } - issueLogger.info(`Skipping this $$type because it has an exempt label`); - IssuesProcessor._endIssueProcessing(issue); - return; // Don't process exempt issues - } - const anyOfLabels = words_to_list_1.wordsToList(this._getAnyOfLabels(issue)); - if (anyOfLabels.length > 0) { - issueLogger.info(`The option ${issueLogger.createOptionLink(option_1.Option.AnyOfLabels)} was specified to only process the issues and pull requests with one of those labels (${logger_service_1.LoggerService.cyan(anyOfLabels.length)})`); - const hasOneOfWhitelistedLabels = anyOfLabels.some((label) => { - return is_labeled_1.isLabeled(issue, label); - }); - if (!hasOneOfWhitelistedLabels) { - issueLogger.info(logger_service_1.LoggerService.white('└──'), `Skipping this $$type because it doesn't have one of the required labels`); - IssuesProcessor._endIssueProcessing(issue); - return; // Don't process issues without any of the required labels - } - else { - issueLogger.info(logger_service_1.LoggerService.white('├──'), `One of the required labels is present on this $$type`); - issueLogger.info(logger_service_1.LoggerService.white('└──'), `Continuing the process for this $$type`); - } - } - else { - issueLogger.info(`The option ${issueLogger.createOptionLink(option_1.Option.AnyOfLabels)} was not specified`); - issueLogger.info(logger_service_1.LoggerService.white('└──'), `Continuing the process for this $$type`); - } - const milestones = new milestones_1.Milestones(this.options, issue); - if (milestones.shouldExemptMilestones()) { - IssuesProcessor._endIssueProcessing(issue); - return; // Don't process exempt milestones - } - const assignees = new assignees_1.Assignees(this.options, issue); - if (assignees.shouldExemptAssignees()) { - IssuesProcessor._endIssueProcessing(issue); - return; // Don't process exempt assignees - } - // Ignore draft PR - // Note that this check is so far below because it cost one read operation - // So it's simply better to do all the stale checks which don't cost more operation before this one - const exemptDraftPullRequest = new exempt_draft_pull_request_1.ExemptDraftPullRequest(this.options, issue); - if (yield exemptDraftPullRequest.shouldExemptDraftPullRequest(() => __awaiter(this, void 0, void 0, function* () { - return this.getPullRequest(issue); - }))) { - IssuesProcessor._endIssueProcessing(issue); - return; // Don't process draft PR - } - // Determine if this issue needs to be marked stale first - if (!issue.isStale) { - issueLogger.info(`This $$type is not stale`); - const shouldIgnoreUpdates = new ignore_updates_1.IgnoreUpdates(this.options, issue).shouldIgnoreUpdates(); - // Should this issue be marked as stale? - let shouldBeStale; - // Ignore the last update and only use the creation date - if (shouldIgnoreUpdates) { - shouldBeStale = !IssuesProcessor._updatedSince(issue.created_at, daysBeforeStale); - } - // Use the last update to check if we need to stale - else { - shouldBeStale = !IssuesProcessor._updatedSince(issue.updated_at, daysBeforeStale); - } - if (shouldBeStale) { - if (shouldIgnoreUpdates) { - issueLogger.info(`This $$type should be stale based on the creation date the ${get_humanized_date_1.getHumanizedDate(new Date(issue.created_at))} (${logger_service_1.LoggerService.cyan(issue.created_at)})`); - } - else { - issueLogger.info(`This $$type should be stale based on the last update date the ${get_humanized_date_1.getHumanizedDate(new Date(issue.updated_at))} (${logger_service_1.LoggerService.cyan(issue.updated_at)})`); - } - if (shouldMarkAsStale) { - issueLogger.info(`This $$type should be marked as stale based on the option ${issueLogger.createOptionLink(this._getDaysBeforeStaleUsedOptionName(issue))} (${logger_service_1.LoggerService.cyan(daysBeforeStale)})`); - yield this._markStale(issue, staleMessage, staleLabel, skipMessage); - issue.isStale = true; // This issue is now considered stale - issueLogger.info(`This $$type is now stale`); - } - else { - issueLogger.info(`This $$type should not be marked as stale based on the option ${issueLogger.createOptionLink(this._getDaysBeforeStaleUsedOptionName(issue))} (${logger_service_1.LoggerService.cyan(daysBeforeStale)})`); - } - } - else { - if (shouldIgnoreUpdates) { - issueLogger.info(`This $$type should not be stale based on the creation date the ${get_humanized_date_1.getHumanizedDate(new Date(issue.created_at))} (${logger_service_1.LoggerService.cyan(issue.created_at)})`); - } - else { - issueLogger.info(`This $$type should not be stale based on the last update date the ${get_humanized_date_1.getHumanizedDate(new Date(issue.updated_at))} (${logger_service_1.LoggerService.cyan(issue.updated_at)})`); - } - } - } - // Process the issue if it was marked stale - if (issue.isStale) { - issueLogger.info(`This $$type is already stale`); - yield this._processStaleIssue(issue, staleLabel, staleMessage, labelsToAddWhenUnstale, labelsToRemoveWhenUnstale, closeMessage, closeLabel); - } - IssuesProcessor._endIssueProcessing(issue); - }); - } - // Grab comments for an issue since a given date - listIssueComments(issueNumber, sinceDate) { - var _a; - return __awaiter(this, void 0, void 0, function* () { - // Find any comments since date on the given issue - try { - this.operations.consumeOperation(); - (_a = this.statistics) === null || _a === void 0 ? void 0 : _a.incrementFetchedItemsCommentsCount(); - const comments = yield this.client.issues.listComments({ - owner: github_1.context.repo.owner, - repo: github_1.context.repo.repo, - issue_number: issueNumber, - since: sinceDate - }); - return comments.data; - } - catch (error) { - this._logger.error(`List issue comments error: ${error.message}`); - return Promise.resolve([]); - } - }); - } - // grab issues from github in batches of 100 - getIssues(page) { - var _a; - return __awaiter(this, void 0, void 0, function* () { - // generate type for response - const endpoint = this.client.issues.listForRepo; - try { - this.operations.consumeOperation(); - const issueResult = yield this.client.issues.listForRepo({ - owner: github_1.context.repo.owner, - repo: github_1.context.repo.repo, - state: 'open', - per_page: 100, - direction: this.options.ascending ? 'asc' : 'desc', - page - }); - (_a = this.statistics) === null || _a === void 0 ? void 0 : _a.incrementFetchedItemsCount(issueResult.data.length); - return issueResult.data.map((issue) => new issue_1.Issue(this.options, issue)); - } - catch (error) { - this._logger.error(`Get issues for repo error: ${error.message}`); - return Promise.resolve([]); - } - }); - } - // returns the creation date of a given label on an issue (or nothing if no label existed) - ///see https://developer.github.com/v3/activity/events/ - getLabelCreationDate(issue, label) { - var _a; - return __awaiter(this, void 0, void 0, function* () { - const issueLogger = new issue_logger_1.IssueLogger(issue); - issueLogger.info(`Checking for label on this $$type`); - this._consumeIssueOperation(issue); - (_a = this.statistics) === null || _a === void 0 ? void 0 : _a.incrementFetchedItemsEventsCount(); - const options = this.client.issues.listEvents.endpoint.merge({ - owner: github_1.context.repo.owner, - repo: github_1.context.repo.repo, - per_page: 100, - issue_number: issue.number - }); - const events = yield this.client.paginate(options); - const reversedEvents = events.reverse(); - const staleLabeledEvent = reversedEvents.find(event => event.event === 'labeled' && - clean_label_1.cleanLabel(event.label.name) === clean_label_1.cleanLabel(label)); - if (!staleLabeledEvent) { - // Must be old rather than labeled - return undefined; - } - return staleLabeledEvent.created_at; - }); - } - getPullRequest(issue) { - var _a; - return __awaiter(this, void 0, void 0, function* () { - const issueLogger = new issue_logger_1.IssueLogger(issue); - try { - this._consumeIssueOperation(issue); - (_a = this.statistics) === null || _a === void 0 ? void 0 : _a.incrementFetchedPullRequestsCount(); - const pullRequest = yield this.client.pulls.get({ - owner: github_1.context.repo.owner, - repo: github_1.context.repo.repo, - pull_number: issue.number - }); - return pullRequest.data; - } - catch (error) { - issueLogger.error(`Error when getting this $$type: ${error.message}`); - } - }); - } - // handle all of the stale issue logic when we find a stale issue - _processStaleIssue(issue, staleLabel, staleMessage, labelsToAddWhenUnstale, labelsToRemoveWhenUnstale, closeMessage, closeLabel) { - return __awaiter(this, void 0, void 0, function* () { - const issueLogger = new issue_logger_1.IssueLogger(issue); - const markedStaleOn = (yield this.getLabelCreationDate(issue, staleLabel)) || issue.updated_at; - issueLogger.info(`$$type marked stale on: ${logger_service_1.LoggerService.cyan(markedStaleOn)}`); - const issueHasComments = yield this._hasCommentsSince(issue, markedStaleOn, staleMessage); - issueLogger.info(`$$type has been commented on: ${logger_service_1.LoggerService.cyan(issueHasComments)}`); - const daysBeforeClose = issue.isPullRequest - ? this._getDaysBeforePrClose() - : this._getDaysBeforeIssueClose(); - issueLogger.info(`Days before $$type close: ${logger_service_1.LoggerService.cyan(daysBeforeClose)}`); - const issueHasUpdate = IssuesProcessor._updatedSince(issue.updated_at, daysBeforeClose); - issueLogger.info(`$$type has been updated: ${logger_service_1.LoggerService.cyan(issueHasUpdate)}`); - const shouldRemoveStaleWhenUpdated = this._shouldRemoveStaleWhenUpdated(issue); - issueLogger.info(`The option ${issueLogger.createOptionLink(this._getRemoveStaleWhenUpdatedUsedOptionName(issue))} is: ${logger_service_1.LoggerService.cyan(shouldRemoveStaleWhenUpdated)}`); - if (shouldRemoveStaleWhenUpdated) { - issueLogger.info(`The stale label should not be removed`); - } - else { - issueLogger.info(`The stale label should be removed if all conditions met`); - } - // Should we un-stale this issue? - if (shouldRemoveStaleWhenUpdated && issueHasComments) { - issueLogger.info(`Remove the stale label since the $$type has a comment and the workflow should remove the stale label when updated`); - yield this._removeStaleLabel(issue, staleLabel); - // Are there labels to remove or add when an issue is no longer stale? - yield this._removeLabelsWhenUnstale(issue, labelsToRemoveWhenUnstale); - yield this._addLabelsWhenUnstale(issue, labelsToAddWhenUnstale); - issueLogger.info(`Skipping the process since the $$type is now un-stale`); - return; // Nothing to do because it is no longer stale - } - // Now start closing logic - if (daysBeforeClose < 0) { - return; // Nothing to do because we aren't closing stale issues - } - if (!issueHasComments && !issueHasUpdate) { - issueLogger.info(`Closing $$type because it was last updated on: ${logger_service_1.LoggerService.cyan(issue.updated_at)}`); - yield this._closeIssue(issue, closeMessage, closeLabel); - if (this.options.deleteBranch && issue.pull_request) { - issueLogger.info(`Deleting the branch since the option ${issueLogger.createOptionLink(option_1.Option.DeleteBranch)} is enabled`); - yield this._deleteBranch(issue); - this.deletedBranchIssues.push(issue); - } - } - else { - issueLogger.info(`Stale $$type is not old enough to close yet (hasComments? ${issueHasComments}, hasUpdate? ${issueHasUpdate})`); - } - }); - } - // checks to see if a given issue is still stale (has had activity on it) - _hasCommentsSince(issue, sinceDate, staleMessage) { - return __awaiter(this, void 0, void 0, function* () { - const issueLogger = new issue_logger_1.IssueLogger(issue); - issueLogger.info(`Checking for comments on $$type since: ${logger_service_1.LoggerService.cyan(sinceDate)}`); - if (!sinceDate) { - return true; - } - // find any comments since the date - const comments = yield this.listIssueComments(issue.number, sinceDate); - const filteredComments = comments.filter(comment => comment.user.type === 'User' && - comment.body.toLowerCase() !== staleMessage.toLowerCase()); - issueLogger.info(`Comments that are not the stale comment or another bot: ${logger_service_1.LoggerService.cyan(filteredComments.length)}`); - // if there are any user comments returned - return filteredComments.length > 0; - }); - } - // Mark an issue as stale with a comment and a label - _markStale(issue, staleMessage, staleLabel, skipMessage) { - var _a, _b, _c; - return __awaiter(this, void 0, void 0, function* () { - const issueLogger = new issue_logger_1.IssueLogger(issue); - issueLogger.info(`Marking this $$type as stale`); - this.staleIssues.push(issue); - // if the issue is being marked stale, the updated date should be changed to right now - // so that close calculations work correctly - const newUpdatedAtDate = new Date(); - issue.updated_at = newUpdatedAtDate.toString(); - if (!skipMessage) { - try { - this._consumeIssueOperation(issue); - (_a = this.statistics) === null || _a === void 0 ? void 0 : _a.incrementAddedItemsComment(issue); - if (!this.options.debugOnly) { - yield this.client.issues.createComment({ - owner: github_1.context.repo.owner, - repo: github_1.context.repo.repo, - issue_number: issue.number, - body: staleMessage - }); - } - } - catch (error) { - issueLogger.error(`Error when creating a comment: ${error.message}`); - } - } - try { - this._consumeIssueOperation(issue); - (_b = this.statistics) === null || _b === void 0 ? void 0 : _b.incrementAddedItemsLabel(issue); - (_c = this.statistics) === null || _c === void 0 ? void 0 : _c.incrementStaleItemsCount(issue); - if (!this.options.debugOnly) { - yield this.client.issues.addLabels({ - owner: github_1.context.repo.owner, - repo: github_1.context.repo.repo, - issue_number: issue.number, - labels: [staleLabel] - }); - } - } - catch (error) { - issueLogger.error(`Error when adding a label: ${error.message}`); - } - }); - } - // Close an issue based on staleness - _closeIssue(issue, closeMessage, closeLabel) { - var _a, _b, _c; - return __awaiter(this, void 0, void 0, function* () { - const issueLogger = new issue_logger_1.IssueLogger(issue); - issueLogger.info(`Closing $$type for being stale`); - this.closedIssues.push(issue); - if (closeMessage) { - try { - this._consumeIssueOperation(issue); - (_a = this.statistics) === null || _a === void 0 ? void 0 : _a.incrementAddedItemsComment(issue); - this.addedCloseCommentIssues.push(issue); - if (!this.options.debugOnly) { - yield this.client.issues.createComment({ - owner: github_1.context.repo.owner, - repo: github_1.context.repo.repo, - issue_number: issue.number, - body: closeMessage - }); - } - } - catch (error) { - issueLogger.error(`Error when creating a comment: ${error.message}`); - } - } - if (closeLabel) { - try { - this._consumeIssueOperation(issue); - (_b = this.statistics) === null || _b === void 0 ? void 0 : _b.incrementAddedItemsLabel(issue); - if (!this.options.debugOnly) { - yield this.client.issues.addLabels({ - owner: github_1.context.repo.owner, - repo: github_1.context.repo.repo, - issue_number: issue.number, - labels: [closeLabel] - }); - } - } - catch (error) { - issueLogger.error(`Error when adding a label: ${error.message}`); - } - } - try { - this._consumeIssueOperation(issue); - (_c = this.statistics) === null || _c === void 0 ? void 0 : _c.incrementClosedItemsCount(issue); - if (!this.options.debugOnly) { - yield this.client.issues.update({ - owner: github_1.context.repo.owner, - repo: github_1.context.repo.repo, - issue_number: issue.number, - state: 'closed' - }); - } - } - catch (error) { - issueLogger.error(`Error when updating this $$type: ${error.message}`); - } - }); - } - // Delete the branch on closed pull request - _deleteBranch(issue) { - var _a; - return __awaiter(this, void 0, void 0, function* () { - const issueLogger = new issue_logger_1.IssueLogger(issue); + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.IssuesProcessor = void 0; +const core = __importStar(__nccwpck_require__(2186)); +const github_1 = __nccwpck_require__(5438); +const option_1 = __nccwpck_require__(5931); +const get_humanized_date_1 = __nccwpck_require__(965); +const is_date_more_recent_than_1 = __nccwpck_require__(1473); +const is_valid_date_1 = __nccwpck_require__(891); +const is_boolean_1 = __nccwpck_require__(8236); +const is_labeled_1 = __nccwpck_require__(6792); +const clean_label_1 = __nccwpck_require__(7752); +const should_mark_when_stale_1 = __nccwpck_require__(2461); +const words_to_list_1 = __nccwpck_require__(1883); +const assignees_1 = __nccwpck_require__(7236); +const ignore_updates_1 = __nccwpck_require__(2935); +const exempt_draft_pull_request_1 = __nccwpck_require__(854); +const issue_1 = __nccwpck_require__(4783); +const issue_logger_1 = __nccwpck_require__(2984); +const logger_1 = __nccwpck_require__(6212); +const milestones_1 = __nccwpck_require__(4601); +const stale_operations_1 = __nccwpck_require__(5080); +const statistics_1 = __nccwpck_require__(3334); +const logger_service_1 = __nccwpck_require__(1973); +/*** + * Handle processing of issues for staleness/closure. + */ +class IssuesProcessor { + constructor(options) { + this.staleIssues = []; + this.closedIssues = []; + this.deletedBranchIssues = []; + this.removedLabelIssues = []; + this.addedLabelIssues = []; + this.addedCloseCommentIssues = []; + this._logger = new logger_1.Logger(); + this.options = options; + this.client = github_1.getOctokit(this.options.repoToken); + this.operations = new stale_operations_1.StaleOperations(this.options); + this._logger.info(logger_service_1.LoggerService.yellow(`Starting the stale action process...`)); + if (this.options.debugOnly) { + this._logger.warning(logger_service_1.LoggerService.yellowBright(`Executing in debug mode!`)); + this._logger.warning(logger_service_1.LoggerService.yellowBright(`The debug output will be written but no issues/PRs will be processed.`)); + } + if (this.options.enableStatistics) { + this.statistics = new statistics_1.Statistics(); + } + } + static _updatedSince(timestamp, num_days) { + const daysInMillis = 1000 * 60 * 60 * 24 * num_days; + const millisSinceLastUpdated = new Date().getTime() - new Date(timestamp).getTime(); + return millisSinceLastUpdated <= daysInMillis; + } + static _endIssueProcessing(issue) { + const consumedOperationsCount = issue.operations.getConsumedOperationsCount(); + if (consumedOperationsCount > 0) { + const issueLogger = new issue_logger_1.IssueLogger(issue); + issueLogger.info(logger_service_1.LoggerService.cyan(consumedOperationsCount), `operation${consumedOperationsCount > 1 ? 's' : ''} consumed for this $$type`); + } + } + static _getCloseLabelUsedOptionName(issue) { + return issue.isPullRequest ? option_1.Option.ClosePrLabel : option_1.Option.CloseIssueLabel; + } + processIssues(page = 1) { + var _a, _b; + return __awaiter(this, void 0, void 0, function* () { + // get the next batch of issues + const issues = yield this.getIssues(page); + if (issues.length <= 0) { + this._logger.info(logger_service_1.LoggerService.green(`No more issues found to process. Exiting...`)); + (_a = this.statistics) === null || _a === void 0 ? void 0 : _a.setOperationsCount(this.operations.getConsumedOperationsCount()).logStats(); + return this.operations.getRemainingOperationsCount(); + } + else { + this._logger.info(`${logger_service_1.LoggerService.yellow('Processing the batch of issues')} ${logger_service_1.LoggerService.cyan(`#${page}`)} ${logger_service_1.LoggerService.yellow('containing')} ${logger_service_1.LoggerService.cyan(issues.length)} ${logger_service_1.LoggerService.yellow(`issue${issues.length > 1 ? 's' : ''}...`)}`); + } + const labelsToAddWhenUnstale = words_to_list_1.wordsToList(this.options.labelsToAddWhenUnstale); + const labelsToRemoveWhenUnstale = words_to_list_1.wordsToList(this.options.labelsToRemoveWhenUnstale); + for (const issue of issues.values()) { + // Stop the processing if no more operations remains + if (!this.operations.hasRemainingOperations()) { + break; + } + const issueLogger = new issue_logger_1.IssueLogger(issue); + yield issueLogger.grouping(`$$type #${issue.number}`, () => __awaiter(this, void 0, void 0, function* () { + yield this.processIssue(issue, labelsToAddWhenUnstale, labelsToRemoveWhenUnstale); + })); + } + if (!this.operations.hasRemainingOperations()) { + this._logger.warning(logger_service_1.LoggerService.yellowBright(`No more operations left! Exiting...`)); + this._logger.warning(`${logger_service_1.LoggerService.yellowBright('If you think that not enough issues were processed you could try to increase the quantity related to the')} ${this._logger.createOptionLink(option_1.Option.OperationsPerRun)} ${logger_service_1.LoggerService.yellowBright('option which is currently set to')} ${logger_service_1.LoggerService.cyan(this.options.operationsPerRun)}`); + (_b = this.statistics) === null || _b === void 0 ? void 0 : _b.setOperationsCount(this.operations.getConsumedOperationsCount()).logStats(); + return 0; + } + this._logger.info(`${logger_service_1.LoggerService.green('Batch')} ${logger_service_1.LoggerService.cyan(`#${page}`)} ${logger_service_1.LoggerService.green('processed.')}`); + // Do the next batch + return this.processIssues(page + 1); + }); + } + processIssue(issue, labelsToAddWhenUnstale, labelsToRemoveWhenUnstale) { + var _a; + return __awaiter(this, void 0, void 0, function* () { + (_a = this.statistics) === null || _a === void 0 ? void 0 : _a.incrementProcessedItemsCount(issue); + const issueLogger = new issue_logger_1.IssueLogger(issue); + issueLogger.info(`Found this $$type last updated at: ${logger_service_1.LoggerService.cyan(issue.updated_at)}`); + // calculate string based messages for this issue + const staleMessage = issue.isPullRequest + ? this.options.stalePrMessage + : this.options.staleIssueMessage; + const closeMessage = issue.isPullRequest + ? this.options.closePrMessage + : this.options.closeIssueMessage; + const staleLabel = issue.isPullRequest + ? this.options.stalePrLabel + : this.options.staleIssueLabel; + const closeLabel = issue.isPullRequest + ? this.options.closePrLabel + : this.options.closeIssueLabel; + const skipMessage = issue.isPullRequest + ? this.options.stalePrMessage.length === 0 + : this.options.staleIssueMessage.length === 0; + const daysBeforeStale = issue.isPullRequest + ? this._getDaysBeforePrStale() + : this._getDaysBeforeIssueStale(); + if (issue.state === 'closed') { + issueLogger.info(`Skipping this $$type because it is closed`); + IssuesProcessor._endIssueProcessing(issue); + return; // Don't process closed issues + } + if (issue.locked) { + issueLogger.info(`Skipping this $$type because it is locked`); + IssuesProcessor._endIssueProcessing(issue); + return; // Don't process locked issues + } + const onlyLabels = words_to_list_1.wordsToList(this._getOnlyLabels(issue)); + if (onlyLabels.length > 0) { + issueLogger.info(`The option ${issueLogger.createOptionLink(option_1.Option.OnlyLabels)} was specified to only process issues and pull requests with all those labels (${logger_service_1.LoggerService.cyan(onlyLabels.length)})`); + const hasAllWhitelistedLabels = onlyLabels.every((label) => { + return is_labeled_1.isLabeled(issue, label); + }); + if (!hasAllWhitelistedLabels) { + issueLogger.info(logger_service_1.LoggerService.white('└──'), `Skipping this $$type because it doesn't have all the required labels`); + IssuesProcessor._endIssueProcessing(issue); + return; // Don't process issues without all of the required labels + } + else { + issueLogger.info(logger_service_1.LoggerService.white('├──'), `All the required labels are present on this $$type`); + issueLogger.info(logger_service_1.LoggerService.white('└──'), `Continuing the process for this $$type`); + } + } + else { + issueLogger.info(`The option ${issueLogger.createOptionLink(option_1.Option.OnlyLabels)} was not specified`); + issueLogger.info(logger_service_1.LoggerService.white('└──'), `Continuing the process for this $$type`); + } + issueLogger.info(`Days before $$type stale: ${logger_service_1.LoggerService.cyan(daysBeforeStale)}`); + const shouldMarkAsStale = should_mark_when_stale_1.shouldMarkWhenStale(daysBeforeStale); + // Try to remove the close label when not close/locked issue or PR + yield this._removeCloseLabel(issue, closeLabel); + if (this.options.startDate) { + const startDate = new Date(this.options.startDate); + const createdAt = new Date(issue.created_at); + issueLogger.info(`A start date was specified for the ${get_humanized_date_1.getHumanizedDate(startDate)} (${logger_service_1.LoggerService.cyan(this.options.startDate)})`); + // Expecting that GitHub will always set a creation date on the issues and PRs + // But you never know! + if (!is_valid_date_1.isValidDate(createdAt)) { + IssuesProcessor._endIssueProcessing(issue); + core.setFailed(new Error(`Invalid issue field: "created_at". Expected a valid date`)); + } + issueLogger.info(`$$type created the ${get_humanized_date_1.getHumanizedDate(createdAt)} (${logger_service_1.LoggerService.cyan(issue.created_at)})`); + if (!is_date_more_recent_than_1.isDateMoreRecentThan(createdAt, startDate)) { + issueLogger.info(`Skipping this $$type because it was created before the specified start date`); + IssuesProcessor._endIssueProcessing(issue); + return; // Don't process issues which were created before the start date + } + } + if (issue.isStale) { + issueLogger.info(`This $$type has a stale label`); + } + else { + issueLogger.info(`This $$type hasn't a stale label`); + } + const exemptLabels = words_to_list_1.wordsToList(issue.isPullRequest + ? this.options.exemptPrLabels + : this.options.exemptIssueLabels); + if (exemptLabels.some((exemptLabel) => is_labeled_1.isLabeled(issue, exemptLabel))) { + if (issue.isStale) { + issueLogger.info(`An exempt label was added after the stale label.`); + yield this._removeStaleLabel(issue, staleLabel); + } + issueLogger.info(`Skipping this $$type because it has an exempt label`); + IssuesProcessor._endIssueProcessing(issue); + return; // Don't process exempt issues + } + const anyOfLabels = words_to_list_1.wordsToList(this._getAnyOfLabels(issue)); + if (anyOfLabels.length > 0) { + issueLogger.info(`The option ${issueLogger.createOptionLink(option_1.Option.AnyOfLabels)} was specified to only process the issues and pull requests with one of those labels (${logger_service_1.LoggerService.cyan(anyOfLabels.length)})`); + const hasOneOfWhitelistedLabels = anyOfLabels.some((label) => { + return is_labeled_1.isLabeled(issue, label); + }); + if (!hasOneOfWhitelistedLabels) { + issueLogger.info(logger_service_1.LoggerService.white('└──'), `Skipping this $$type because it doesn't have one of the required labels`); + IssuesProcessor._endIssueProcessing(issue); + return; // Don't process issues without any of the required labels + } + else { + issueLogger.info(logger_service_1.LoggerService.white('├──'), `One of the required labels is present on this $$type`); + issueLogger.info(logger_service_1.LoggerService.white('└──'), `Continuing the process for this $$type`); + } + } + else { + issueLogger.info(`The option ${issueLogger.createOptionLink(option_1.Option.AnyOfLabels)} was not specified`); + issueLogger.info(logger_service_1.LoggerService.white('└──'), `Continuing the process for this $$type`); + } + const milestones = new milestones_1.Milestones(this.options, issue); + if (milestones.shouldExemptMilestones()) { + IssuesProcessor._endIssueProcessing(issue); + return; // Don't process exempt milestones + } + const assignees = new assignees_1.Assignees(this.options, issue); + if (assignees.shouldExemptAssignees()) { + IssuesProcessor._endIssueProcessing(issue); + return; // Don't process exempt assignees + } + // Ignore draft PR + // Note that this check is so far below because it cost one read operation + // So it's simply better to do all the stale checks which don't cost more operation before this one + const exemptDraftPullRequest = new exempt_draft_pull_request_1.ExemptDraftPullRequest(this.options, issue); + if (yield exemptDraftPullRequest.shouldExemptDraftPullRequest(() => __awaiter(this, void 0, void 0, function* () { + return this.getPullRequest(issue); + }))) { + IssuesProcessor._endIssueProcessing(issue); + return; // Don't process draft PR + } + // Determine if this issue needs to be marked stale first + if (!issue.isStale) { + issueLogger.info(`This $$type is not stale`); + const shouldIgnoreUpdates = new ignore_updates_1.IgnoreUpdates(this.options, issue).shouldIgnoreUpdates(); + // Should this issue be marked as stale? + let shouldBeStale; + // Ignore the last update and only use the creation date + if (shouldIgnoreUpdates) { + shouldBeStale = !IssuesProcessor._updatedSince(issue.created_at, daysBeforeStale); + } + // Use the last update to check if we need to stale + else { + shouldBeStale = !IssuesProcessor._updatedSince(issue.updated_at, daysBeforeStale); + } + if (shouldBeStale) { + if (shouldIgnoreUpdates) { + issueLogger.info(`This $$type should be stale based on the creation date the ${get_humanized_date_1.getHumanizedDate(new Date(issue.created_at))} (${logger_service_1.LoggerService.cyan(issue.created_at)})`); + } + else { + issueLogger.info(`This $$type should be stale based on the last update date the ${get_humanized_date_1.getHumanizedDate(new Date(issue.updated_at))} (${logger_service_1.LoggerService.cyan(issue.updated_at)})`); + } + if (shouldMarkAsStale) { + issueLogger.info(`This $$type should be marked as stale based on the option ${issueLogger.createOptionLink(this._getDaysBeforeStaleUsedOptionName(issue))} (${logger_service_1.LoggerService.cyan(daysBeforeStale)})`); + yield this._markStale(issue, staleMessage, staleLabel, skipMessage); + issue.isStale = true; // This issue is now considered stale + issueLogger.info(`This $$type is now stale`); + } + else { + issueLogger.info(`This $$type should not be marked as stale based on the option ${issueLogger.createOptionLink(this._getDaysBeforeStaleUsedOptionName(issue))} (${logger_service_1.LoggerService.cyan(daysBeforeStale)})`); + } + } + else { + if (shouldIgnoreUpdates) { + issueLogger.info(`This $$type should not be stale based on the creation date the ${get_humanized_date_1.getHumanizedDate(new Date(issue.created_at))} (${logger_service_1.LoggerService.cyan(issue.created_at)})`); + } + else { + issueLogger.info(`This $$type should not be stale based on the last update date the ${get_humanized_date_1.getHumanizedDate(new Date(issue.updated_at))} (${logger_service_1.LoggerService.cyan(issue.updated_at)})`); + } + } + } + // Process the issue if it was marked stale + if (issue.isStale) { + issueLogger.info(`This $$type is already stale`); + yield this._processStaleIssue(issue, staleLabel, staleMessage, labelsToAddWhenUnstale, labelsToRemoveWhenUnstale, closeMessage, closeLabel); + } + IssuesProcessor._endIssueProcessing(issue); + }); + } + // Grab comments for an issue since a given date + listIssueComments(issueNumber, sinceDate) { + var _a; + return __awaiter(this, void 0, void 0, function* () { + // Find any comments since date on the given issue + try { + this.operations.consumeOperation(); + (_a = this.statistics) === null || _a === void 0 ? void 0 : _a.incrementFetchedItemsCommentsCount(); + const comments = yield this.client.issues.listComments({ + owner: github_1.context.repo.owner, + repo: github_1.context.repo.repo, + issue_number: issueNumber, + since: sinceDate + }); + return comments.data; + } + catch (error) { + this._logger.error(`List issue comments error: ${error.message}`); + return Promise.resolve([]); + } + }); + } + // grab issues from github in batches of 100 + getIssues(page) { + var _a; + return __awaiter(this, void 0, void 0, function* () { + // generate type for response + const endpoint = this.client.issues.listForRepo; + try { + this.operations.consumeOperation(); + const issueResult = yield this.client.issues.listForRepo({ + owner: github_1.context.repo.owner, + repo: github_1.context.repo.repo, + state: 'open', + per_page: 100, + direction: this.options.ascending ? 'asc' : 'desc', + page + }); + (_a = this.statistics) === null || _a === void 0 ? void 0 : _a.incrementFetchedItemsCount(issueResult.data.length); + return issueResult.data.map((issue) => new issue_1.Issue(this.options, issue)); + } + catch (error) { + this._logger.error(`Get issues for repo error: ${error.message}`); + return Promise.resolve([]); + } + }); + } + // returns the creation date of a given label on an issue (or nothing if no label existed) + ///see https://developer.github.com/v3/activity/events/ + getLabelCreationDate(issue, label) { + var _a; + return __awaiter(this, void 0, void 0, function* () { + const issueLogger = new issue_logger_1.IssueLogger(issue); + issueLogger.info(`Checking for label on this $$type`); + this._consumeIssueOperation(issue); + (_a = this.statistics) === null || _a === void 0 ? void 0 : _a.incrementFetchedItemsEventsCount(); + const options = this.client.issues.listEvents.endpoint.merge({ + owner: github_1.context.repo.owner, + repo: github_1.context.repo.repo, + per_page: 100, + issue_number: issue.number + }); + const events = yield this.client.paginate(options); + const reversedEvents = events.reverse(); + const staleLabeledEvent = reversedEvents.find(event => event.event === 'labeled' && + clean_label_1.cleanLabel(event.label.name) === clean_label_1.cleanLabel(label)); + if (!staleLabeledEvent) { + // Must be old rather than labeled + return undefined; + } + return staleLabeledEvent.created_at; + }); + } + getPullRequest(issue) { + var _a; + return __awaiter(this, void 0, void 0, function* () { + const issueLogger = new issue_logger_1.IssueLogger(issue); + try { + this._consumeIssueOperation(issue); + (_a = this.statistics) === null || _a === void 0 ? void 0 : _a.incrementFetchedPullRequestsCount(); + const pullRequest = yield this.client.pulls.get({ + owner: github_1.context.repo.owner, + repo: github_1.context.repo.repo, + pull_number: issue.number + }); + return pullRequest.data; + } + catch (error) { + issueLogger.error(`Error when getting this $$type: ${error.message}`); + } + }); + } + // handle all of the stale issue logic when we find a stale issue + _processStaleIssue(issue, staleLabel, staleMessage, labelsToAddWhenUnstale, labelsToRemoveWhenUnstale, closeMessage, closeLabel) { + return __awaiter(this, void 0, void 0, function* () { + const issueLogger = new issue_logger_1.IssueLogger(issue); + const markedStaleOn = (yield this.getLabelCreationDate(issue, staleLabel)) || issue.updated_at; + issueLogger.info(`$$type marked stale on: ${logger_service_1.LoggerService.cyan(markedStaleOn)}`); + const issueHasComments = yield this._hasCommentsSince(issue, markedStaleOn, staleMessage); + issueLogger.info(`$$type has been commented on: ${logger_service_1.LoggerService.cyan(issueHasComments)}`); + const daysBeforeClose = issue.isPullRequest + ? this._getDaysBeforePrClose() + : this._getDaysBeforeIssueClose(); + issueLogger.info(`Days before $$type close: ${logger_service_1.LoggerService.cyan(daysBeforeClose)}`); + const issueHasUpdate = IssuesProcessor._updatedSince(issue.updated_at, daysBeforeClose); + issueLogger.info(`$$type has been updated: ${logger_service_1.LoggerService.cyan(issueHasUpdate)}`); + const shouldRemoveStaleWhenUpdated = this._shouldRemoveStaleWhenUpdated(issue); + issueLogger.info(`The option ${issueLogger.createOptionLink(this._getRemoveStaleWhenUpdatedUsedOptionName(issue))} is: ${logger_service_1.LoggerService.cyan(shouldRemoveStaleWhenUpdated)}`); + if (shouldRemoveStaleWhenUpdated) { + issueLogger.info(`The stale label should not be removed`); + } + else { + issueLogger.info(`The stale label should be removed if all conditions met`); + } + // Should we un-stale this issue? + if (shouldRemoveStaleWhenUpdated && issueHasComments) { + issueLogger.info(`Remove the stale label since the $$type has a comment and the workflow should remove the stale label when updated`); + yield this._removeStaleLabel(issue, staleLabel); + // Are there labels to remove or add when an issue is no longer stale? + yield this._removeLabelsWhenUnstale(issue, labelsToRemoveWhenUnstale); + yield this._addLabelsWhenUnstale(issue, labelsToAddWhenUnstale); + issueLogger.info(`Skipping the process since the $$type is now un-stale`); + return; // Nothing to do because it is no longer stale + } + // Now start closing logic + if (daysBeforeClose < 0) { + return; // Nothing to do because we aren't closing stale issues + } + if (!issueHasComments && !issueHasUpdate) { + issueLogger.info(`Closing $$type because it was last updated on: ${logger_service_1.LoggerService.cyan(issue.updated_at)}`); + yield this._closeIssue(issue, closeMessage, closeLabel); + if (this.options.deleteBranch && issue.pull_request) { + issueLogger.info(`Deleting the branch since the option ${issueLogger.createOptionLink(option_1.Option.DeleteBranch)} is enabled`); + yield this._deleteBranch(issue); + this.deletedBranchIssues.push(issue); + } + } + else { + issueLogger.info(`Stale $$type is not old enough to close yet (hasComments? ${issueHasComments}, hasUpdate? ${issueHasUpdate})`); + } + }); + } + // checks to see if a given issue is still stale (has had activity on it) + _hasCommentsSince(issue, sinceDate, staleMessage) { + return __awaiter(this, void 0, void 0, function* () { + const issueLogger = new issue_logger_1.IssueLogger(issue); + issueLogger.info(`Checking for comments on $$type since: ${logger_service_1.LoggerService.cyan(sinceDate)}`); + if (!sinceDate) { + return true; + } + // find any comments since the date + const comments = yield this.listIssueComments(issue.number, sinceDate); + const filteredComments = comments.filter(comment => comment.user.type === 'User' && + comment.body.toLowerCase() !== staleMessage.toLowerCase()); + issueLogger.info(`Comments that are not the stale comment or another bot: ${logger_service_1.LoggerService.cyan(filteredComments.length)}`); + // if there are any user comments returned + return filteredComments.length > 0; + }); + } + // Mark an issue as stale with a comment and a label + _markStale(issue, staleMessage, staleLabel, skipMessage) { + var _a, _b, _c; + return __awaiter(this, void 0, void 0, function* () { + const issueLogger = new issue_logger_1.IssueLogger(issue); + issueLogger.info(`Marking this $$type as stale`); + this.staleIssues.push(issue); + // if the issue is being marked stale, the updated date should be changed to right now + // so that close calculations work correctly + const newUpdatedAtDate = new Date(); + issue.updated_at = newUpdatedAtDate.toString(); + if (!skipMessage) { + try { + this._consumeIssueOperation(issue); + (_a = this.statistics) === null || _a === void 0 ? void 0 : _a.incrementAddedItemsComment(issue); + if (!this.options.debugOnly) { + yield this.client.issues.createComment({ + owner: github_1.context.repo.owner, + repo: github_1.context.repo.repo, + issue_number: issue.number, + body: staleMessage + }); + } + } + catch (error) { + issueLogger.error(`Error when creating a comment: ${error.message}`); + } + } + try { + this._consumeIssueOperation(issue); + (_b = this.statistics) === null || _b === void 0 ? void 0 : _b.incrementAddedItemsLabel(issue); + (_c = this.statistics) === null || _c === void 0 ? void 0 : _c.incrementStaleItemsCount(issue); + if (!this.options.debugOnly) { + yield this.client.issues.addLabels({ + owner: github_1.context.repo.owner, + repo: github_1.context.repo.repo, + issue_number: issue.number, + labels: [staleLabel] + }); + } + } + catch (error) { + issueLogger.error(`Error when adding a label: ${error.message}`); + } + }); + } + // Close an issue based on staleness + _closeIssue(issue, closeMessage, closeLabel) { + var _a, _b, _c; + return __awaiter(this, void 0, void 0, function* () { + const issueLogger = new issue_logger_1.IssueLogger(issue); + issueLogger.info(`Closing $$type for being stale`); + this.closedIssues.push(issue); + if (closeMessage) { + try { + this._consumeIssueOperation(issue); + (_a = this.statistics) === null || _a === void 0 ? void 0 : _a.incrementAddedItemsComment(issue); + this.addedCloseCommentIssues.push(issue); + if (!this.options.debugOnly) { + yield this.client.issues.createComment({ + owner: github_1.context.repo.owner, + repo: github_1.context.repo.repo, + issue_number: issue.number, + body: closeMessage + }); + } + } + catch (error) { + issueLogger.error(`Error when creating a comment: ${error.message}`); + } + } + if (closeLabel) { + try { + this._consumeIssueOperation(issue); + (_b = this.statistics) === null || _b === void 0 ? void 0 : _b.incrementAddedItemsLabel(issue); + if (!this.options.debugOnly) { + yield this.client.issues.addLabels({ + owner: github_1.context.repo.owner, + repo: github_1.context.repo.repo, + issue_number: issue.number, + labels: [closeLabel] + }); + } + } + catch (error) { + issueLogger.error(`Error when adding a label: ${error.message}`); + } + } + try { + this._consumeIssueOperation(issue); + (_c = this.statistics) === null || _c === void 0 ? void 0 : _c.incrementClosedItemsCount(issue); + if (!this.options.debugOnly) { + yield this.client.issues.update({ + owner: github_1.context.repo.owner, + repo: github_1.context.repo.repo, + issue_number: issue.number, + state: 'closed' + }); + } + } + catch (error) { + issueLogger.error(`Error when updating this $$type: ${error.message}`); + } + }); + } + // Delete the branch on closed pull request + _deleteBranch(issue) { + var _a; + return __awaiter(this, void 0, void 0, function* () { + const issueLogger = new issue_logger_1.IssueLogger(issue); issueLogger.info(`Delete branch from closed $ $type - - ${issue.title}`); - const pullRequest = yield this.getPullRequest(issue); - if (!pullRequest) { - issueLogger.info(`Not deleting this branch as no pull request was found for this $$type`); - return; - } - const branch = pullRequest.head.ref; - issueLogger.info(`Deleting the branch "${logger_service_1.LoggerService.cyan(branch)}" from closed $$type`); - try { - this._consumeIssueOperation(issue); - (_a = this.statistics) === null || _a === void 0 ? void 0 : _a.incrementDeletedBranchesCount(); - if (!this.options.debugOnly) { - yield this.client.git.deleteRef({ - owner: github_1.context.repo.owner, - repo: github_1.context.repo.repo, - ref: `heads/${branch}` - }); - } - } - catch (error) { - issueLogger.error(`Error when deleting the branch "${logger_service_1.LoggerService.cyan(branch)}" from $$type: ${error.message}`); - } - }); - } - // Remove a label from an issue or a pull request - _removeLabel(issue, label, isSubStep = false) { - var _a; - return __awaiter(this, void 0, void 0, function* () { - const issueLogger = new issue_logger_1.IssueLogger(issue); - issueLogger.info(`${isSubStep ? logger_service_1.LoggerService.white('├── ') : ''}Removing the label "${logger_service_1.LoggerService.cyan(label)}" from this $$type...`); - this.removedLabelIssues.push(issue); - try { - this._consumeIssueOperation(issue); - (_a = this.statistics) === null || _a === void 0 ? void 0 : _a.incrementDeletedItemsLabelsCount(issue); - if (!this.options.debugOnly) { - yield this.client.issues.removeLabel({ - owner: github_1.context.repo.owner, - repo: github_1.context.repo.repo, - issue_number: issue.number, - name: label - }); - } - issueLogger.info(`${isSubStep ? logger_service_1.LoggerService.white('└── ') : ''}The label "${logger_service_1.LoggerService.cyan(label)}" was removed`); - } - catch (error) { - issueLogger.error(`${isSubStep ? logger_service_1.LoggerService.white('└── ') : ''}Error when removing the label: "${logger_service_1.LoggerService.cyan(error.message)}"`); - } - }); - } - _getDaysBeforeIssueStale() { - return isNaN(this.options.daysBeforeIssueStale) - ? this.options.daysBeforeStale - : this.options.daysBeforeIssueStale; - } - _getDaysBeforePrStale() { - return isNaN(this.options.daysBeforePrStale) - ? this.options.daysBeforeStale - : this.options.daysBeforePrStale; - } - _getDaysBeforeIssueClose() { - return isNaN(this.options.daysBeforeIssueClose) - ? this.options.daysBeforeClose - : this.options.daysBeforeIssueClose; - } - _getDaysBeforePrClose() { - return isNaN(this.options.daysBeforePrClose) - ? this.options.daysBeforeClose - : this.options.daysBeforePrClose; - } - _getOnlyLabels(issue) { - if (issue.isPullRequest) { - if (this.options.onlyPrLabels !== '') { - return this.options.onlyPrLabels; - } - } - else { - if (this.options.onlyIssueLabels !== '') { - return this.options.onlyIssueLabels; - } - } - return this.options.onlyLabels; - } - _getAnyOfLabels(issue) { - if (issue.isPullRequest) { - if (this.options.anyOfPrLabels !== '') { - return this.options.anyOfPrLabels; - } - } - else { - if (this.options.anyOfIssueLabels !== '') { - return this.options.anyOfIssueLabels; - } - } - return this.options.anyOfLabels; - } - _shouldRemoveStaleWhenUpdated(issue) { - if (issue.isPullRequest) { - if (is_boolean_1.isBoolean(this.options.removePrStaleWhenUpdated)) { - return this.options.removePrStaleWhenUpdated; - } - return this.options.removeStaleWhenUpdated; - } - if (is_boolean_1.isBoolean(this.options.removeIssueStaleWhenUpdated)) { - return this.options.removeIssueStaleWhenUpdated; - } - return this.options.removeStaleWhenUpdated; - } - _removeLabelsWhenUnstale(issue, removeLabels) { - return __awaiter(this, void 0, void 0, function* () { - if (!removeLabels.length) { - return; - } - const issueLogger = new issue_logger_1.IssueLogger(issue); - issueLogger.info(`Removing all the labels specified via the ${this._logger.createOptionLink(option_1.Option.LabelsToRemoveWhenUnstale)} option.`); - for (const label of removeLabels.values()) { - yield this._removeLabel(issue, label); - } - }); - } - _addLabelsWhenUnstale(issue, labelsToAdd) { - var _a; - return __awaiter(this, void 0, void 0, function* () { - if (!labelsToAdd.length) { - return; - } - const issueLogger = new issue_logger_1.IssueLogger(issue); - issueLogger.info(`Adding all the labels specified via the ${this._logger.createOptionLink(option_1.Option.LabelsToAddWhenUnstale)} option.`); - this.addedLabelIssues.push(issue); - try { - this.operations.consumeOperation(); - (_a = this.statistics) === null || _a === void 0 ? void 0 : _a.incrementAddedItemsLabel(issue); - if (!this.options.debugOnly) { - yield this.client.issues.addLabels({ - owner: github_1.context.repo.owner, - repo: github_1.context.repo.repo, - issue_number: issue.number, - labels: labelsToAdd - }); - } - } - catch (error) { - this._logger.error(`Error when adding labels after updated from stale: ${error.message}`); - } - }); - } - _removeStaleLabel(issue, staleLabel) { - var _a; - return __awaiter(this, void 0, void 0, function* () { - const issueLogger = new issue_logger_1.IssueLogger(issue); - issueLogger.info(`The $$type is no longer stale. Removing the stale label...`); - yield this._removeLabel(issue, staleLabel); - (_a = this.statistics) === null || _a === void 0 ? void 0 : _a.incrementUndoStaleItemsCount(issue); - }); - } - _removeCloseLabel(issue, closeLabel) { - var _a; - return __awaiter(this, void 0, void 0, function* () { - const issueLogger = new issue_logger_1.IssueLogger(issue); - issueLogger.info(`The $$type is not closed nor locked. Trying to remove the close label...`); - if (!closeLabel) { - issueLogger.info(logger_service_1.LoggerService.white('├──'), `The ${issueLogger.createOptionLink(IssuesProcessor._getCloseLabelUsedOptionName(issue))} option was not set`); - issueLogger.info(logger_service_1.LoggerService.white('└──'), `Skipping the removal of the close label`); - return Promise.resolve(); - } - if (is_labeled_1.isLabeled(issue, closeLabel)) { - issueLogger.info(logger_service_1.LoggerService.white('├──'), `The $$type has a close label "${logger_service_1.LoggerService.cyan(closeLabel)}". Removing the close label...`); - yield this._removeLabel(issue, closeLabel, true); - (_a = this.statistics) === null || _a === void 0 ? void 0 : _a.incrementDeletedCloseItemsLabelsCount(issue); - } - else { - issueLogger.info(logger_service_1.LoggerService.white('└──'), `There is no close label on this $$type. Skipping`); - return Promise.resolve(); - } - }); - } - _consumeIssueOperation(issue) { - this.operations.consumeOperation(); - issue.operations.consumeOperation(); - } - _getDaysBeforeStaleUsedOptionName(issue) { - return issue.isPullRequest - ? this._getDaysBeforePrStaleUsedOptionName() - : this._getDaysBeforeIssueStaleUsedOptionName(); - } - _getDaysBeforeIssueStaleUsedOptionName() { - return isNaN(this.options.daysBeforeIssueStale) - ? option_1.Option.DaysBeforeStale - : option_1.Option.DaysBeforeIssueStale; - } - _getDaysBeforePrStaleUsedOptionName() { - return isNaN(this.options.daysBeforePrStale) - ? option_1.Option.DaysBeforeStale - : option_1.Option.DaysBeforePrStale; - } - _getRemoveStaleWhenUpdatedUsedOptionName(issue) { - if (issue.isPullRequest) { - if (is_boolean_1.isBoolean(this.options.removePrStaleWhenUpdated)) { - return option_1.Option.RemovePrStaleWhenUpdated; - } - return option_1.Option.RemoveStaleWhenUpdated; - } - if (is_boolean_1.isBoolean(this.options.removeIssueStaleWhenUpdated)) { - return option_1.Option.RemoveIssueStaleWhenUpdated; - } - return option_1.Option.RemoveStaleWhenUpdated; - } -} -exports.IssuesProcessor = IssuesProcessor; + ${issue.title}`); + const pullRequest = yield this.getPullRequest(issue); + if (!pullRequest) { + issueLogger.info(`Not deleting this branch as no pull request was found for this $$type`); + return; + } + const branch = pullRequest.head.ref; + issueLogger.info(`Deleting the branch "${logger_service_1.LoggerService.cyan(branch)}" from closed $$type`); + try { + this._consumeIssueOperation(issue); + (_a = this.statistics) === null || _a === void 0 ? void 0 : _a.incrementDeletedBranchesCount(); + if (!this.options.debugOnly) { + yield this.client.git.deleteRef({ + owner: github_1.context.repo.owner, + repo: github_1.context.repo.repo, + ref: `heads/${branch}` + }); + } + } + catch (error) { + issueLogger.error(`Error when deleting the branch "${logger_service_1.LoggerService.cyan(branch)}" from $$type: ${error.message}`); + } + }); + } + // Remove a label from an issue or a pull request + _removeLabel(issue, label, isSubStep = false) { + var _a; + return __awaiter(this, void 0, void 0, function* () { + const issueLogger = new issue_logger_1.IssueLogger(issue); + issueLogger.info(`${isSubStep ? logger_service_1.LoggerService.white('├── ') : ''}Removing the label "${logger_service_1.LoggerService.cyan(label)}" from this $$type...`); + this.removedLabelIssues.push(issue); + try { + this._consumeIssueOperation(issue); + (_a = this.statistics) === null || _a === void 0 ? void 0 : _a.incrementDeletedItemsLabelsCount(issue); + if (!this.options.debugOnly) { + yield this.client.issues.removeLabel({ + owner: github_1.context.repo.owner, + repo: github_1.context.repo.repo, + issue_number: issue.number, + name: label + }); + } + issueLogger.info(`${isSubStep ? logger_service_1.LoggerService.white('└── ') : ''}The label "${logger_service_1.LoggerService.cyan(label)}" was removed`); + } + catch (error) { + issueLogger.error(`${isSubStep ? logger_service_1.LoggerService.white('└── ') : ''}Error when removing the label: "${logger_service_1.LoggerService.cyan(error.message)}"`); + } + }); + } + _getDaysBeforeIssueStale() { + return isNaN(this.options.daysBeforeIssueStale) + ? this.options.daysBeforeStale + : this.options.daysBeforeIssueStale; + } + _getDaysBeforePrStale() { + return isNaN(this.options.daysBeforePrStale) + ? this.options.daysBeforeStale + : this.options.daysBeforePrStale; + } + _getDaysBeforeIssueClose() { + return isNaN(this.options.daysBeforeIssueClose) + ? this.options.daysBeforeClose + : this.options.daysBeforeIssueClose; + } + _getDaysBeforePrClose() { + return isNaN(this.options.daysBeforePrClose) + ? this.options.daysBeforeClose + : this.options.daysBeforePrClose; + } + _getOnlyLabels(issue) { + if (issue.isPullRequest) { + if (this.options.onlyPrLabels !== '') { + return this.options.onlyPrLabels; + } + } + else { + if (this.options.onlyIssueLabels !== '') { + return this.options.onlyIssueLabels; + } + } + return this.options.onlyLabels; + } + _getAnyOfLabels(issue) { + if (issue.isPullRequest) { + if (this.options.anyOfPrLabels !== '') { + return this.options.anyOfPrLabels; + } + } + else { + if (this.options.anyOfIssueLabels !== '') { + return this.options.anyOfIssueLabels; + } + } + return this.options.anyOfLabels; + } + _shouldRemoveStaleWhenUpdated(issue) { + if (issue.isPullRequest) { + if (is_boolean_1.isBoolean(this.options.removePrStaleWhenUpdated)) { + return this.options.removePrStaleWhenUpdated; + } + return this.options.removeStaleWhenUpdated; + } + if (is_boolean_1.isBoolean(this.options.removeIssueStaleWhenUpdated)) { + return this.options.removeIssueStaleWhenUpdated; + } + return this.options.removeStaleWhenUpdated; + } + _removeLabelsWhenUnstale(issue, removeLabels) { + return __awaiter(this, void 0, void 0, function* () { + if (!removeLabels.length) { + return; + } + const issueLogger = new issue_logger_1.IssueLogger(issue); + issueLogger.info(`Removing all the labels specified via the ${this._logger.createOptionLink(option_1.Option.LabelsToRemoveWhenUnstale)} option.`); + for (const label of removeLabels.values()) { + yield this._removeLabel(issue, label); + } + }); + } + _addLabelsWhenUnstale(issue, labelsToAdd) { + var _a; + return __awaiter(this, void 0, void 0, function* () { + if (!labelsToAdd.length) { + return; + } + const issueLogger = new issue_logger_1.IssueLogger(issue); + issueLogger.info(`Adding all the labels specified via the ${this._logger.createOptionLink(option_1.Option.LabelsToAddWhenUnstale)} option.`); + this.addedLabelIssues.push(issue); + try { + this.operations.consumeOperation(); + (_a = this.statistics) === null || _a === void 0 ? void 0 : _a.incrementAddedItemsLabel(issue); + if (!this.options.debugOnly) { + yield this.client.issues.addLabels({ + owner: github_1.context.repo.owner, + repo: github_1.context.repo.repo, + issue_number: issue.number, + labels: labelsToAdd + }); + } + } + catch (error) { + this._logger.error(`Error when adding labels after updated from stale: ${error.message}`); + } + }); + } + _removeStaleLabel(issue, staleLabel) { + var _a; + return __awaiter(this, void 0, void 0, function* () { + const issueLogger = new issue_logger_1.IssueLogger(issue); + issueLogger.info(`The $$type is no longer stale. Removing the stale label...`); + yield this._removeLabel(issue, staleLabel); + (_a = this.statistics) === null || _a === void 0 ? void 0 : _a.incrementUndoStaleItemsCount(issue); + }); + } + _removeCloseLabel(issue, closeLabel) { + var _a; + return __awaiter(this, void 0, void 0, function* () { + const issueLogger = new issue_logger_1.IssueLogger(issue); + issueLogger.info(`The $$type is not closed nor locked. Trying to remove the close label...`); + if (!closeLabel) { + issueLogger.info(logger_service_1.LoggerService.white('├──'), `The ${issueLogger.createOptionLink(IssuesProcessor._getCloseLabelUsedOptionName(issue))} option was not set`); + issueLogger.info(logger_service_1.LoggerService.white('└──'), `Skipping the removal of the close label`); + return Promise.resolve(); + } + if (is_labeled_1.isLabeled(issue, closeLabel)) { + issueLogger.info(logger_service_1.LoggerService.white('├──'), `The $$type has a close label "${logger_service_1.LoggerService.cyan(closeLabel)}". Removing the close label...`); + yield this._removeLabel(issue, closeLabel, true); + (_a = this.statistics) === null || _a === void 0 ? void 0 : _a.incrementDeletedCloseItemsLabelsCount(issue); + } + else { + issueLogger.info(logger_service_1.LoggerService.white('└──'), `There is no close label on this $$type. Skipping`); + return Promise.resolve(); + } + }); + } + _consumeIssueOperation(issue) { + this.operations.consumeOperation(); + issue.operations.consumeOperation(); + } + _getDaysBeforeStaleUsedOptionName(issue) { + return issue.isPullRequest + ? this._getDaysBeforePrStaleUsedOptionName() + : this._getDaysBeforeIssueStaleUsedOptionName(); + } + _getDaysBeforeIssueStaleUsedOptionName() { + return isNaN(this.options.daysBeforeIssueStale) + ? option_1.Option.DaysBeforeStale + : option_1.Option.DaysBeforeIssueStale; + } + _getDaysBeforePrStaleUsedOptionName() { + return isNaN(this.options.daysBeforePrStale) + ? option_1.Option.DaysBeforeStale + : option_1.Option.DaysBeforePrStale; + } + _getRemoveStaleWhenUpdatedUsedOptionName(issue) { + if (issue.isPullRequest) { + if (is_boolean_1.isBoolean(this.options.removePrStaleWhenUpdated)) { + return option_1.Option.RemovePrStaleWhenUpdated; + } + return option_1.Option.RemoveStaleWhenUpdated; + } + if (is_boolean_1.isBoolean(this.options.removeIssueStaleWhenUpdated)) { + return option_1.Option.RemoveIssueStaleWhenUpdated; + } + return option_1.Option.RemoveStaleWhenUpdated; + } +} +exports.IssuesProcessor = IssuesProcessor; /***/ }), @@ -1101,85 +1069,85 @@ exports.IssuesProcessor = IssuesProcessor; /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; - -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.IssueLogger = void 0; -const logger_1 = __nccwpck_require__(6212); -const logger_service_1 = __nccwpck_require__(1973); -/** - * @description - * Each log will prefix the message with the issue number - * - * @example - * warning('No stale') => "[#123] No stale" - * - * Each log method can have special tokens: - * - $$type => will replace this by either "pull request" or "issue" depending of the type of issue - * - * @example - * warning('The $$type will stale') => "The pull request will stale" - */ -class IssueLogger extends logger_1.Logger { - constructor(issue) { - super(); - this._issue = issue; - } - warning(...message) { - super.warning(this._format(...message)); - } - info(...message) { - super.info(this._format(...message)); - } - error(...message) { - super.error(this._format(...message)); - } - grouping(message, fn) { - const _super = Object.create(null, { - grouping: { get: () => super.grouping } - }); - return __awaiter(this, void 0, void 0, function* () { - return _super.grouping.call(this, this._format(message), fn); - }); - } - _replaceTokens(message) { - return this._replaceTypeToken(message); - } - _replaceTypeToken(message) { - return message - .replace(/^\$\$type/, this._issue.isPullRequest ? 'Pull request' : 'Issue') - .replace(/\$\$type/g, this._issue.isPullRequest ? 'pull request' : 'issue'); - } - _prefixWithIssueNumber(message) { - return `${this._getPrefix()} ${message}`; - } - _getIssueNumber() { - return this._issue.number; - } - _format(...message) { - return this._prefixWithIssueNumber(this._replaceTokens(message.join(' '))); - } - _getPrefix() { - return this._issue.isPullRequest - ? this._getPullRequestPrefix() - : this._getIssuePrefix(); - } - _getIssuePrefix() { - return logger_service_1.LoggerService.red(`[#${this._getIssueNumber()}]`); - } - _getPullRequestPrefix() { - return logger_service_1.LoggerService.blue(`[#${this._getIssueNumber()}]`); - } -} -exports.IssueLogger = IssueLogger; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.IssueLogger = void 0; +const logger_1 = __nccwpck_require__(6212); +const logger_service_1 = __nccwpck_require__(1973); +/** + * @description + * Each log will prefix the message with the issue number + * + * @example + * warning('No stale') => "[#123] No stale" + * + * Each log method can have special tokens: + * - $$type => will replace this by either "pull request" or "issue" depending of the type of issue + * + * @example + * warning('The $$type will stale') => "The pull request will stale" + */ +class IssueLogger extends logger_1.Logger { + constructor(issue) { + super(); + this._issue = issue; + } + warning(...message) { + super.warning(this._format(...message)); + } + info(...message) { + super.info(this._format(...message)); + } + error(...message) { + super.error(this._format(...message)); + } + grouping(message, fn) { + const _super = Object.create(null, { + grouping: { get: () => super.grouping } + }); + return __awaiter(this, void 0, void 0, function* () { + return _super.grouping.call(this, this._format(message), fn); + }); + } + _replaceTokens(message) { + return this._replaceTypeToken(message); + } + _replaceTypeToken(message) { + return message + .replace(/^\$\$type/, this._issue.isPullRequest ? 'Pull request' : 'Issue') + .replace(/\$\$type/g, this._issue.isPullRequest ? 'pull request' : 'issue'); + } + _prefixWithIssueNumber(message) { + return `${this._getPrefix()} ${message}`; + } + _getIssueNumber() { + return this._issue.number; + } + _format(...message) { + return this._prefixWithIssueNumber(this._replaceTokens(message.join(' '))); + } + _getPrefix() { + return this._issue.isPullRequest + ? this._getPullRequestPrefix() + : this._getIssuePrefix(); + } + _getIssuePrefix() { + return logger_service_1.LoggerService.red(`[#${this._getIssueNumber()}]`); + } + _getPullRequestPrefix() { + return logger_service_1.LoggerService.blue(`[#${this._getIssueNumber()}]`); + } +} +exports.IssueLogger = IssueLogger; /***/ }), @@ -1188,66 +1156,66 @@ exports.IssueLogger = IssueLogger; /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.Logger = void 0; -const core = __importStar(__nccwpck_require__(2186)); -const terminal_link_1 = __importDefault(__nccwpck_require__(1898)); -const logger_service_1 = __nccwpck_require__(1973); -class Logger { - warning(...message) { - core.warning(logger_service_1.LoggerService.whiteBright(message.join(' '))); - } - info(...message) { - core.info(logger_service_1.LoggerService.whiteBright(message.join(' '))); - } - error(...message) { - core.error(logger_service_1.LoggerService.whiteBright(message.join(' '))); - } - grouping(message, fn) { - return __awaiter(this, void 0, void 0, function* () { - return core.group(logger_service_1.LoggerService.whiteBright(message), fn); - }); - } - createLink(name, link) { - return terminal_link_1.default(name, link); - } - createOptionLink(option) { - return logger_service_1.LoggerService.magenta(this.createLink(option, `https://github.com/actions/stale#${option}`)); - } -} -exports.Logger = Logger; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Logger = void 0; +const core = __importStar(__nccwpck_require__(2186)); +const terminal_link_1 = __importDefault(__nccwpck_require__(1898)); +const logger_service_1 = __nccwpck_require__(1973); +class Logger { + warning(...message) { + core.warning(logger_service_1.LoggerService.whiteBright(message.join(' '))); + } + info(...message) { + core.info(logger_service_1.LoggerService.whiteBright(message.join(' '))); + } + error(...message) { + core.error(logger_service_1.LoggerService.whiteBright(message.join(' '))); + } + grouping(message, fn) { + return __awaiter(this, void 0, void 0, function* () { + return core.group(logger_service_1.LoggerService.whiteBright(message), fn); + }); + } + createLink(name, link) { + return terminal_link_1.default(name, link); + } + createOptionLink(option) { + return logger_service_1.LoggerService.magenta(this.createLink(option, `https://github.com/actions/stale#${option}`)); + } +} +exports.Logger = Logger; /***/ }), @@ -1256,145 +1224,145 @@ exports.Logger = Logger; /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; - -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.Milestones = void 0; -const lodash_deburr_1 = __importDefault(__nccwpck_require__(1601)); -const option_1 = __nccwpck_require__(5931); -const words_to_list_1 = __nccwpck_require__(1883); -const issue_logger_1 = __nccwpck_require__(2984); -const logger_service_1 = __nccwpck_require__(1973); -class Milestones { - constructor(options, issue) { - this._options = options; - this._issue = issue; - this._issueLogger = new issue_logger_1.IssueLogger(issue); - } - static _cleanMilestone(milestone) { - return lodash_deburr_1.default(milestone.toLowerCase()); - } - shouldExemptMilestones() { - if (!this._issue.milestone) { - this._issueLogger.info('This $$type has no milestone'); - this._logSkip(); - return false; - } - if (this._shouldExemptAllMilestones()) { - this._issueLogger.info(logger_service_1.LoggerService.white('└──'), 'Skipping this $$type because it has a milestone'); - return true; - } - const exemptMilestones = this._getExemptMilestones(); - if (exemptMilestones.length === 0) { - this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `No milestone option was specified to skip the stale process for this $$type`); - this._logSkip(); - return false; - } - this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `Found ${logger_service_1.LoggerService.cyan(exemptMilestones.length)} milestone${exemptMilestones.length > 1 ? 's' : ''} that can exempt stale on this $$type`); - const hasExemptMilestone = exemptMilestones.some((exemptMilestone) => this._hasMilestone(exemptMilestone)); - if (!hasExemptMilestone) { - this._issueLogger.info(logger_service_1.LoggerService.white('├──'), 'No milestone on this $$type can exempt the stale process'); - this._logSkip(); - } - else { - this._issueLogger.info(logger_service_1.LoggerService.white('└──'), 'Skipping this $$type because it has an exempt milestone'); - } - return hasExemptMilestone; - } - _getExemptMilestones() { - return this._issue.isPullRequest - ? this._getExemptPullRequestMilestones() - : this._getExemptIssueMilestones(); - } - _getExemptIssueMilestones() { - if (this._options.exemptIssueMilestones === '') { - this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptIssueMilestones)} is disabled. No specific milestone can skip the stale process for this $$type`); - if (this._options.exemptMilestones === '') { - this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptMilestones)} is disabled. No specific milestone can skip the stale process for this $$type`); - return []; - } - const exemptMilestones = words_to_list_1.wordsToList(this._options.exemptMilestones); - this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptMilestones)} is set. ${logger_service_1.LoggerService.cyan(exemptMilestones.length)} milestone${exemptMilestones.length === 1 ? '' : 's'} can skip the stale process for this $$type`); - return exemptMilestones; - } - const exemptMilestones = words_to_list_1.wordsToList(this._options.exemptIssueMilestones); - this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptIssueMilestones)} is set. ${logger_service_1.LoggerService.cyan(exemptMilestones.length)} milestone${exemptMilestones.length === 1 ? '' : 's'} can skip the stale process for this $$type`); - return exemptMilestones; - } - _getExemptPullRequestMilestones() { - if (this._options.exemptPrMilestones === '') { - this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptPrMilestones)} is disabled. No specific milestone can skip the stale process for this $$type`); - if (this._options.exemptMilestones === '') { - this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptMilestones)} is disabled. No specific milestone can skip the stale process for this $$type`); - return []; - } - const exemptMilestones = words_to_list_1.wordsToList(this._options.exemptMilestones); - this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptMilestones)} is set. ${logger_service_1.LoggerService.cyan(exemptMilestones.length)} milestone${exemptMilestones.length === 1 ? '' : 's'} can skip the stale process for this $$type`); - return exemptMilestones; - } - const exemptMilestones = words_to_list_1.wordsToList(this._options.exemptPrMilestones); - this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptPrMilestones)} is set. ${logger_service_1.LoggerService.cyan(exemptMilestones.length)} milestone${exemptMilestones.length === 1 ? '' : 's'} can skip the stale process for this $$type`); - return exemptMilestones; - } - _hasMilestone(milestone) { - if (!this._issue.milestone) { - return false; - } - const cleanMilestone = Milestones._cleanMilestone(milestone); - const isSameMilestone = cleanMilestone === - Milestones._cleanMilestone(this._issue.milestone.title); - if (isSameMilestone) { - this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The milestone "${logger_service_1.LoggerService.cyan(milestone)}" is set on this $$type and is an exempt milestone`); - } - return isSameMilestone; - } - _shouldExemptAllMilestones() { - if (this._issue.milestone) { - return this._issue.isPullRequest - ? this._shouldExemptAllPullRequestMilestones() - : this._shouldExemptAllIssueMilestones(); - } - return false; - } - _shouldExemptAllIssueMilestones() { - if (this._options.exemptAllIssueMilestones === true) { - this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAllIssueMilestones)} is enabled. Any milestone on this $$type will skip the stale process`); - return true; - } - else if (this._options.exemptAllIssueMilestones === false) { - this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAllIssueMilestones)} is disabled. Only some specific milestones on this $$type will skip the stale process`); - return false; - } - this._logExemptAllMilestonesOption(); - return this._options.exemptAllMilestones; - } - _shouldExemptAllPullRequestMilestones() { - if (this._options.exemptAllPrMilestones === true) { - this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAllPrMilestones)} is enabled. Any milestone on this $$type will skip the stale process`); - return true; - } - else if (this._options.exemptAllPrMilestones === false) { - this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAllPrMilestones)} is disabled. Only some specific milestones on this $$type will skip the stale process`); - return false; - } - this._logExemptAllMilestonesOption(); - return this._options.exemptAllMilestones; - } - _logExemptAllMilestonesOption() { - if (this._options.exemptAllMilestones) { - this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAllMilestones)} is enabled. Any milestone on this $$type will skip the stale process`); - } - else { - this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAllMilestones)} is disabled. Only some specific milestones on this $$type will skip the stale process`); - } - } - _logSkip() { - this._issueLogger.info(logger_service_1.LoggerService.white('└──'), 'Skip the milestones checks'); - } -} -exports.Milestones = Milestones; + +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Milestones = void 0; +const lodash_deburr_1 = __importDefault(__nccwpck_require__(1601)); +const option_1 = __nccwpck_require__(5931); +const words_to_list_1 = __nccwpck_require__(1883); +const issue_logger_1 = __nccwpck_require__(2984); +const logger_service_1 = __nccwpck_require__(1973); +class Milestones { + constructor(options, issue) { + this._options = options; + this._issue = issue; + this._issueLogger = new issue_logger_1.IssueLogger(issue); + } + static _cleanMilestone(milestone) { + return lodash_deburr_1.default(milestone.toLowerCase()); + } + shouldExemptMilestones() { + if (!this._issue.milestone) { + this._issueLogger.info('This $$type has no milestone'); + this._logSkip(); + return false; + } + if (this._shouldExemptAllMilestones()) { + this._issueLogger.info(logger_service_1.LoggerService.white('└──'), 'Skipping this $$type because it has a milestone'); + return true; + } + const exemptMilestones = this._getExemptMilestones(); + if (exemptMilestones.length === 0) { + this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `No milestone option was specified to skip the stale process for this $$type`); + this._logSkip(); + return false; + } + this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `Found ${logger_service_1.LoggerService.cyan(exemptMilestones.length)} milestone${exemptMilestones.length > 1 ? 's' : ''} that can exempt stale on this $$type`); + const hasExemptMilestone = exemptMilestones.some((exemptMilestone) => this._hasMilestone(exemptMilestone)); + if (!hasExemptMilestone) { + this._issueLogger.info(logger_service_1.LoggerService.white('├──'), 'No milestone on this $$type can exempt the stale process'); + this._logSkip(); + } + else { + this._issueLogger.info(logger_service_1.LoggerService.white('└──'), 'Skipping this $$type because it has an exempt milestone'); + } + return hasExemptMilestone; + } + _getExemptMilestones() { + return this._issue.isPullRequest + ? this._getExemptPullRequestMilestones() + : this._getExemptIssueMilestones(); + } + _getExemptIssueMilestones() { + if (this._options.exemptIssueMilestones === '') { + this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptIssueMilestones)} is disabled. No specific milestone can skip the stale process for this $$type`); + if (this._options.exemptMilestones === '') { + this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptMilestones)} is disabled. No specific milestone can skip the stale process for this $$type`); + return []; + } + const exemptMilestones = words_to_list_1.wordsToList(this._options.exemptMilestones); + this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptMilestones)} is set. ${logger_service_1.LoggerService.cyan(exemptMilestones.length)} milestone${exemptMilestones.length === 1 ? '' : 's'} can skip the stale process for this $$type`); + return exemptMilestones; + } + const exemptMilestones = words_to_list_1.wordsToList(this._options.exemptIssueMilestones); + this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptIssueMilestones)} is set. ${logger_service_1.LoggerService.cyan(exemptMilestones.length)} milestone${exemptMilestones.length === 1 ? '' : 's'} can skip the stale process for this $$type`); + return exemptMilestones; + } + _getExemptPullRequestMilestones() { + if (this._options.exemptPrMilestones === '') { + this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptPrMilestones)} is disabled. No specific milestone can skip the stale process for this $$type`); + if (this._options.exemptMilestones === '') { + this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptMilestones)} is disabled. No specific milestone can skip the stale process for this $$type`); + return []; + } + const exemptMilestones = words_to_list_1.wordsToList(this._options.exemptMilestones); + this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptMilestones)} is set. ${logger_service_1.LoggerService.cyan(exemptMilestones.length)} milestone${exemptMilestones.length === 1 ? '' : 's'} can skip the stale process for this $$type`); + return exemptMilestones; + } + const exemptMilestones = words_to_list_1.wordsToList(this._options.exemptPrMilestones); + this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptPrMilestones)} is set. ${logger_service_1.LoggerService.cyan(exemptMilestones.length)} milestone${exemptMilestones.length === 1 ? '' : 's'} can skip the stale process for this $$type`); + return exemptMilestones; + } + _hasMilestone(milestone) { + if (!this._issue.milestone) { + return false; + } + const cleanMilestone = Milestones._cleanMilestone(milestone); + const isSameMilestone = cleanMilestone === + Milestones._cleanMilestone(this._issue.milestone.title); + if (isSameMilestone) { + this._issueLogger.info(logger_service_1.LoggerService.white('├──'), `The milestone "${logger_service_1.LoggerService.cyan(milestone)}" is set on this $$type and is an exempt milestone`); + } + return isSameMilestone; + } + _shouldExemptAllMilestones() { + if (this._issue.milestone) { + return this._issue.isPullRequest + ? this._shouldExemptAllPullRequestMilestones() + : this._shouldExemptAllIssueMilestones(); + } + return false; + } + _shouldExemptAllIssueMilestones() { + if (this._options.exemptAllIssueMilestones === true) { + this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAllIssueMilestones)} is enabled. Any milestone on this $$type will skip the stale process`); + return true; + } + else if (this._options.exemptAllIssueMilestones === false) { + this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAllIssueMilestones)} is disabled. Only some specific milestones on this $$type will skip the stale process`); + return false; + } + this._logExemptAllMilestonesOption(); + return this._options.exemptAllMilestones; + } + _shouldExemptAllPullRequestMilestones() { + if (this._options.exemptAllPrMilestones === true) { + this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAllPrMilestones)} is enabled. Any milestone on this $$type will skip the stale process`); + return true; + } + else if (this._options.exemptAllPrMilestones === false) { + this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAllPrMilestones)} is disabled. Only some specific milestones on this $$type will skip the stale process`); + return false; + } + this._logExemptAllMilestonesOption(); + return this._options.exemptAllMilestones; + } + _logExemptAllMilestonesOption() { + if (this._options.exemptAllMilestones) { + this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAllMilestones)} is enabled. Any milestone on this $$type will skip the stale process`); + } + else { + this._issueLogger.info(`The option ${this._issueLogger.createOptionLink(option_1.Option.ExemptAllMilestones)} is disabled. Only some specific milestones on this $$type will skip the stale process`); + } + } + _logSkip() { + this._issueLogger.info(logger_service_1.LoggerService.white('└──'), 'Skip the milestones checks'); + } +} +exports.Milestones = Milestones; /***/ }), @@ -1403,25 +1371,25 @@ exports.Milestones = Milestones; /***/ ((__unused_webpack_module, exports) => { "use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.Operations = void 0; -class Operations { - constructor() { - this._operationsConsumed = 0; - } - consumeOperation() { - return this.consumeOperations(1); - } - consumeOperations(quantity) { - this._operationsConsumed += quantity; - return this; - } - getConsumedOperationsCount() { - return this._operationsConsumed; - } -} -exports.Operations = Operations; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Operations = void 0; +class Operations { + constructor() { + this._operationsConsumed = 0; + } + consumeOperation() { + return this.consumeOperations(1); + } + consumeOperations(quantity) { + this._operationsConsumed += quantity; + return this; + } + getConsumedOperationsCount() { + return this._operationsConsumed; + } +} +exports.Operations = Operations; /***/ }), @@ -1430,23 +1398,23 @@ exports.Operations = Operations; /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.StaleOperations = void 0; -const operations_1 = __nccwpck_require__(7957); -class StaleOperations extends operations_1.Operations { - constructor(options) { - super(); - this._options = options; - } - hasRemainingOperations() { - return this._operationsConsumed < this._options.operationsPerRun; - } - getRemainingOperationsCount() { - return this._options.operationsPerRun - this._operationsConsumed; - } -} -exports.StaleOperations = StaleOperations; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.StaleOperations = void 0; +const operations_1 = __nccwpck_require__(7957); +class StaleOperations extends operations_1.Operations { + constructor(options) { + super(); + this._options = options; + } + hasRemainingOperations() { + return this._operationsConsumed < this._options.operationsPerRun; + } + getRemainingOperationsCount() { + return this._options.operationsPerRun - this._operationsConsumed; + } +} +exports.StaleOperations = StaleOperations; /***/ }), @@ -1455,364 +1423,364 @@ exports.StaleOperations = StaleOperations; /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.Statistics = void 0; -const logger_1 = __nccwpck_require__(6212); -const logger_service_1 = __nccwpck_require__(1973); -class Statistics { - constructor() { - this._logger = new logger_1.Logger(); - this.processedIssuesCount = 0; - this.processedPullRequestsCount = 0; - this.staleIssuesCount = 0; - this.stalePullRequestsCount = 0; - this.undoStaleIssuesCount = 0; - this.undoStalePullRequestsCount = 0; - this.operationsCount = 0; - this.closedIssuesCount = 0; - this.closedPullRequestsCount = 0; - this.deletedIssuesLabelsCount = 0; - this.deletedPullRequestsLabelsCount = 0; - this.deletedCloseIssuesLabelsCount = 0; - this.deletedClosePullRequestsLabelsCount = 0; - this.deletedBranchesCount = 0; - this.addedIssuesLabelsCount = 0; - this.addedPullRequestsLabelsCount = 0; - this.addedIssuesCommentsCount = 0; - this.addedPullRequestsCommentsCount = 0; - this.fetchedItemsCount = 0; - this.fetchedItemsEventsCount = 0; - this.fetchedItemsCommentsCount = 0; - this.fetchedPullRequestsCount = 0; - } - incrementProcessedItemsCount(issue, increment = 1) { - if (issue.isPullRequest) { - return this._incrementProcessedPullRequestsCount(increment); - } - return this._incrementProcessedIssuesCount(increment); - } - incrementStaleItemsCount(issue, increment = 1) { - if (issue.isPullRequest) { - return this._incrementStalePullRequestsCount(increment); - } - return this._incrementStaleIssuesCount(increment); - } - incrementUndoStaleItemsCount(issue, increment = 1) { - if (issue.isPullRequest) { - return this._incrementUndoStalePullRequestsCount(increment); - } - return this._incrementUndoStaleIssuesCount(increment); - } - setOperationsCount(operationsCount) { - this.operationsCount = operationsCount; - return this; - } - incrementClosedItemsCount(issue, increment = 1) { - if (issue.isPullRequest) { - return this._incrementClosedPullRequestsCount(increment); - } - return this._incrementClosedIssuesCount(increment); - } - incrementDeletedItemsLabelsCount(issue, increment = 1) { - if (issue.isPullRequest) { - return this._incrementDeletedPullRequestsLabelsCount(increment); - } - return this._incrementDeletedIssuesLabelsCount(increment); - } - incrementDeletedCloseItemsLabelsCount(issue, increment = 1) { - if (issue.isPullRequest) { - return this._incrementDeletedClosePullRequestsLabelsCount(increment); - } - return this._incrementDeletedCloseIssuesLabelsCount(increment); - } - incrementDeletedBranchesCount(increment = 1) { - this.deletedBranchesCount += increment; - return this; - } - incrementAddedItemsLabel(issue, increment = 1) { - if (issue.isPullRequest) { - return this._incrementAddedPullRequestsLabel(increment); - } - return this._incrementAddedIssuesLabel(increment); - } - incrementAddedItemsComment(issue, increment = 1) { - if (issue.isPullRequest) { - return this._incrementAddedPullRequestsComment(increment); - } - return this._incrementAddedIssuesComment(increment); - } - incrementFetchedItemsCount(increment = 1) { - this.fetchedItemsCount += increment; - return this; - } - incrementFetchedItemsEventsCount(increment = 1) { - this.fetchedItemsEventsCount += increment; - return this; - } - incrementFetchedItemsCommentsCount(increment = 1) { - this.fetchedItemsCommentsCount += increment; - return this; - } - incrementFetchedPullRequestsCount(increment = 1) { - this.fetchedPullRequestsCount += increment; - return this; - } - logStats() { - this._logger.info(logger_service_1.LoggerService.yellow(logger_service_1.LoggerService.bold(`Statistics:`))); - this._logProcessedIssuesAndPullRequestsCount(); - this._logStaleIssuesAndPullRequestsCount(); - this._logUndoStaleIssuesAndPullRequestsCount(); - this._logClosedIssuesAndPullRequestsCount(); - this._logDeletedIssuesAndPullRequestsLabelsCount(); - this._logDeletedCloseIssuesAndPullRequestsLabelsCount(); - this._logDeletedBranchesCount(); - this._logAddedIssuesAndPullRequestsLabelsCount(); - this._logAddedIssuesAndPullRequestsCommentsCount(); - this._logFetchedItemsCount(); - this._logFetchedItemsEventsCount(); - this._logFetchedItemsCommentsCount(); - this._logFetchedPullRequestsCount(); - this._logOperationsCount(); - return this; - } - _incrementProcessedIssuesCount(increment = 1) { - this.processedIssuesCount += increment; - return this; - } - _incrementProcessedPullRequestsCount(increment = 1) { - this.processedPullRequestsCount += increment; - return this; - } - _incrementStaleIssuesCount(increment = 1) { - this.staleIssuesCount += increment; - return this; - } - _incrementStalePullRequestsCount(increment = 1) { - this.stalePullRequestsCount += increment; - return this; - } - _incrementUndoStaleIssuesCount(increment = 1) { - this.undoStaleIssuesCount += increment; - return this; - } - _incrementUndoStalePullRequestsCount(increment = 1) { - this.undoStalePullRequestsCount += increment; - return this; - } - _incrementClosedIssuesCount(increment = 1) { - this.closedIssuesCount += increment; - return this; - } - _incrementClosedPullRequestsCount(increment = 1) { - this.closedPullRequestsCount += increment; - return this; - } - _incrementDeletedIssuesLabelsCount(increment = 1) { - this.deletedIssuesLabelsCount += increment; - return this; - } - _incrementDeletedPullRequestsLabelsCount(increment = 1) { - this.deletedPullRequestsLabelsCount += increment; - return this; - } - _incrementDeletedCloseIssuesLabelsCount(increment = 1) { - this.deletedCloseIssuesLabelsCount += increment; - return this; - } - _incrementDeletedClosePullRequestsLabelsCount(increment = 1) { - this.deletedClosePullRequestsLabelsCount += increment; - return this; - } - _incrementAddedIssuesLabel(increment = 1) { - this.addedIssuesLabelsCount += increment; - return this; - } - _incrementAddedPullRequestsLabel(increment = 1) { - this.addedPullRequestsLabelsCount += increment; - return this; - } - _incrementAddedIssuesComment(increment = 1) { - this.addedIssuesCommentsCount += increment; - return this; - } - _incrementAddedPullRequestsComment(increment = 1) { - this.addedPullRequestsCommentsCount += increment; - return this; - } - _logProcessedIssuesAndPullRequestsCount() { - this._logGroup('Processed items', [ - { - name: 'Processed issues', - count: this.processedIssuesCount - }, - { - name: 'Processed PRs', - count: this.processedPullRequestsCount - } - ]); - } - _logStaleIssuesAndPullRequestsCount() { - this._logGroup('New stale items', [ - { - name: 'New stale issues', - count: this.staleIssuesCount - }, - { - name: 'New stale PRs', - count: this.stalePullRequestsCount - } - ]); - } - _logUndoStaleIssuesAndPullRequestsCount() { - this._logGroup('No longer stale items', [ - { - name: 'No longer stale issues', - count: this.undoStaleIssuesCount - }, - { - name: 'No longer stale PRs', - count: this.undoStalePullRequestsCount - } - ]); - } - _logClosedIssuesAndPullRequestsCount() { - this._logGroup('Closed items', [ - { - name: 'Closed issues', - count: this.closedIssuesCount - }, - { - name: 'Closed PRs', - count: this.closedPullRequestsCount - } - ]); - } - _logDeletedIssuesAndPullRequestsLabelsCount() { - this._logGroup('Deleted items labels', [ - { - name: 'Deleted issues labels', - count: this.deletedIssuesLabelsCount - }, - { - name: 'Deleted PRs labels', - count: this.deletedPullRequestsLabelsCount - } - ]); - } - _logDeletedCloseIssuesAndPullRequestsLabelsCount() { - this._logGroup('Deleted close items labels', [ - { - name: 'Deleted close issues labels', - count: this.deletedCloseIssuesLabelsCount - }, - { - name: 'Deleted close PRs labels', - count: this.deletedClosePullRequestsLabelsCount - } - ]); - } - _logDeletedBranchesCount() { - this._logCount('Deleted branches', this.deletedBranchesCount); - } - _logAddedIssuesAndPullRequestsLabelsCount() { - this._logGroup('Added items labels', [ - { - name: 'Added issues labels', - count: this.addedIssuesLabelsCount - }, - { - name: 'Added PRs labels', - count: this.addedPullRequestsLabelsCount - } - ]); - } - _logAddedIssuesAndPullRequestsCommentsCount() { - this._logGroup('Added items comments', [ - { - name: 'Added issues comments', - count: this.addedIssuesCommentsCount - }, - { - name: 'Added PRs comments', - count: this.addedPullRequestsCommentsCount - } - ]); - } - _logFetchedItemsCount() { - this._logCount('Fetched items', this.fetchedItemsCount); - } - _logFetchedItemsEventsCount() { - this._logCount('Fetched items events', this.fetchedItemsEventsCount); - } - _logFetchedItemsCommentsCount() { - this._logCount('Fetched items comments', this.fetchedItemsCommentsCount); - } - _logFetchedPullRequestsCount() { - this._logCount('Fetched pull requests', this.fetchedPullRequestsCount); - } - _logOperationsCount() { - this._logCount('Operations performed', this.operationsCount); - } - _logCount(name, count) { - if (count > 0) { - this._logger.info(`${name}:`, logger_service_1.LoggerService.cyan(count)); - } - } - _logGroup(groupName, values) { - if (this._isGroupValuesPartiallySet(values)) { - this._logCount(groupName, this._getGroupValuesTotalCount(values)); - this._logGroupValues(values); - } - else { - // Only one value will be display - for (const value of values) { - this._logCount(value.name, value.count); - } - } - } - /** - * @private - * @description - * If there is a least two elements with a valid count then it's partially set - * Useful to defined if we should display the values as a group or not - * - * @param {IGroupValue[]} values The list of group values to check - */ - _isGroupValuesPartiallySet(values) { - return (values - .map((value) => { - return value.count > 0; - }) - .filter((isSet) => isSet).length >= 2); - } - _getGroupValuesTotalCount(values) { - return values.reduce((count, value) => { - return count + value.count; - }, 0); - } - _getAllGroupValuesSet(values) { - return values.filter((value) => { - return value.count > 0; - }); - } - _logGroupValues(values) { - const onlyValuesSet = this._getAllGroupValuesSet(values); - const longestValue = this._getLongestGroupValue(onlyValuesSet); - for (const [index, value] of onlyValuesSet.entries()) { - const prefix = index === onlyValuesSet.length - 1 ? '└──' : '├──'; - this._logCount(`${logger_service_1.LoggerService.white(prefix)} ${value.name.padEnd(longestValue, ' ')}`, value.count); - } - } - _getLongestGroupValue(values) { - return values.reduce((longestValue, value) => { - return value.name.length > longestValue - ? value.name.length - : longestValue; - }, 0); - } -} -exports.Statistics = Statistics; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Statistics = void 0; +const logger_1 = __nccwpck_require__(6212); +const logger_service_1 = __nccwpck_require__(1973); +class Statistics { + constructor() { + this._logger = new logger_1.Logger(); + this.processedIssuesCount = 0; + this.processedPullRequestsCount = 0; + this.staleIssuesCount = 0; + this.stalePullRequestsCount = 0; + this.undoStaleIssuesCount = 0; + this.undoStalePullRequestsCount = 0; + this.operationsCount = 0; + this.closedIssuesCount = 0; + this.closedPullRequestsCount = 0; + this.deletedIssuesLabelsCount = 0; + this.deletedPullRequestsLabelsCount = 0; + this.deletedCloseIssuesLabelsCount = 0; + this.deletedClosePullRequestsLabelsCount = 0; + this.deletedBranchesCount = 0; + this.addedIssuesLabelsCount = 0; + this.addedPullRequestsLabelsCount = 0; + this.addedIssuesCommentsCount = 0; + this.addedPullRequestsCommentsCount = 0; + this.fetchedItemsCount = 0; + this.fetchedItemsEventsCount = 0; + this.fetchedItemsCommentsCount = 0; + this.fetchedPullRequestsCount = 0; + } + incrementProcessedItemsCount(issue, increment = 1) { + if (issue.isPullRequest) { + return this._incrementProcessedPullRequestsCount(increment); + } + return this._incrementProcessedIssuesCount(increment); + } + incrementStaleItemsCount(issue, increment = 1) { + if (issue.isPullRequest) { + return this._incrementStalePullRequestsCount(increment); + } + return this._incrementStaleIssuesCount(increment); + } + incrementUndoStaleItemsCount(issue, increment = 1) { + if (issue.isPullRequest) { + return this._incrementUndoStalePullRequestsCount(increment); + } + return this._incrementUndoStaleIssuesCount(increment); + } + setOperationsCount(operationsCount) { + this.operationsCount = operationsCount; + return this; + } + incrementClosedItemsCount(issue, increment = 1) { + if (issue.isPullRequest) { + return this._incrementClosedPullRequestsCount(increment); + } + return this._incrementClosedIssuesCount(increment); + } + incrementDeletedItemsLabelsCount(issue, increment = 1) { + if (issue.isPullRequest) { + return this._incrementDeletedPullRequestsLabelsCount(increment); + } + return this._incrementDeletedIssuesLabelsCount(increment); + } + incrementDeletedCloseItemsLabelsCount(issue, increment = 1) { + if (issue.isPullRequest) { + return this._incrementDeletedClosePullRequestsLabelsCount(increment); + } + return this._incrementDeletedCloseIssuesLabelsCount(increment); + } + incrementDeletedBranchesCount(increment = 1) { + this.deletedBranchesCount += increment; + return this; + } + incrementAddedItemsLabel(issue, increment = 1) { + if (issue.isPullRequest) { + return this._incrementAddedPullRequestsLabel(increment); + } + return this._incrementAddedIssuesLabel(increment); + } + incrementAddedItemsComment(issue, increment = 1) { + if (issue.isPullRequest) { + return this._incrementAddedPullRequestsComment(increment); + } + return this._incrementAddedIssuesComment(increment); + } + incrementFetchedItemsCount(increment = 1) { + this.fetchedItemsCount += increment; + return this; + } + incrementFetchedItemsEventsCount(increment = 1) { + this.fetchedItemsEventsCount += increment; + return this; + } + incrementFetchedItemsCommentsCount(increment = 1) { + this.fetchedItemsCommentsCount += increment; + return this; + } + incrementFetchedPullRequestsCount(increment = 1) { + this.fetchedPullRequestsCount += increment; + return this; + } + logStats() { + this._logger.info(logger_service_1.LoggerService.yellow(logger_service_1.LoggerService.bold(`Statistics:`))); + this._logProcessedIssuesAndPullRequestsCount(); + this._logStaleIssuesAndPullRequestsCount(); + this._logUndoStaleIssuesAndPullRequestsCount(); + this._logClosedIssuesAndPullRequestsCount(); + this._logDeletedIssuesAndPullRequestsLabelsCount(); + this._logDeletedCloseIssuesAndPullRequestsLabelsCount(); + this._logDeletedBranchesCount(); + this._logAddedIssuesAndPullRequestsLabelsCount(); + this._logAddedIssuesAndPullRequestsCommentsCount(); + this._logFetchedItemsCount(); + this._logFetchedItemsEventsCount(); + this._logFetchedItemsCommentsCount(); + this._logFetchedPullRequestsCount(); + this._logOperationsCount(); + return this; + } + _incrementProcessedIssuesCount(increment = 1) { + this.processedIssuesCount += increment; + return this; + } + _incrementProcessedPullRequestsCount(increment = 1) { + this.processedPullRequestsCount += increment; + return this; + } + _incrementStaleIssuesCount(increment = 1) { + this.staleIssuesCount += increment; + return this; + } + _incrementStalePullRequestsCount(increment = 1) { + this.stalePullRequestsCount += increment; + return this; + } + _incrementUndoStaleIssuesCount(increment = 1) { + this.undoStaleIssuesCount += increment; + return this; + } + _incrementUndoStalePullRequestsCount(increment = 1) { + this.undoStalePullRequestsCount += increment; + return this; + } + _incrementClosedIssuesCount(increment = 1) { + this.closedIssuesCount += increment; + return this; + } + _incrementClosedPullRequestsCount(increment = 1) { + this.closedPullRequestsCount += increment; + return this; + } + _incrementDeletedIssuesLabelsCount(increment = 1) { + this.deletedIssuesLabelsCount += increment; + return this; + } + _incrementDeletedPullRequestsLabelsCount(increment = 1) { + this.deletedPullRequestsLabelsCount += increment; + return this; + } + _incrementDeletedCloseIssuesLabelsCount(increment = 1) { + this.deletedCloseIssuesLabelsCount += increment; + return this; + } + _incrementDeletedClosePullRequestsLabelsCount(increment = 1) { + this.deletedClosePullRequestsLabelsCount += increment; + return this; + } + _incrementAddedIssuesLabel(increment = 1) { + this.addedIssuesLabelsCount += increment; + return this; + } + _incrementAddedPullRequestsLabel(increment = 1) { + this.addedPullRequestsLabelsCount += increment; + return this; + } + _incrementAddedIssuesComment(increment = 1) { + this.addedIssuesCommentsCount += increment; + return this; + } + _incrementAddedPullRequestsComment(increment = 1) { + this.addedPullRequestsCommentsCount += increment; + return this; + } + _logProcessedIssuesAndPullRequestsCount() { + this._logGroup('Processed items', [ + { + name: 'Processed issues', + count: this.processedIssuesCount + }, + { + name: 'Processed PRs', + count: this.processedPullRequestsCount + } + ]); + } + _logStaleIssuesAndPullRequestsCount() { + this._logGroup('New stale items', [ + { + name: 'New stale issues', + count: this.staleIssuesCount + }, + { + name: 'New stale PRs', + count: this.stalePullRequestsCount + } + ]); + } + _logUndoStaleIssuesAndPullRequestsCount() { + this._logGroup('No longer stale items', [ + { + name: 'No longer stale issues', + count: this.undoStaleIssuesCount + }, + { + name: 'No longer stale PRs', + count: this.undoStalePullRequestsCount + } + ]); + } + _logClosedIssuesAndPullRequestsCount() { + this._logGroup('Closed items', [ + { + name: 'Closed issues', + count: this.closedIssuesCount + }, + { + name: 'Closed PRs', + count: this.closedPullRequestsCount + } + ]); + } + _logDeletedIssuesAndPullRequestsLabelsCount() { + this._logGroup('Deleted items labels', [ + { + name: 'Deleted issues labels', + count: this.deletedIssuesLabelsCount + }, + { + name: 'Deleted PRs labels', + count: this.deletedPullRequestsLabelsCount + } + ]); + } + _logDeletedCloseIssuesAndPullRequestsLabelsCount() { + this._logGroup('Deleted close items labels', [ + { + name: 'Deleted close issues labels', + count: this.deletedCloseIssuesLabelsCount + }, + { + name: 'Deleted close PRs labels', + count: this.deletedClosePullRequestsLabelsCount + } + ]); + } + _logDeletedBranchesCount() { + this._logCount('Deleted branches', this.deletedBranchesCount); + } + _logAddedIssuesAndPullRequestsLabelsCount() { + this._logGroup('Added items labels', [ + { + name: 'Added issues labels', + count: this.addedIssuesLabelsCount + }, + { + name: 'Added PRs labels', + count: this.addedPullRequestsLabelsCount + } + ]); + } + _logAddedIssuesAndPullRequestsCommentsCount() { + this._logGroup('Added items comments', [ + { + name: 'Added issues comments', + count: this.addedIssuesCommentsCount + }, + { + name: 'Added PRs comments', + count: this.addedPullRequestsCommentsCount + } + ]); + } + _logFetchedItemsCount() { + this._logCount('Fetched items', this.fetchedItemsCount); + } + _logFetchedItemsEventsCount() { + this._logCount('Fetched items events', this.fetchedItemsEventsCount); + } + _logFetchedItemsCommentsCount() { + this._logCount('Fetched items comments', this.fetchedItemsCommentsCount); + } + _logFetchedPullRequestsCount() { + this._logCount('Fetched pull requests', this.fetchedPullRequestsCount); + } + _logOperationsCount() { + this._logCount('Operations performed', this.operationsCount); + } + _logCount(name, count) { + if (count > 0) { + this._logger.info(`${name}:`, logger_service_1.LoggerService.cyan(count)); + } + } + _logGroup(groupName, values) { + if (this._isGroupValuesPartiallySet(values)) { + this._logCount(groupName, this._getGroupValuesTotalCount(values)); + this._logGroupValues(values); + } + else { + // Only one value will be display + for (const value of values) { + this._logCount(value.name, value.count); + } + } + } + /** + * @private + * @description + * If there is a least two elements with a valid count then it's partially set + * Useful to defined if we should display the values as a group or not + * + * @param {IGroupValue[]} values The list of group values to check + */ + _isGroupValuesPartiallySet(values) { + return (values + .map((value) => { + return value.count > 0; + }) + .filter((isSet) => isSet).length >= 2); + } + _getGroupValuesTotalCount(values) { + return values.reduce((count, value) => { + return count + value.count; + }, 0); + } + _getAllGroupValuesSet(values) { + return values.filter((value) => { + return value.count > 0; + }); + } + _logGroupValues(values) { + const onlyValuesSet = this._getAllGroupValuesSet(values); + const longestValue = this._getLongestGroupValue(onlyValuesSet); + for (const [index, value] of onlyValuesSet.entries()) { + const prefix = index === onlyValuesSet.length - 1 ? '└──' : '├──'; + this._logCount(`${logger_service_1.LoggerService.white(prefix)} ${value.name.padEnd(longestValue, ' ')}`, value.count); + } + } + _getLongestGroupValue(values) { + return values.reduce((longestValue, value) => { + return value.name.length > longestValue + ? value.name.length + : longestValue; + }, 0); + } +} +exports.Statistics = Statistics; /***/ }), @@ -1821,60 +1789,58 @@ exports.Statistics = Statistics; /***/ ((__unused_webpack_module, exports) => { "use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.Option = void 0; -var Option; -(function (Option) { - Option["RepoToken"] = "repo-token"; - Option["StaleIssueMessage"] = "stale-issue-message"; - Option["StalePrMessage"] = "stale-pr-message"; - Option["CloseIssueMessage"] = "close-issue-message"; - Option["ClosePrMessage"] = "close-pr-message"; - Option["DaysBeforeStale"] = "days-before-stale"; - Option["DaysBeforeIssueStale"] = "days-before-issue-stale"; - Option["DaysBeforePrStale"] = "days-before-pr-stale"; - Option["DaysBeforeClose"] = "days-before-close"; - Option["DaysBeforeIssueClose"] = "days-before-issue-close"; - Option["DaysBeforePrClose"] = "days-before-pr-close"; - Option["StaleIssueLabel"] = "stale-issue-label"; - Option["CloseIssueLabel"] = "close-issue-label"; - Option["ExemptIssueLabels"] = "exempt-issue-labels"; - Option["StalePrLabel"] = "stale-pr-label"; - Option["ClosePrLabel"] = "close-pr-label"; - Option["ExemptPrLabels"] = "exempt-pr-labels"; - Option["OnlyLabels"] = "only-labels"; - Option["OnlyIssueLabels"] = "only-issue-labels"; - Option["OnlyPrLabels"] = "only-pr-labels"; - Option["AnyOfLabels"] = "any-of-labels"; - Option["OperationsPerRun"] = "operations-per-run"; - Option["RemoveStaleWhenUpdated"] = "remove-stale-when-updated"; - Option["RemoveIssueStaleWhenUpdated"] = "remove-issue-stale-when-updated"; - Option["RemovePrStaleWhenUpdated"] = "remove-pr-stale-when-updated"; - Option["DebugOnly"] = "debug-only"; - Option["Ascending"] = "ascending"; - Option["DeleteBranch"] = "delete-branch"; - Option["StartDate"] = "start-date"; - Option["ExemptMilestones"] = "exempt-milestones"; - Option["ExemptIssueMilestones"] = "exempt-issue-milestones"; - Option["ExemptPrMilestones"] = "exempt-pr-milestones"; - Option["ExemptAllMilestones"] = "exempt-all-milestones"; - Option["ExemptAllIssueMilestones"] = "exempt-all-issue-milestones"; - Option["ExemptAllPrMilestones"] = "exempt-all-pr-milestones"; - Option["ExemptAssignees"] = "exempt-assignees"; - Option["ExemptIssueAssignees"] = "exempt-issue-assignees"; - Option["ExemptPrAssignees"] = "exempt-pr-assignees"; - Option["ExemptAllAssignees"] = "exempt-all-assignees"; - Option["ExemptAllIssueAssignees"] = "exempt-all-issue-assignees"; - Option["ExemptAllPrAssignees"] = "exempt-all-pr-assignees"; - Option["EnableStatistics"] = "enable-statistics"; - Option["LabelsToRemoveWhenUnstale"] = "labels-to-remove-when-unstale"; - Option["LabelsToAddWhenUnstale"] = "labels-to-add-when-unstale"; - Option["IgnoreUpdates"] = "ignore-updates"; - Option["IgnoreIssueUpdates"] = "ignore-issue-updates"; - Option["IgnorePrUpdates"] = "ignore-pr-updates"; - Option["ExemptDraftPr"] = "exempt-draft-pr"; -})(Option = exports.Option || (exports.Option = {})); + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Option = void 0; +var Option; +(function (Option) { + Option["RepoToken"] = "repo-token"; + Option["StaleIssueMessage"] = "stale-issue-message"; + Option["StalePrMessage"] = "stale-pr-message"; + Option["CloseIssueMessage"] = "close-issue-message"; + Option["ClosePrMessage"] = "close-pr-message"; + Option["DaysBeforeStale"] = "days-before-stale"; + Option["DaysBeforeIssueStale"] = "days-before-issue-stale"; + Option["DaysBeforePrStale"] = "days-before-pr-stale"; + Option["DaysBeforeClose"] = "days-before-close"; + Option["DaysBeforeIssueClose"] = "days-before-issue-close"; + Option["DaysBeforePrClose"] = "days-before-pr-close"; + Option["StaleIssueLabel"] = "stale-issue-label"; + Option["CloseIssueLabel"] = "close-issue-label"; + Option["ExemptIssueLabels"] = "exempt-issue-labels"; + Option["StalePrLabel"] = "stale-pr-label"; + Option["ClosePrLabel"] = "close-pr-label"; + Option["ExemptPrLabels"] = "exempt-pr-labels"; + Option["OnlyLabels"] = "only-labels"; + Option["OnlyIssueLabels"] = "only-issue-labels"; + Option["OnlyPrLabels"] = "only-pr-labels"; + Option["AnyOfLabels"] = "any-of-labels"; + Option["OperationsPerRun"] = "operations-per-run"; + Option["RemoveStaleWhenUpdated"] = "remove-stale-when-updated"; + Option["RemoveIssueStaleWhenUpdated"] = "remove-issue-stale-when-updated"; + Option["RemovePrStaleWhenUpdated"] = "remove-pr-stale-when-updated"; + Option["DebugOnly"] = "debug-only"; + Option["Ascending"] = "ascending"; + Option["DeleteBranch"] = "delete-branch"; + Option["StartDate"] = "start-date"; + Option["ExemptMilestones"] = "exempt-milestones"; + Option["ExemptIssueMilestones"] = "exempt-issue-milestones"; + Option["ExemptPrMilestones"] = "exempt-pr-milestones"; + Option["ExemptAllMilestones"] = "exempt-all-milestones"; + Option["ExemptAllIssueMilestones"] = "exempt-all-issue-milestones"; + Option["ExemptAllPrMilestones"] = "exempt-all-pr-milestones"; + Option["ExemptAssignees"] = "exempt-assignees"; + Option["ExemptIssueAssignees"] = "exempt-issue-assignees"; + Option["ExemptPrAssignees"] = "exempt-pr-assignees"; + Option["ExemptAllIssueAssignees"] = "exempt-all-issue-assignees"; + Option["ExemptAllPrAssignees"] = "exempt-all-pr-assignees"; + Option["EnableStatistics"] = "enable-statistics"; + Option["LabelsToRemoveWhenUnstale"] = "labels-to-remove-when-unstale"; + Option["LabelsToAddWhenUnstale"] = "labels-to-add-when-unstale"; + Option["IgnoreIssueUpdates"] = "ignore-issue-updates"; + Option["IgnorePrUpdates"] = "ignore-pr-updates"; + Option["ExemptDraftPr"] = "exempt-draft-pr"; +})(Option = exports.Option || (exports.Option = {})); /***/ }), @@ -1883,25 +1849,25 @@ var Option; /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; - -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.cleanLabel = void 0; -const lodash_deburr_1 = __importDefault(__nccwpck_require__(1601)); -/** - * @description - * Clean a label by lowercasing it and deburring it for consistency - * - * @param {string} label A raw GitHub label - * - * @return {string} A lowercased, deburred version of the passed in label - */ -function cleanLabel(label) { - return lodash_deburr_1.default(label.toLowerCase()); -} -exports.cleanLabel = cleanLabel; + +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.cleanLabel = void 0; +const lodash_deburr_1 = __importDefault(__nccwpck_require__(1601)); +/** + * @description + * Clean a label by lowercasing it and deburring it for consistency + * + * @param {string} label A raw GitHub label + * + * @return {string} A lowercased, deburred version of the passed in label + */ +function cleanLabel(label) { + return lodash_deburr_1.default(label.toLowerCase()); +} +exports.cleanLabel = cleanLabel; /***/ }), @@ -1910,22 +1876,22 @@ exports.cleanLabel = cleanLabel; /***/ ((__unused_webpack_module, exports) => { "use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getHumanizedDate = void 0; -function getHumanizedDate(date) { - const year = date.getFullYear(); - let month = `${date.getMonth() + 1}`; - let day = `${date.getDate()}`; - if (month.length < 2) { - month = `0${month}`; - } - if (day.length < 2) { - day = `0${day}`; - } - return [day, month, year].join('-'); -} -exports.getHumanizedDate = getHumanizedDate; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getHumanizedDate = void 0; +function getHumanizedDate(date) { + const year = date.getFullYear(); + let month = `${date.getMonth() + 1}`; + let day = `${date.getDate()}`; + if (month.length < 2) { + month = `0${month}`; + } + if (day.length < 2) { + day = `0${day}`; + } + return [day, month, year].join('-'); +} +exports.getHumanizedDate = getHumanizedDate; /***/ }), @@ -1934,13 +1900,13 @@ exports.getHumanizedDate = getHumanizedDate; /***/ ((__unused_webpack_module, exports) => { "use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.isDateMoreRecentThan = void 0; -function isDateMoreRecentThan(date, comparedDate) { - return date > comparedDate; -} -exports.isDateMoreRecentThan = isDateMoreRecentThan; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.isDateMoreRecentThan = void 0; +function isDateMoreRecentThan(date, comparedDate) { + return date > comparedDate; +} +exports.isDateMoreRecentThan = isDateMoreRecentThan; /***/ }), @@ -1949,27 +1915,27 @@ exports.isDateMoreRecentThan = isDateMoreRecentThan; /***/ ((__unused_webpack_module, exports) => { "use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.isValidDate = void 0; -/** - * @description - * Check if a date is valid - * - * @see - * https://stackoverflow.com/a/1353711/4440414 - * - * @param {Readonly} date The date to check - * - * @returns {boolean} true when the given date is valid - */ -function isValidDate(date) { - if (Object.prototype.toString.call(date) === '[object Date]') { - return !isNaN(date.getTime()); - } - return false; -} -exports.isValidDate = isValidDate; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.isValidDate = void 0; +/** + * @description + * Check if a date is valid + * + * @see + * https://stackoverflow.com/a/1353711/4440414 + * + * @param {Readonly} date The date to check + * + * @returns {boolean} true when the given date is valid + */ +function isValidDate(date) { + if (Object.prototype.toString.call(date) === '[object Date]') { + return !isNaN(date.getTime()); + } + return false; +} +exports.isValidDate = isValidDate; /***/ }), @@ -1978,13 +1944,13 @@ exports.isValidDate = isValidDate; /***/ ((__unused_webpack_module, exports) => { "use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.isBoolean = void 0; -function isBoolean(value) { - return value === true || value === false; -} -exports.isBoolean = isBoolean; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.isBoolean = void 0; +function isBoolean(value) { + return value === true || value === false; +} +exports.isBoolean = isBoolean; /***/ }), @@ -1993,25 +1959,25 @@ exports.isBoolean = isBoolean; /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.isLabeled = void 0; -const clean_label_1 = __nccwpck_require__(7752); -/** - * @description - * Check if the given label is listed as a label of the given issue - * - * @param {Readonly} issue A GitHub issue containing some labels - * @param {Readonly} label The label to check the presence with - * - * @return {boolean} Return true when the given label is also in the given issue labels - */ -function isLabeled(issue, label) { - return !!issue.labels.find((issueLabel) => { - return clean_label_1.cleanLabel(label) === clean_label_1.cleanLabel(issueLabel.name); - }); -} -exports.isLabeled = isLabeled; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.isLabeled = void 0; +const clean_label_1 = __nccwpck_require__(7752); +/** + * @description + * Check if the given label is listed as a label of the given issue + * + * @param {Readonly} issue A GitHub issue containing some labels + * @param {Readonly} label The label to check the presence with + * + * @return {boolean} Return true when the given label is also in the given issue labels + */ +function isLabeled(issue, label) { + return !!issue.labels.find((issueLabel) => { + return clean_label_1.cleanLabel(label) === clean_label_1.cleanLabel(issueLabel.name); + }); +} +exports.isLabeled = isLabeled; /***/ }), @@ -2020,13 +1986,13 @@ exports.isLabeled = isLabeled; /***/ ((__unused_webpack_module, exports) => { "use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.isPullRequest = void 0; -function isPullRequest(issue) { - return !!issue.pull_request; -} -exports.isPullRequest = isPullRequest; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.isPullRequest = void 0; +function isPullRequest(issue) { + return !!issue.pull_request; +} +exports.isPullRequest = isPullRequest; /***/ }), @@ -2035,13 +2001,13 @@ exports.isPullRequest = isPullRequest; /***/ ((__unused_webpack_module, exports) => { "use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.shouldMarkWhenStale = void 0; -function shouldMarkWhenStale(daysBeforeStale) { - return daysBeforeStale >= 0; -} -exports.shouldMarkWhenStale = shouldMarkWhenStale; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.shouldMarkWhenStale = void 0; +function shouldMarkWhenStale(daysBeforeStale) { + return daysBeforeStale >= 0; +} +exports.shouldMarkWhenStale = shouldMarkWhenStale; /***/ }), @@ -2050,32 +2016,32 @@ exports.shouldMarkWhenStale = shouldMarkWhenStale; /***/ ((__unused_webpack_module, exports) => { "use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.wordsToList = void 0; -/** - * @description - * Transform a string of comma separated words - * to an array of words - * - * @example - * wordsToList('label') => ['label'] - * wordsToList('label,label') => ['label', 'label'] - * wordsToList('kebab-label') => ['kebab-label'] - * wordsToList('kebab%20label') => ['kebab%20label'] - * wordsToList('label with words') => ['label with words'] - * - * @param {Readonly} words A string of comma separated words - * - * @return {string[]} A list of words - */ -function wordsToList(words) { - if (!words.length) { - return []; - } - return words.split(',').map((word) => word.trim()); -} -exports.wordsToList = wordsToList; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.wordsToList = void 0; +/** + * @description + * Transform a string of comma separated words + * to an array of words + * + * @example + * wordsToList('label') => ['label'] + * wordsToList('label,label') => ['label', 'label'] + * wordsToList('kebab-label') => ['kebab-label'] + * wordsToList('kebab%20label') => ['kebab%20label'] + * wordsToList('label with words') => ['label with words'] + * + * @param {Readonly} words A string of comma separated words + * + * @return {string[]} A list of words + */ +function wordsToList(words) { + if (!words.length) { + return []; + } + return words.split(',').map((word) => word.trim()); +} +exports.wordsToList = wordsToList; /***/ }), @@ -2084,159 +2050,157 @@ exports.wordsToList = wordsToList; /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -const core = __importStar(__nccwpck_require__(2186)); -const issues_processor_1 = __nccwpck_require__(3292); -const is_valid_date_1 = __nccwpck_require__(891); -function _run() { - return __awaiter(this, void 0, void 0, function* () { - try { - const args = _getAndValidateArgs(); - const issueProcessor = new issues_processor_1.IssuesProcessor(args); - yield issueProcessor.processIssues(); - yield processOutput(issueProcessor.staleIssues, issueProcessor.closedIssues); - } - catch (error) { - core.error(error); - core.setFailed(error.message); - } - }); -} -function _getAndValidateArgs() { - const args = { - repoToken: core.getInput('repo-token'), - staleIssueMessage: core.getInput('stale-issue-message'), - stalePrMessage: core.getInput('stale-pr-message'), - closeIssueMessage: core.getInput('close-issue-message'), - closePrMessage: core.getInput('close-pr-message'), - daysBeforeStale: parseInt(core.getInput('days-before-stale', { required: true })), - daysBeforeIssueStale: parseInt(core.getInput('days-before-issue-stale')), - daysBeforePrStale: parseInt(core.getInput('days-before-pr-stale')), - daysBeforeClose: parseInt(core.getInput('days-before-close', { required: true })), - daysBeforeIssueClose: parseInt(core.getInput('days-before-issue-close')), - daysBeforePrClose: parseInt(core.getInput('days-before-pr-close')), - staleIssueLabel: core.getInput('stale-issue-label', { required: true }), - closeIssueLabel: core.getInput('close-issue-label'), - exemptIssueLabels: core.getInput('exempt-issue-labels'), - stalePrLabel: core.getInput('stale-pr-label', { required: true }), - closePrLabel: core.getInput('close-pr-label'), - exemptPrLabels: core.getInput('exempt-pr-labels'), - onlyLabels: core.getInput('only-labels'), - onlyIssueLabels: core.getInput('only-issue-labels'), - onlyPrLabels: core.getInput('only-pr-labels'), - anyOfLabels: core.getInput('any-of-labels'), - anyOfIssueLabels: core.getInput('any-of-issue-labels'), - anyOfPrLabels: core.getInput('any-of-pr-labels'), - operationsPerRun: parseInt(core.getInput('operations-per-run', { required: true })), - removeStaleWhenUpdated: !(core.getInput('remove-stale-when-updated') === 'false'), - removeIssueStaleWhenUpdated: _toOptionalBoolean('remove-issue-stale-when-updated'), - removePrStaleWhenUpdated: _toOptionalBoolean('remove-pr-stale-when-updated'), - debugOnly: core.getInput('debug-only') === 'true', - ascending: core.getInput('ascending') === 'true', - deleteBranch: core.getInput('delete-branch') === 'true', - startDate: core.getInput('start-date') !== '' - ? core.getInput('start-date') - : undefined, - exemptMilestones: core.getInput('exempt-milestones'), - exemptIssueMilestones: core.getInput('exempt-issue-milestones'), - exemptPrMilestones: core.getInput('exempt-pr-milestones'), - exemptAllMilestones: core.getInput('exempt-all-milestones') === 'true', - exemptAllIssueMilestones: _toOptionalBoolean('exempt-all-issue-milestones'), - exemptAllPrMilestones: _toOptionalBoolean('exempt-all-pr-milestones'), - exemptAssignees: core.getInput('exempt-assignees'), - exemptIssueAssignees: core.getInput('exempt-issue-assignees'), - exemptPrAssignees: core.getInput('exempt-pr-assignees'), - exemptAllAssignees: core.getInput('exempt-all-assignees') === 'true', - exemptAllIssueAssignees: _toOptionalBoolean('exempt-all-issue-assignees'), - exemptAllPrAssignees: _toOptionalBoolean('exempt-all-pr-assignees'), - enableStatistics: core.getInput('enable-statistics') === 'true', - labelsToRemoveWhenUnstale: core.getInput('labels-to-remove-when-unstale'), - labelsToAddWhenUnstale: core.getInput('labels-to-add-when-unstale'), - ignoreUpdates: core.getInput('ignore-updates') === 'true', - ignoreIssueUpdates: _toOptionalBoolean('ignore-issue-updates'), - ignorePrUpdates: _toOptionalBoolean('ignore-pr-updates'), - exemptDraftPr: core.getInput('exempt-draft-pr') === 'true' - }; - for (const numberInput of [ - 'days-before-stale', - 'days-before-close', - 'operations-per-run' - ]) { - if (isNaN(parseInt(core.getInput(numberInput)))) { - const errorMessage = `Option "${numberInput}" did not parse to a valid integer`; - core.setFailed(errorMessage); - throw new Error(errorMessage); - } - } - for (const optionalDateInput of ['start-date']) { - // Ignore empty dates because it is considered as the right type for a default value (so a valid one) - if (core.getInput(optionalDateInput) !== '') { - if (!is_valid_date_1.isValidDate(new Date(core.getInput(optionalDateInput)))) { - const errorMessage = `Option "${optionalDateInput}" did not parse to a valid date`; - core.setFailed(errorMessage); - throw new Error(errorMessage); - } - } - } - return args; -} -function processOutput(staledIssues, closedIssues) { - return __awaiter(this, void 0, void 0, function* () { - core.setOutput('staled-issues-prs', JSON.stringify(staledIssues)); - core.setOutput('closed-issues-prs', JSON.stringify(closedIssues)); - }); -} -/** - * @description - * From an argument name, get the value as an optional boolean - * This is very useful for all the arguments that override others - * It will allow us to easily use the original one when the return value is `undefined` - * Which is different from `true` or `false` that consider the argument as set - * - * @param {Readonly} argumentName The name of the argument to check - * - * @returns {boolean | undefined} The value matching the given argument name - */ -function _toOptionalBoolean(argumentName) { - const argument = core.getInput(argumentName); - if (argument === 'true') { - return true; - } - else if (argument === 'false') { - return false; - } - return undefined; -} -void _run(); + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +const core = __importStar(__nccwpck_require__(2186)); +const issues_processor_1 = __nccwpck_require__(3292); +const is_valid_date_1 = __nccwpck_require__(891); +function _run() { + return __awaiter(this, void 0, void 0, function* () { + try { + const args = _getAndValidateArgs(); + const issueProcessor = new issues_processor_1.IssuesProcessor(args); + yield issueProcessor.processIssues(); + yield processOutput(issueProcessor.staleIssues, issueProcessor.closedIssues); + } + catch (error) { + core.error(error); + core.setFailed(error.message); + } + }); +} +function _getAndValidateArgs() { + const args = { + repoToken: core.getInput('repo-token'), + staleIssueMessage: core.getInput('stale-issue-message'), + stalePrMessage: core.getInput('stale-pr-message'), + closeIssueMessage: core.getInput('close-issue-message'), + closePrMessage: core.getInput('close-pr-message'), + daysBeforeStale: parseInt(core.getInput('days-before-stale', { required: true })), + daysBeforeIssueStale: parseInt(core.getInput('days-before-issue-stale')), + daysBeforePrStale: parseInt(core.getInput('days-before-pr-stale')), + daysBeforeClose: parseInt(core.getInput('days-before-close', { required: true })), + daysBeforeIssueClose: parseInt(core.getInput('days-before-issue-close')), + daysBeforePrClose: parseInt(core.getInput('days-before-pr-close')), + staleIssueLabel: core.getInput('stale-issue-label', { required: true }), + closeIssueLabel: core.getInput('close-issue-label'), + exemptIssueLabels: core.getInput('exempt-issue-labels'), + stalePrLabel: core.getInput('stale-pr-label', { required: true }), + closePrLabel: core.getInput('close-pr-label'), + exemptPrLabels: core.getInput('exempt-pr-labels'), + onlyLabels: core.getInput('only-labels'), + onlyIssueLabels: core.getInput('only-issue-labels'), + onlyPrLabels: core.getInput('only-pr-labels'), + anyOfLabels: core.getInput('any-of-labels'), + anyOfIssueLabels: core.getInput('any-of-issue-labels'), + anyOfPrLabels: core.getInput('any-of-pr-labels'), + operationsPerRun: parseInt(core.getInput('operations-per-run', { required: true })), + removeStaleWhenUpdated: !(core.getInput('remove-stale-when-updated') === 'false'), + removeIssueStaleWhenUpdated: _toOptionalBoolean('remove-issue-stale-when-updated'), + removePrStaleWhenUpdated: _toOptionalBoolean('remove-pr-stale-when-updated'), + debugOnly: core.getInput('debug-only') === 'true', + ascending: core.getInput('ascending') === 'true', + deleteBranch: core.getInput('delete-branch') === 'true', + startDate: core.getInput('start-date') !== '' + ? core.getInput('start-date') + : undefined, + exemptMilestones: core.getInput('exempt-milestones'), + exemptIssueMilestones: core.getInput('exempt-issue-milestones'), + exemptPrMilestones: core.getInput('exempt-pr-milestones'), + exemptAllMilestones: core.getInput('exempt-all-milestones') === 'true', + exemptAllIssueMilestones: _toOptionalBoolean('exempt-all-issue-milestones'), + exemptAllPrMilestones: _toOptionalBoolean('exempt-all-pr-milestones'), + exemptAssignees: core.getInput('exempt-assignees'), + exemptIssueAssignees: core.getInput('exempt-issue-assignees'), + exemptPrAssignees: core.getInput('exempt-pr-assignees'), + exemptAllIssueAssignees: core.getInput('exempt-all-issue-assignees') === 'true', + exemptAllPrAssignees: core.getInput('exempt-all-pr-assignees') === 'true', + enableStatistics: core.getInput('enable-statistics') === 'true', + labelsToRemoveWhenUnstale: core.getInput('labels-to-remove-when-unstale'), + labelsToAddWhenUnstale: core.getInput('labels-to-add-when-unstale'), + ignoreIssueUpdates: core.getInput('ignore-issue-updates') === 'true', + ignorePrUpdates: core.getInput('ignore-pr-updates') === 'true', + exemptDraftPr: core.getInput('exempt-draft-pr') === 'true' + }; + for (const numberInput of [ + 'days-before-stale', + 'days-before-close', + 'operations-per-run' + ]) { + if (isNaN(parseInt(core.getInput(numberInput)))) { + const errorMessage = `Option "${numberInput}" did not parse to a valid integer`; + core.setFailed(errorMessage); + throw new Error(errorMessage); + } + } + for (const optionalDateInput of ['start-date']) { + // Ignore empty dates because it is considered as the right type for a default value (so a valid one) + if (core.getInput(optionalDateInput) !== '') { + if (!is_valid_date_1.isValidDate(new Date(core.getInput(optionalDateInput)))) { + const errorMessage = `Option "${optionalDateInput}" did not parse to a valid date`; + core.setFailed(errorMessage); + throw new Error(errorMessage); + } + } + } + return args; +} +function processOutput(staledIssues, closedIssues) { + return __awaiter(this, void 0, void 0, function* () { + core.setOutput('staled-issues-prs', JSON.stringify(staledIssues)); + core.setOutput('closed-issues-prs', JSON.stringify(closedIssues)); + }); +} +/** + * @description + * From an argument name, get the value as an optional boolean + * This is very useful for all the arguments that override others + * It will allow us to easily use the original one when the return value is `undefined` + * Which is different from `true` or `false` that consider the argument as set + * + * @param {Readonly} argumentName The name of the argument to check + * + * @returns {boolean | undefined} The value matching the given argument name + */ +function _toOptionalBoolean(argumentName) { + const argument = core.getInput(argumentName); + if (argument === 'true') { + return true; + } + else if (argument === 'false') { + return false; + } + return undefined; +} +void _run(); /***/ }), @@ -2245,49 +2209,49 @@ void _run(); /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; - -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.LoggerService = void 0; -const ansi_styles_1 = __importDefault(__nccwpck_require__(2068)); -class LoggerService { - static whiteBright(message) { - return this._format(message, 'whiteBright'); - } - static yellowBright(message) { - return this._format(message, 'yellowBright'); - } - static magenta(message) { - return this._format(message, 'magenta'); - } - static cyan(message) { - return this._format(message, 'cyan'); - } - static yellow(message) { - return this._format(message, 'yellow'); - } - static white(message) { - return this._format(message, 'white'); - } - static green(message) { - return this._format(message, 'green'); - } - static red(message) { - return this._format(message, 'red'); - } - static blue(message) { - return this._format(message, 'blue'); - } - static bold(message) { - return this._format(message, 'bold'); - } - static _format(message, style) { - return `${ansi_styles_1.default[style].open}${message}${ansi_styles_1.default[style].close}`; - } -} -exports.LoggerService = LoggerService; + +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.LoggerService = void 0; +const ansi_styles_1 = __importDefault(__nccwpck_require__(2068)); +class LoggerService { + static whiteBright(message) { + return this._format(message, 'whiteBright'); + } + static yellowBright(message) { + return this._format(message, 'yellowBright'); + } + static magenta(message) { + return this._format(message, 'magenta'); + } + static cyan(message) { + return this._format(message, 'cyan'); + } + static yellow(message) { + return this._format(message, 'yellow'); + } + static white(message) { + return this._format(message, 'white'); + } + static green(message) { + return this._format(message, 'green'); + } + static red(message) { + return this._format(message, 'red'); + } + static blue(message) { + return this._format(message, 'blue'); + } + static bold(message) { + return this._format(message, 'bold'); + } + static _format(message, style) { + return `${ansi_styles_1.default[style].open}${message}${ansi_styles_1.default[style].close}`; + } +} +exports.LoggerService = LoggerService; /***/ }), diff --git a/src/classes/assignees.spec.ts b/src/classes/assignees.spec.ts index c74666f6..0a5feb39 100644 --- a/src/classes/assignees.spec.ts +++ b/src/classes/assignees.spec.ts @@ -14,7 +14,8 @@ describe('Assignees', (): void => { beforeEach((): void => { optionsInterface = { ...DefaultProcessorOptions, - exemptAllAssignees: false + exemptAllIssueAssignees: false, + exemptAllPrAssignees: false }; issueInterface = generateIIssue(); }); @@ -316,9 +317,9 @@ describe('Assignees', (): void => { }); }); - describe('when the given options are configured to exempt all assignees', (): void => { + describe('when the given options are not configured to exempt all issue assignees', (): void => { beforeEach((): void => { - optionsInterface.exemptAllAssignees = true; + optionsInterface.exemptAllIssueAssignees = false; }); describe('when the given issue does not have an assignee', (): void => { @@ -347,6 +348,49 @@ describe('Assignees', (): void => { ]; }); + it('should return false', (): void => { + expect.assertions(1); + issue = new Issue(optionsInterface, issueInterface); + assignees = new Assignees(optionsInterface, issue); + + const result = assignees.shouldExemptAssignees(); + + expect(result).toStrictEqual(false); + }); + }); + }); + + describe('when the given options are configured to exempt all issue assignees', (): void => { + beforeEach((): void => { + optionsInterface.exemptAllIssueAssignees = true; + }); + + describe('when the given issue does not have an assignee', (): void => { + beforeEach((): void => { + issueInterface.assignees = []; + }); + + it('should return false', (): void => { + expect.assertions(1); + issue = new Issue(optionsInterface, issueInterface); + assignees = new Assignees(optionsInterface, issue); + + const result = assignees.shouldExemptAssignees(); + + expect(result).toStrictEqual(false); + }); + }); + + describe('when the given issue does have an assignee', (): void => { + beforeEach((): void => { + issueInterface.assignees = [ + { + login: 'dummy-exempt-issue-assignee', + type: 'User' + } + ]; + }); + it('should return true', (): void => { expect.assertions(1); issue = new Issue(optionsInterface, issueInterface); @@ -357,92 +401,6 @@ describe('Assignees', (): void => { expect(result).toStrictEqual(true); }); }); - - describe('when the given options are not configured to exempt all issue assignees', (): void => { - beforeEach((): void => { - optionsInterface.exemptAllIssueAssignees = false; - }); - - describe('when the given issue does not have an assignee', (): void => { - beforeEach((): void => { - issueInterface.assignees = []; - }); - - it('should return false', (): void => { - expect.assertions(1); - issue = new Issue(optionsInterface, issueInterface); - assignees = new Assignees(optionsInterface, issue); - - const result = assignees.shouldExemptAssignees(); - - expect(result).toStrictEqual(false); - }); - }); - - describe('when the given issue does have an assignee', (): void => { - beforeEach((): void => { - issueInterface.assignees = [ - { - login: 'dummy-exempt-assignee', - type: 'User' - } - ]; - }); - - it('should return false', (): void => { - expect.assertions(1); - issue = new Issue(optionsInterface, issueInterface); - assignees = new Assignees(optionsInterface, issue); - - const result = assignees.shouldExemptAssignees(); - - expect(result).toStrictEqual(false); - }); - }); - }); - - describe('when the given options are configured to exempt all issue assignees', (): void => { - beforeEach((): void => { - optionsInterface.exemptAllIssueAssignees = true; - }); - - describe('when the given issue does not have an assignee', (): void => { - beforeEach((): void => { - issueInterface.assignees = []; - }); - - it('should return false', (): void => { - expect.assertions(1); - issue = new Issue(optionsInterface, issueInterface); - assignees = new Assignees(optionsInterface, issue); - - const result = assignees.shouldExemptAssignees(); - - expect(result).toStrictEqual(false); - }); - }); - - describe('when the given issue does have an assignee', (): void => { - beforeEach((): void => { - issueInterface.assignees = [ - { - login: 'dummy-exempt-issue-assignee', - type: 'User' - } - ]; - }); - - it('should return true', (): void => { - expect.assertions(1); - issue = new Issue(optionsInterface, issueInterface); - assignees = new Assignees(optionsInterface, issue); - - const result = assignees.shouldExemptAssignees(); - - expect(result).toStrictEqual(true); - }); - }); - }); }); }); @@ -740,9 +698,9 @@ describe('Assignees', (): void => { }); }); - describe('when the given options are configured to exempt all assignees', (): void => { + describe('when the given options are not configured to exempt all pull request assignees', (): void => { beforeEach((): void => { - optionsInterface.exemptAllAssignees = true; + optionsInterface.exemptAllPrAssignees = false; }); describe('when the given pull request does not have an assignee', (): void => { @@ -771,6 +729,49 @@ describe('Assignees', (): void => { ]; }); + it('should return false', (): void => { + expect.assertions(1); + issue = new Issue(optionsInterface, issueInterface); + assignees = new Assignees(optionsInterface, issue); + + const result = assignees.shouldExemptAssignees(); + + expect(result).toStrictEqual(false); + }); + }); + }); + + describe('when the given options are configured to exempt all pull request assignees', (): void => { + beforeEach((): void => { + optionsInterface.exemptAllPrAssignees = true; + }); + + describe('when the given pull request does not have an assignee', (): void => { + beforeEach((): void => { + issueInterface.assignees = []; + }); + + it('should return false', (): void => { + expect.assertions(1); + issue = new Issue(optionsInterface, issueInterface); + assignees = new Assignees(optionsInterface, issue); + + const result = assignees.shouldExemptAssignees(); + + expect(result).toStrictEqual(false); + }); + }); + + describe('when the given pull request does have an assignee', (): void => { + beforeEach((): void => { + issueInterface.assignees = [ + { + login: 'dummy-exempt-issue-assignee', + type: 'User' + } + ]; + }); + it('should return true', (): void => { expect.assertions(1); issue = new Issue(optionsInterface, issueInterface); @@ -781,92 +782,6 @@ describe('Assignees', (): void => { expect(result).toStrictEqual(true); }); }); - - describe('when the given options are not configured to exempt all pull request assignees', (): void => { - beforeEach((): void => { - optionsInterface.exemptAllPrAssignees = false; - }); - - describe('when the given pull request does not have an assignee', (): void => { - beforeEach((): void => { - issueInterface.assignees = []; - }); - - it('should return false', (): void => { - expect.assertions(1); - issue = new Issue(optionsInterface, issueInterface); - assignees = new Assignees(optionsInterface, issue); - - const result = assignees.shouldExemptAssignees(); - - expect(result).toStrictEqual(false); - }); - }); - - describe('when the given pull request does have an assignee', (): void => { - beforeEach((): void => { - issueInterface.assignees = [ - { - login: 'dummy-exempt-assignee', - type: 'User' - } - ]; - }); - - it('should return false', (): void => { - expect.assertions(1); - issue = new Issue(optionsInterface, issueInterface); - assignees = new Assignees(optionsInterface, issue); - - const result = assignees.shouldExemptAssignees(); - - expect(result).toStrictEqual(false); - }); - }); - }); - - describe('when the given options are configured to exempt all pull request assignees', (): void => { - beforeEach((): void => { - optionsInterface.exemptAllPrAssignees = true; - }); - - describe('when the given pull request does not have an assignee', (): void => { - beforeEach((): void => { - issueInterface.assignees = []; - }); - - it('should return false', (): void => { - expect.assertions(1); - issue = new Issue(optionsInterface, issueInterface); - assignees = new Assignees(optionsInterface, issue); - - const result = assignees.shouldExemptAssignees(); - - expect(result).toStrictEqual(false); - }); - }); - - describe('when the given pull request does have an assignee', (): void => { - beforeEach((): void => { - issueInterface.assignees = [ - { - login: 'dummy-exempt-issue-assignee', - type: 'User' - } - ]; - }); - - it('should return true', (): void => { - expect.assertions(1); - issue = new Issue(optionsInterface, issueInterface); - assignees = new Assignees(optionsInterface, issue); - - const result = assignees.shouldExemptAssignees(); - - expect(result).toStrictEqual(true); - }); - }); - }); }); }); }); diff --git a/src/classes/assignees.ts b/src/classes/assignees.ts index c2492377..a1bca173 100644 --- a/src/classes/assignees.ts +++ b/src/classes/assignees.ts @@ -1,290 +1,266 @@ -import deburr from 'lodash.deburr'; -import {Option} from '../enums/option'; -import {wordsToList} from '../functions/words-to-list'; -import {Assignee} from '../interfaces/assignee'; -import {IIssuesProcessorOptions} from '../interfaces/issues-processor-options'; -import {Issue} from './issue'; -import {IssueLogger} from './loggers/issue-logger'; -import {LoggerService} from '../services/logger.service'; - -type CleanAssignee = string; - -export class Assignees { - private readonly _options: IIssuesProcessorOptions; - private readonly _issue: Issue; - private readonly _issueLogger: IssueLogger; - - constructor(options: Readonly, issue: Issue) { - this._options = options; - this._issue = issue; - this._issueLogger = new IssueLogger(issue); - } - - private static _cleanAssignee(assignee: Readonly): CleanAssignee { - return deburr(assignee.toLowerCase()); - } - - shouldExemptAssignees(): boolean { - if (!this._issue.hasAssignees) { - this._issueLogger.info('This $$type has no assignee'); - this._logSkip(); - - return false; - } - - if (this._shouldExemptAllAssignees()) { - this._issueLogger.info( - LoggerService.white('└──'), - 'Skipping this $$type because it has an exempt assignee' - ); - - return true; - } - - const exemptAssignees: string[] = this._getExemptAssignees(); - - if (exemptAssignees.length === 0) { - this._issueLogger.info( - LoggerService.white('├──'), - `No assignee option was specified to skip the stale process for this $$type` - ); - this._logSkip(); - - return false; - } - - this._issueLogger.info( - LoggerService.white('├──'), - `Found ${LoggerService.cyan(exemptAssignees.length)} assignee${ - exemptAssignees.length > 1 ? 's' : '' - } that can exempt stale on this $$type` - ); - - const hasExemptAssignee: boolean = exemptAssignees.some( - (exemptAssignee: Readonly): boolean => - this._hasAssignee(exemptAssignee) - ); - - if (!hasExemptAssignee) { - this._issueLogger.info( - LoggerService.white('├──'), - 'No assignee on this $$type can exempt the stale process' - ); - this._logSkip(); - } else { - this._issueLogger.info( - LoggerService.white('└──'), - 'Skipping this $$type because it has an exempt assignee' - ); - } - - return hasExemptAssignee; - } - - private _getExemptAssignees(): string[] { - return this._issue.isPullRequest - ? this._getExemptPullRequestAssignees() - : this._getExemptIssueAssignees(); - } - - private _getExemptIssueAssignees(): string[] { - if (this._options.exemptIssueAssignees === '') { - this._issueLogger.info( - LoggerService.white('├──'), - `The option ${this._issueLogger.createOptionLink( - Option.ExemptIssueAssignees - )} is disabled. No specific assignee can skip the stale process for this $$type` - ); - - if (this._options.exemptAssignees === '') { - this._issueLogger.info( - LoggerService.white('├──'), - `The option ${this._issueLogger.createOptionLink( - Option.ExemptAssignees - )} is disabled. No specific assignee can skip the stale process for this $$type` - ); - - return []; - } - - const exemptAssignees: string[] = wordsToList( - this._options.exemptAssignees - ); - - this._issueLogger.info( - LoggerService.white('├──'), - `The option ${this._issueLogger.createOptionLink( - Option.ExemptAssignees - )} is set. ${LoggerService.cyan(exemptAssignees.length)} assignee${ - exemptAssignees.length === 1 ? '' : 's' - } can skip the stale process for this $$type` - ); - - return exemptAssignees; - } - - const exemptAssignees: string[] = wordsToList( - this._options.exemptIssueAssignees - ); - - this._issueLogger.info( - LoggerService.white('├──'), - `The option ${this._issueLogger.createOptionLink( - Option.ExemptIssueAssignees - )} is set. ${LoggerService.cyan(exemptAssignees.length)} assignee${ - exemptAssignees.length === 1 ? '' : 's' - } can skip the stale process for this $$type` - ); - - return exemptAssignees; - } - - private _getExemptPullRequestAssignees(): string[] { - if (this._options.exemptPrAssignees === '') { - this._issueLogger.info( - LoggerService.white('├──'), - `The option ${this._issueLogger.createOptionLink( - Option.ExemptPrAssignees - )} is disabled. No specific assignee can skip the stale process for this $$type` - ); - - if (this._options.exemptAssignees === '') { - this._issueLogger.info( - LoggerService.white('├──'), - `The option ${this._issueLogger.createOptionLink( - Option.ExemptAssignees - )} is disabled. No specific assignee can skip the stale process for this $$type` - ); - - return []; - } - - const exemptAssignees: string[] = wordsToList( - this._options.exemptAssignees - ); - - this._issueLogger.info( - LoggerService.white('├──'), - `The option ${this._issueLogger.createOptionLink( - Option.ExemptAssignees - )} is set. ${LoggerService.cyan(exemptAssignees.length)} assignee${ - exemptAssignees.length === 1 ? '' : 's' - } can skip the stale process for this $$type` - ); - - return exemptAssignees; - } - - const exemptAssignees: string[] = wordsToList( - this._options.exemptPrAssignees - ); - - this._issueLogger.info( - LoggerService.white('├──'), - `The option ${this._issueLogger.createOptionLink( - Option.ExemptPrAssignees - )} is set. ${LoggerService.cyan(exemptAssignees.length)} assignee${ - exemptAssignees.length === 1 ? '' : 's' - } can skip the stale process for this $$type` - ); - - return exemptAssignees; - } - - private _hasAssignee(assignee: Readonly): boolean { - const cleanAssignee: CleanAssignee = Assignees._cleanAssignee(assignee); - - return this._issue.assignees.some( - (issueAssignee: Readonly): boolean => { - const isSameAssignee: boolean = - cleanAssignee === Assignees._cleanAssignee(issueAssignee.login); - - if (isSameAssignee) { - this._issueLogger.info( - LoggerService.white('├──'), - `@${issueAssignee.login} is assigned on this $$type and is an exempt assignee` - ); - } - - return isSameAssignee; - } - ); - } - - private _shouldExemptAllAssignees(): boolean { - return this._issue.isPullRequest - ? this._shouldExemptAllPullRequestAssignees() - : this._shouldExemptAllIssueAssignees(); - } - - private _shouldExemptAllIssueAssignees(): boolean { - if (this._options.exemptAllIssueAssignees === true) { - this._issueLogger.info( - `The option ${this._issueLogger.createOptionLink( - Option.ExemptAllIssueAssignees - )} is enabled. Any assignee on this $$type will skip the stale process` - ); - - return true; - } else if (this._options.exemptAllIssueAssignees === false) { - this._issueLogger.info( - `The option ${this._issueLogger.createOptionLink( - Option.ExemptAllIssueAssignees - )} is disabled. Only some specific assignees on this $$type will skip the stale process` - ); - - return false; - } - - this._logExemptAllAssigneesOption(); - - return this._options.exemptAllAssignees; - } - - private _shouldExemptAllPullRequestAssignees(): boolean { - if (this._options.exemptAllPrAssignees === true) { - this._issueLogger.info( - `The option ${this._issueLogger.createOptionLink( - Option.ExemptAllPrAssignees - )} is enabled. Any assignee on this $$type will skip the stale process` - ); - - return true; - } else if (this._options.exemptAllPrAssignees === false) { - this._issueLogger.info( - `The option ${this._issueLogger.createOptionLink( - Option.ExemptAllPrAssignees - )} is disabled. Only some specific assignees on this $$type will skip the stale process` - ); - - return false; - } - - this._logExemptAllAssigneesOption(); - - return this._options.exemptAllAssignees; - } - - private _logExemptAllAssigneesOption(): void { - if (this._options.exemptAllAssignees) { - this._issueLogger.info( - `The option ${this._issueLogger.createOptionLink( - Option.ExemptAllAssignees - )} is enabled. Any assignee on this $$type will skip the stale process` - ); - } else { - this._issueLogger.info( - `The option ${this._issueLogger.createOptionLink( - Option.ExemptAllAssignees - )} is disabled. Only some specific assignees on this $$type will skip the stale process` - ); - } - } - - private _logSkip(): void { - this._issueLogger.info( - LoggerService.white('└──'), - 'Skip the assignees checks' - ); - } -} +import deburr from 'lodash.deburr'; +import {Option} from '../enums/option'; +import {wordsToList} from '../functions/words-to-list'; +import {Assignee} from '../interfaces/assignee'; +import {IIssuesProcessorOptions} from '../interfaces/issues-processor-options'; +import {Issue} from './issue'; +import {IssueLogger} from './loggers/issue-logger'; +import {LoggerService} from '../services/logger.service'; + +type CleanAssignee = string; + +export class Assignees { + private readonly _options: IIssuesProcessorOptions; + private readonly _issue: Issue; + private readonly _issueLogger: IssueLogger; + + constructor(options: Readonly, issue: Issue) { + this._options = options; + this._issue = issue; + this._issueLogger = new IssueLogger(issue); + } + + private static _cleanAssignee(assignee: Readonly): CleanAssignee { + return deburr(assignee.toLowerCase()); + } + + shouldExemptAssignees(): boolean { + if (!this._issue.hasAssignees) { + this._issueLogger.info('This $$type has no assignee'); + this._logSkip(); + + return false; + } + + if (this._shouldExemptAllAssignees()) { + this._issueLogger.info( + LoggerService.white('└──'), + 'Skipping this $$type because it has an exempt assignee' + ); + + return true; + } + + const exemptAssignees: string[] = this._getExemptAssignees(); + + if (exemptAssignees.length === 0) { + this._issueLogger.info( + LoggerService.white('├──'), + `No assignee option was specified to skip the stale process for this $$type` + ); + this._logSkip(); + + return false; + } + + this._issueLogger.info( + LoggerService.white('├──'), + `Found ${LoggerService.cyan(exemptAssignees.length)} assignee${ + exemptAssignees.length > 1 ? 's' : '' + } that can exempt stale on this $$type` + ); + + const hasExemptAssignee: boolean = exemptAssignees.some( + (exemptAssignee: Readonly): boolean => + this._hasAssignee(exemptAssignee) + ); + + if (!hasExemptAssignee) { + this._issueLogger.info( + LoggerService.white('├──'), + 'No assignee on this $$type can exempt the stale process' + ); + this._logSkip(); + } else { + this._issueLogger.info( + LoggerService.white('└──'), + 'Skipping this $$type because it has an exempt assignee' + ); + } + + return hasExemptAssignee; + } + + private _getExemptAssignees(): string[] { + return this._issue.isPullRequest + ? this._getExemptPullRequestAssignees() + : this._getExemptIssueAssignees(); + } + + private _getExemptIssueAssignees(): string[] { + if (this._options.exemptIssueAssignees === '') { + this._issueLogger.info( + LoggerService.white('├──'), + `The option ${this._issueLogger.createOptionLink( + Option.ExemptIssueAssignees + )} is disabled. No specific assignee can skip the stale process for this $$type` + ); + + if (this._options.exemptAssignees === '') { + this._issueLogger.info( + LoggerService.white('├──'), + `The option ${this._issueLogger.createOptionLink( + Option.ExemptAssignees + )} is disabled. No specific assignee can skip the stale process for this $$type` + ); + + return []; + } + + const exemptAssignees: string[] = wordsToList( + this._options.exemptAssignees + ); + + this._issueLogger.info( + LoggerService.white('├──'), + `The option ${this._issueLogger.createOptionLink( + Option.ExemptAssignees + )} is set. ${LoggerService.cyan(exemptAssignees.length)} assignee${ + exemptAssignees.length === 1 ? '' : 's' + } can skip the stale process for this $$type` + ); + + return exemptAssignees; + } + + const exemptAssignees: string[] = wordsToList( + this._options.exemptIssueAssignees + ); + + this._issueLogger.info( + LoggerService.white('├──'), + `The option ${this._issueLogger.createOptionLink( + Option.ExemptIssueAssignees + )} is set. ${LoggerService.cyan(exemptAssignees.length)} assignee${ + exemptAssignees.length === 1 ? '' : 's' + } can skip the stale process for this $$type` + ); + + return exemptAssignees; + } + + private _getExemptPullRequestAssignees(): string[] { + if (this._options.exemptPrAssignees === '') { + this._issueLogger.info( + LoggerService.white('├──'), + `The option ${this._issueLogger.createOptionLink( + Option.ExemptPrAssignees + )} is disabled. No specific assignee can skip the stale process for this $$type` + ); + + if (this._options.exemptAssignees === '') { + this._issueLogger.info( + LoggerService.white('├──'), + `The option ${this._issueLogger.createOptionLink( + Option.ExemptAssignees + )} is disabled. No specific assignee can skip the stale process for this $$type` + ); + + return []; + } + + const exemptAssignees: string[] = wordsToList( + this._options.exemptAssignees + ); + + this._issueLogger.info( + LoggerService.white('├──'), + `The option ${this._issueLogger.createOptionLink( + Option.ExemptAssignees + )} is set. ${LoggerService.cyan(exemptAssignees.length)} assignee${ + exemptAssignees.length === 1 ? '' : 's' + } can skip the stale process for this $$type` + ); + + return exemptAssignees; + } + + const exemptAssignees: string[] = wordsToList( + this._options.exemptPrAssignees + ); + + this._issueLogger.info( + LoggerService.white('├──'), + `The option ${this._issueLogger.createOptionLink( + Option.ExemptPrAssignees + )} is set. ${LoggerService.cyan(exemptAssignees.length)} assignee${ + exemptAssignees.length === 1 ? '' : 's' + } can skip the stale process for this $$type` + ); + + return exemptAssignees; + } + + private _hasAssignee(assignee: Readonly): boolean { + const cleanAssignee: CleanAssignee = Assignees._cleanAssignee(assignee); + + return this._issue.assignees.some( + (issueAssignee: Readonly): boolean => { + const isSameAssignee: boolean = + cleanAssignee === Assignees._cleanAssignee(issueAssignee.login); + + if (isSameAssignee) { + this._issueLogger.info( + LoggerService.white('├──'), + `@${issueAssignee.login} is assigned on this $$type and is an exempt assignee` + ); + } + + return isSameAssignee; + } + ); + } + + private _shouldExemptAllAssignees(): boolean { + return this._issue.isPullRequest + ? this._shouldExemptAllPullRequestAssignees() + : this._shouldExemptAllIssueAssignees(); + } + + private _shouldExemptAllIssueAssignees(): boolean { + if (this._options.exemptAllIssueAssignees) { + this._issueLogger.info( + `The option ${this._issueLogger.createOptionLink( + Option.ExemptAllIssueAssignees + )} is enabled. Any assignee on this $$type will skip the stale process` + ); + + return true; + } + + this._issueLogger.info( + `The option ${this._issueLogger.createOptionLink( + Option.ExemptAllIssueAssignees + )} is disabled. Only some specific assignees on this $$type will skip the stale process` + ); + + return false; + } + + private _shouldExemptAllPullRequestAssignees(): boolean { + if (this._options.exemptAllPrAssignees) { + this._issueLogger.info( + `The option ${this._issueLogger.createOptionLink( + Option.ExemptAllPrAssignees + )} is enabled. Any assignee on this $$type will skip the stale process` + ); + + return true; + } + + this._issueLogger.info( + `The option ${this._issueLogger.createOptionLink( + Option.ExemptAllPrAssignees + )} is disabled. Only some specific assignees on this $$type will skip the stale process` + ); + + return false; + } + + private _logSkip(): void { + this._issueLogger.info( + LoggerService.white('└──'), + 'Skip the assignees checks' + ); + } +} diff --git a/src/classes/issue.spec.ts b/src/classes/issue.spec.ts index 6a361e43..a17f100c 100644 --- a/src/classes/issue.spec.ts +++ b/src/classes/issue.spec.ts @@ -52,9 +52,8 @@ describe('Issue', (): void => { exemptAssignees: '', exemptIssueAssignees: '', exemptPrAssignees: '', - exemptAllAssignees: false, - exemptAllIssueAssignees: undefined, - exemptAllPrAssignees: undefined, + exemptAllIssueAssignees: false, + exemptAllPrAssignees: false, enableStatistics: false, labelsToRemoveWhenUnstale: '', labelsToAddWhenUnstale: '', diff --git a/src/enums/option.ts b/src/enums/option.ts index 0705fe51..916cd84e 100644 --- a/src/enums/option.ts +++ b/src/enums/option.ts @@ -37,7 +37,6 @@ export enum Option { ExemptAssignees = 'exempt-assignees', ExemptIssueAssignees = 'exempt-issue-assignees', ExemptPrAssignees = 'exempt-pr-assignees', - ExemptAllAssignees = 'exempt-all-assignees', ExemptAllIssueAssignees = 'exempt-all-issue-assignees', ExemptAllPrAssignees = 'exempt-all-pr-assignees', EnableStatistics = 'enable-statistics', diff --git a/src/interfaces/issues-processor-options.ts b/src/interfaces/issues-processor-options.ts index ae55689c..9de4c6b5 100644 --- a/src/interfaces/issues-processor-options.ts +++ b/src/interfaces/issues-processor-options.ts @@ -41,9 +41,8 @@ export interface IIssuesProcessorOptions { exemptAssignees: string; exemptIssueAssignees: string; exemptPrAssignees: string; - exemptAllAssignees: boolean; - exemptAllIssueAssignees: boolean | undefined; - exemptAllPrAssignees: boolean | undefined; + exemptAllIssueAssignees: boolean; + exemptAllPrAssignees: boolean; enableStatistics: boolean; labelsToRemoveWhenUnstale: string; labelsToAddWhenUnstale: string; diff --git a/src/main.ts b/src/main.ts index 6f787cb9..eedbf8ed 100644 --- a/src/main.ts +++ b/src/main.ts @@ -78,9 +78,9 @@ function _getAndValidateArgs(): IIssuesProcessorOptions { exemptAssignees: core.getInput('exempt-assignees'), exemptIssueAssignees: core.getInput('exempt-issue-assignees'), exemptPrAssignees: core.getInput('exempt-pr-assignees'), - exemptAllAssignees: core.getInput('exempt-all-assignees') === 'true', - exemptAllIssueAssignees: _toOptionalBoolean('exempt-all-issue-assignees'), - exemptAllPrAssignees: _toOptionalBoolean('exempt-all-pr-assignees'), + exemptAllIssueAssignees: + core.getInput('exempt-all-issue-assignees') === 'true', + exemptAllPrAssignees: core.getInput('exempt-all-pr-assignees') === 'true', enableStatistics: core.getInput('enable-statistics') === 'true', labelsToRemoveWhenUnstale: core.getInput('labels-to-remove-when-unstale'), labelsToAddWhenUnstale: core.getInput('labels-to-add-when-unstale'),