Skip to content

Commit 11cdb2f

Browse files
authored
feat: split up big int functionality (#8)
* feat: split up big int functionality * 0.3.0
1 parent cb3d369 commit 11cdb2f

6 files changed

+85
-31
lines changed

eslint-plugin-hex-under.js

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
11
const hexUnderRule = require("./hex-under");
2-
const plugin = { rules: { "hex-under": hexUnderRule } };
2+
const hexUnderBigintRule = require("./hex-under-bigint");
3+
const plugin = {
4+
rules: {
5+
"hex-under": hexUnderRule,
6+
"hex-under-bigint": hexUnderBigintRule,
7+
},
8+
};
39
module.exports = plugin;

eslint.config.js

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ module.exports = [
99
},
1010
rules: {
1111
"hex-under/hex-under": ["error", { limit: 255 }],
12+
"hex-under/hex-under-bigint": ["warn"],
1213
},
1314
},
1415
];

hex-under-bigint.js

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
module.exports = {
2+
meta: {
3+
type: "suggestion",
4+
version: "0.0.1",
5+
defaultOptions: [
6+
{
7+
limit: 255,
8+
},
9+
],
10+
docs: {
11+
description:
12+
"Proves that a hexadecimal bigint must be less than a specified value. Default is 255.",
13+
},
14+
fixable: "code",
15+
schema: [
16+
{
17+
type: "object",
18+
properties: {
19+
limit: {
20+
type: "integer",
21+
minimum: 1,
22+
},
23+
},
24+
additionalProperties: false,
25+
},
26+
],
27+
messages: {
28+
valueOverGeneralBigInt:
29+
"This bigint must be less than or equal {{ limit }}. {{ overValue }} ({{ over255Raw }}) is greater than {{ limit }}.",
30+
},
31+
},
32+
create(context) {
33+
const limit = context.options[0]?.limit;
34+
return {
35+
onCodePathEnd: function (_codePath, node) {
36+
const tokens =
37+
node.tokens?.filter(
38+
(token) =>
39+
["Numeric", "Identifier"].some((el) => el === token.type) &&
40+
token.value.startsWith("0x") &&
41+
token.value.endsWith("n"),
42+
) || [];
43+
for (const token of tokens) {
44+
const value = parseInt(token.value);
45+
if (value > limit) {
46+
context.report({
47+
node: token,
48+
messageId: "valueOverGeneralBigInt",
49+
data: {
50+
limit: limit,
51+
over255Raw: token.value,
52+
overValue: value,
53+
},
54+
});
55+
}
56+
}
57+
},
58+
};
59+
},
60+
};

hex-under.js

+14-27
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@ module.exports = {
2727
messages: {
2828
valueOverGeneral:
2929
"This number must be less than or equal {{ limit }}. {{ overValue }} ({{ over255Raw }}) is greater than {{ limit }}.",
30-
valueOverGeneralBigInt:
31-
"This bigint must be less than or equal {{ limit }}. {{ overValue }} ({{ over255Raw }}) is greater than {{ limit }}.",
3230
},
3331
},
3432
create(context) {
@@ -39,35 +37,24 @@ module.exports = {
3937
node.tokens?.filter(
4038
(token) =>
4139
["Numeric", "Identifier"].some((el) => el === token.type) &&
42-
token.value.startsWith("0x"),
40+
token.value.startsWith("0x") &&
41+
!token.value.endsWith("n"),
4342
) || [];
4443
for (const token of tokens) {
4544
const value = parseInt(token.value);
4645
if (value > limit) {
47-
if (token.value.endsWith("n")) {
48-
context.report({
49-
node: token,
50-
messageId: "valueOverGeneralBigInt",
51-
data: {
52-
limit: limit,
53-
over255Raw: token.value,
54-
overValue: value,
55-
},
56-
});
57-
} else {
58-
context.report({
59-
node: token,
60-
messageId: "valueOverGeneral",
61-
data: {
62-
limit: limit,
63-
over255Raw: token.value,
64-
overValue: value,
65-
},
66-
fix(fixer) {
67-
return fixer.replaceText(token, value);
68-
},
69-
});
70-
}
46+
context.report({
47+
node: token,
48+
messageId: "valueOverGeneral",
49+
data: {
50+
limit: limit,
51+
over255Raw: token.value,
52+
overValue: value,
53+
},
54+
fix(fixer) {
55+
return fixer.replaceText(token, value);
56+
},
57+
});
7158
}
7259
}
7360
},

package-lock.json

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "eslint-plugin-hex-under",
3-
"version": "0.2.6",
3+
"version": "0.3.0",
44
"main": "eslint-plugin-hex-under.js",
55
"scripts": {
66
"lint": "prettier . --check && eslint .",

0 commit comments

Comments
 (0)