Add eslint-plugin-github and fix issues (#29201)

This plugin has a few useful rules. The only thing I dislike about it is
that it pulls in a rather big number of dependencies for react-related
rules we don't use, but it can't really be avoided.

Rule docs:
https://github.com/github/eslint-plugin-github?tab=readme-ov-file#rules
This commit is contained in:
silverwind 2024-02-16 22:41:23 +01:00 committed by GitHub
parent d8d4b33b31
commit 26b17537e6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 1026 additions and 38 deletions

View File

@ -12,6 +12,7 @@ plugins:
- "@eslint-community/eslint-plugin-eslint-comments" - "@eslint-community/eslint-plugin-eslint-comments"
- "@stylistic/eslint-plugin-js" - "@stylistic/eslint-plugin-js"
- eslint-plugin-array-func - eslint-plugin-array-func
- eslint-plugin-github
- eslint-plugin-i - eslint-plugin-i
- eslint-plugin-jquery - eslint-plugin-jquery
- eslint-plugin-no-jquery - eslint-plugin-no-jquery
@ -209,6 +210,29 @@ rules:
func-names: [0] func-names: [0]
func-style: [0] func-style: [0]
getter-return: [2] getter-return: [2]
github/a11y-aria-label-is-well-formatted: [0]
github/a11y-no-title-attribute: [0]
github/a11y-no-visually-hidden-interactive-element: [0]
github/a11y-role-supports-aria-props: [0]
github/a11y-svg-has-accessible-name: [0]
github/array-foreach: [0]
github/async-currenttarget: [2]
github/async-preventdefault: [2]
github/authenticity-token: [0]
github/get-attribute: [0]
github/js-class-name: [0]
github/no-blur: [0]
github/no-d-none: [0]
github/no-dataset: [2]
github/no-dynamic-script-tag: [2]
github/no-implicit-buggy-globals: [2]
github/no-inner-html: [0]
github/no-innerText: [2]
github/no-then: [2]
github/no-useless-passive: [2]
github/prefer-observers: [2]
github/require-passive-events: [2]
github/unescaped-html-literal: [0]
grouped-accessor-pairs: [2] grouped-accessor-pairs: [2]
guard-for-in: [0] guard-for-in: [0]
id-blacklist: [0] id-blacklist: [0]

View File

@ -79,4 +79,8 @@ async function main() {
]); ]);
} }
main().then(exit).catch(exit); try {
exit(await main());
} catch (err) {
exit(err);
}

View File

@ -63,4 +63,8 @@ async function main() {
]); ]);
} }
main().then(exit).catch(exit); try {
exit(await main());
} catch (err) {
exit(err);
}

954
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -67,6 +67,7 @@
"@vitejs/plugin-vue": "5.0.4", "@vitejs/plugin-vue": "5.0.4",
"eslint": "8.56.0", "eslint": "8.56.0",
"eslint-plugin-array-func": "4.0.0", "eslint-plugin-array-func": "4.0.0",
"eslint-plugin-github": "4.10.1",
"eslint-plugin-i": "2.29.1", "eslint-plugin-i": "2.29.1",
"eslint-plugin-jquery": "1.5.1", "eslint-plugin-jquery": "1.5.1",
"eslint-plugin-no-jquery": "2.7.0", "eslint-plugin-no-jquery": "2.7.0",

View File

@ -194,7 +194,7 @@ export function initRepoCodeView() {
const blob = await $.get(`${url}?${query}&anchor=${anchor}`); const blob = await $.get(`${url}?${query}&anchor=${anchor}`);
currentTarget.closest('tr').outerHTML = blob; currentTarget.closest('tr').outerHTML = blob;
}); });
$(document).on('click', '.copy-line-permalink', async (e) => { $(document).on('click', '.copy-line-permalink', async ({currentTarget}) => {
await clippie(toAbsoluteUrl(e.currentTarget.getAttribute('data-url'))); await clippie(toAbsoluteUrl(currentTarget.getAttribute('data-url')));
}); });
} }

View File

@ -69,16 +69,12 @@ function initRepoIssueListCheckboxes() {
} }
} }
updateIssuesMeta( try {
url, await updateIssuesMeta(url, action, issueIDs, elementId);
action,
issueIDs,
elementId,
).then(() => {
window.location.reload(); window.location.reload();
}).catch((reason) => { } catch (err) {
showErrorToast(reason.responseJSON.error); showErrorToast(err.responseJSON?.error ?? err.message);
}); }
}); });
} }

View File

@ -344,19 +344,15 @@ export async function updateIssuesMeta(url, action, issueIds, elementId) {
export function initRepoIssueComments() { export function initRepoIssueComments() {
if ($('.repository.view.issue .timeline').length === 0) return; if ($('.repository.view.issue .timeline').length === 0) return;
$('.re-request-review').on('click', function (e) { $('.re-request-review').on('click', async function (e) {
e.preventDefault(); e.preventDefault();
const url = $(this).data('update-url'); const url = $(this).data('update-url');
const issueId = $(this).data('issue-id'); const issueId = $(this).data('issue-id');
const id = $(this).data('id'); const id = $(this).data('id');
const isChecked = $(this).hasClass('checked'); const isChecked = $(this).hasClass('checked');
updateIssuesMeta( await updateIssuesMeta(url, isChecked ? 'detach' : 'attach', issueId, id);
url, window.location.reload();
isChecked ? 'detach' : 'attach',
issueId,
id,
).then(() => window.location.reload());
}); });
$(document).on('click', (event) => { $(document).on('click', (event) => {

View File

@ -205,12 +205,15 @@ export function initRepoCommentForm() {
$listMenu.find('.no-select.item').on('click', function (e) { $listMenu.find('.no-select.item').on('click', function (e) {
e.preventDefault(); e.preventDefault();
if (hasUpdateAction) { if (hasUpdateAction) {
updateIssuesMeta( (async () => {
$listMenu.data('update-url'), await updateIssuesMeta(
'clear', $listMenu.data('update-url'),
$listMenu.data('issue-id'), 'clear',
'', $listMenu.data('issue-id'),
).then(reloadConfirmDraftComment); '',
);
reloadConfirmDraftComment();
})();
} }
$(this).parent().find('.item').each(function () { $(this).parent().find('.item').each(function () {
@ -248,12 +251,15 @@ export function initRepoCommentForm() {
$(this).addClass('selected active'); $(this).addClass('selected active');
if (hasUpdateAction) { if (hasUpdateAction) {
updateIssuesMeta( (async () => {
$menu.data('update-url'), await updateIssuesMeta(
'', $menu.data('update-url'),
$menu.data('issue-id'), '',
$(this).data('id'), $menu.data('issue-id'),
).then(reloadConfirmDraftComment); $(this).data('id'),
);
reloadConfirmDraftComment();
})();
} }
let icon = ''; let icon = '';
@ -281,12 +287,15 @@ export function initRepoCommentForm() {
}); });
if (hasUpdateAction) { if (hasUpdateAction) {
updateIssuesMeta( (async () => {
$menu.data('update-url'), await updateIssuesMeta(
'', $menu.data('update-url'),
$menu.data('issue-id'), '',
$(this).data('id'), $menu.data('issue-id'),
).then(reloadConfirmDraftComment); $(this).data('id'),
);
reloadConfirmDraftComment();
})();
} }
$list.find('.selected').html(''); $list.find('.selected').html('');