Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit ebbe355

Browse files
committedJul 21, 2024·
Add @tag support
Replace better-use-match by avoid-regexp-include
1 parent 029eb1c commit ebbe355

File tree

10 files changed

+45
-44
lines changed

10 files changed

+45
-44
lines changed
 

‎lib/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ module.exports.configs = {
1919
'userscripts/align-attributes': ['error', 2],
2020
'userscripts/no-invalid-headers': 'error',
2121
'userscripts/no-invalid-grant': 'error',
22-
'userscripts/better-use-match': 'warning'
22+
'userscripts/avoid-regexp-include': 'warning'
2323
}
2424
}
2525
};

‎lib/rules/avoid-regexp-include.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
const createValidator = require('../utils/createValidator');
2+
3+
module.exports = createValidator(
4+
'include',
5+
false,
6+
({ attrVal, context }) => {
7+
const argument = attrVal.val;
8+
if (argument.startsWith('/')) {
9+
context.report({
10+
loc: {
11+
start: {
12+
line: attrVal.loc.start.line,
13+
column: 0
14+
},
15+
end: attrVal.loc.end
16+
},
17+
messageId: 'avoidRegExpInclude'
18+
});
19+
}
20+
},
21+
{
22+
avoidRegExpInclude: "Using a regular expression at '@include' can cause performance issues. Use a regular @include or @match instead."
23+
}
24+
);

‎lib/rules/better-use-match.js

Lines changed: 0 additions & 21 deletions
This file was deleted.

‎lib/rules/no-invalid-headers.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ const validHeaders = new Set(
3838
'sandbox',
3939
'source',
4040
'supportURL',
41+
'tag',
4142
'unwrap',
4243
'updateURL',
4344
'version',

‎lib/rules/require-version.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ module.exports = createValidator(
1010
messageId: 'multipleVersions'
1111
});
1212
}
13-
if (!/^([^.\s]+)(\.[^.\s]*){0,3}\s*$/.test(attrVal.val)) {
13+
if (!/^([^\s.]+)(\.[^\s.]+)*$/.test(attrVal.val)) {
1414
context.report({
1515
loc: {
1616
start: {

‎lib/utils/createValidator.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,12 +86,12 @@ module.exports = function createValidator(
8686
inMetadata = true;
8787
wentInMetadata = true;
8888
} else if (inMetadata && comment.value.trim().startsWith('@')) {
89-
const key = comment.value.trim().slice(1).split(/[ \t]/)[0];
89+
const key = comment.value.trim().slice(1).split(/[\t ]/)[0];
9090
const val = {
9191
val: comment.value
9292
.trim()
9393
.slice(1)
94-
.split(/[ \t]/)
94+
.split(/[\t ]/)
9595
.slice(1)
9696
.join(' ')
9797
.trim(),

‎package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "eslint-plugin-userscripts",
3-
"version": "0.1.1",
3+
"version": "0.2.0",
44
"description": "Implements rules for userscripts metadata in eslint",
55
"keywords": [
66
"eslint",
@@ -22,9 +22,9 @@
2222
"@babel/eslint-parser": "^7.15.8",
2323
"acorn": "^8.5.0",
2424
"eslint": "^8.0.0",
25-
"eslint-plugin-eslint-plugin": "^4.0.0",
26-
"eslint-plugin-import": "^2.24.2",
27-
"eslint-plugin-unicorn": "^37.0.1",
25+
"eslint-plugin-eslint-plugin": ">=4.0.0",
26+
"eslint-plugin-import": ">=2.24.2",
27+
"eslint-plugin-unicorn": ">=37.0.1",
2828
"husky": "^7.0.2",
2929
"mocha": "^9.0.3",
3030
"nyc": "^15.1.0",
@@ -34,7 +34,7 @@
3434
"eslint": ">=6.0.0 <=^8.0.0"
3535
},
3636
"engines": {
37-
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
37+
"node": ">=16.0.0"
3838
},
3939
"license": "MIT",
4040
"homepage": "https://github.com/Yash-Singh1/eslint-plugin-userscripts#readme",
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1-
var rule = require('..')['better-use-match'];
1+
var rule = require('..')['avoid-regexp-include'];
22
var RuleTester = require('eslint').RuleTester;
33

44
var ruleTester = new RuleTester();
5-
ruleTester.run('better-use-match', rule, {
5+
ruleTester.run('avoid-regexp-include', rule, {
66
valid: [
77
`// ==UserScript==
88
// @description This is my description
9-
// @match *://*/*
9+
// @include https://*
1010
// ==/UserScript==`,
1111
],
1212
invalid: [
1313
{
1414
code: `// ==UserScript==
15-
// @include *://*/*
15+
// @include /https?:\\/\\/foo.bar\\/.*/
1616
// ==/UserScript==`,
17-
errors: [{ messageId: 'betterUseMatch' }]
17+
errors: [{ messageId: 'avoidRegExpInclude' }]
1818
}
1919
]
20-
});
20+
});

‎tests/lib/rules/require-version.js

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,10 @@ ruleTester.run('require-version', rule, {
3333
// ==/UserScript==`,
3434
`// ==UserScript==
3535
// @version 1.1.1.1.2.0.1.1.1.1.1
36-
// ==/UserScript==`
36+
// ==/UserScript==`,
37+
`// ==UserScript==
38+
// @version @.€.$
39+
// ==/UserScript==`,
3740
],
3841
invalid: [
3942
{
@@ -73,12 +76,6 @@ ruleTester.run('require-version', rule, {
7376
// @version 5 .6
7477
// ==/UserScript==`,
7578
errors: [{ messageId: 'invalidVersion' }]
76-
},
77-
{
78-
code: `// ==UserScript==
79-
// @version @.€.$
80-
// ==/UserScript==`,
81-
errors: [{ messageId: 'invalidVersion' }]
8279
}
8380
]
8481
});

‎tests/lib/utils/createValidator.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const createValidator = require('../../../lib/utils/createValidator.js');
2-
const assert = require('assert');
2+
const assert = require('node:assert');
33

44
it('should properly generate description', () => {
55
assert.strictEqual(

0 commit comments

Comments
 (0)
Please sign in to comment.