eslint-plugin-ziloen 0.0.104 → 0.0.106

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,7 +1,97 @@
1
1
  'use strict';
2
2
 
3
+ const utils = require('@typescript-eslint/utils');
4
+
5
+ const createEslintRule = utils.ESLintUtils.RuleCreator((ruleName) => ruleName);
6
+
7
+ const RULE_NAME = "generic-spacing";
8
+ const messageId = "genericSpacingMismatch";
9
+ function spacingAround(node, context) {
10
+ const params = node.params;
11
+ if (!params.length)
12
+ return;
13
+ const sourceCode = context.sourceCode;
14
+ const start = node.range[0] + 1;
15
+ const end = node.range[1] - 1;
16
+ const startNode = params[0];
17
+ const endNode = params.at(-1);
18
+ const textBeforeFirst = sourceCode.text.slice(start, startNode.range[0]);
19
+ const textAfterLast = sourceCode.text.slice(endNode.range[1], end);
20
+ if (textBeforeFirst.length && !textBeforeFirst.includes("\n")) {
21
+ context.report({
22
+ node,
23
+ messageId,
24
+ *fix(fixer) {
25
+ yield fixer.replaceTextRange([start, startNode.range[0]], "");
26
+ }
27
+ });
28
+ }
29
+ if (textAfterLast.length && !textAfterLast.includes("\n")) {
30
+ context.report({
31
+ node,
32
+ messageId,
33
+ *fix(fixer) {
34
+ yield fixer.replaceTextRange([endNode.range[1], end], "");
35
+ },
36
+ loc: {
37
+ start: endNode.loc.end,
38
+ end: {
39
+ column: node.loc.end.column - 1,
40
+ line: node.loc.end.line
41
+ }
42
+ }
43
+ });
44
+ }
45
+ }
46
+ const genericSpacing = createEslintRule({
47
+ name: RULE_NAME,
48
+ meta: {
49
+ type: "layout",
50
+ docs: {
51
+ description: "",
52
+ recommended: "stylistic"
53
+ },
54
+ fixable: "code",
55
+ schema: [],
56
+ messages: {
57
+ genericSpacingMismatch: "spacing mismatch"
58
+ }
59
+ },
60
+ defaultOptions: [],
61
+ create(context) {
62
+ const sourceCode = context.sourceCode;
63
+ return {
64
+ TSTypeParameterDeclaration: (node) => spacingAround(node, context),
65
+ TSTypeParameterInstantiation: (node) => spacingAround(node, context),
66
+ TSTypeParameter(node) {
67
+ if (!node.default)
68
+ return;
69
+ const startNode = node.constraint || node.name;
70
+ const endNode = node.default;
71
+ const start = startNode.range[1];
72
+ const end = endNode.range[0];
73
+ if (sourceCode.text.slice(start, end) !== " = ") {
74
+ context.report({
75
+ node,
76
+ messageId,
77
+ *fix(fixer) {
78
+ yield fixer.replaceTextRange([start, end], " = ");
79
+ },
80
+ loc: {
81
+ start: startNode.loc.end,
82
+ end: endNode.loc.start
83
+ }
84
+ });
85
+ }
86
+ }
87
+ };
88
+ }
89
+ });
90
+
3
91
  const index = {
4
- rules: {}
92
+ rules: {
93
+ "generic-spacing": genericSpacing
94
+ }
5
95
  };
6
96
 
7
97
  module.exports = index;
package/dist/index.mjs CHANGED
@@ -1,5 +1,95 @@
1
+ import { ESLintUtils } from '@typescript-eslint/utils';
2
+
3
+ const createEslintRule = ESLintUtils.RuleCreator((ruleName) => ruleName);
4
+
5
+ const RULE_NAME = "generic-spacing";
6
+ const messageId = "genericSpacingMismatch";
7
+ function spacingAround(node, context) {
8
+ const params = node.params;
9
+ if (!params.length)
10
+ return;
11
+ const sourceCode = context.sourceCode;
12
+ const start = node.range[0] + 1;
13
+ const end = node.range[1] - 1;
14
+ const startNode = params[0];
15
+ const endNode = params.at(-1);
16
+ const textBeforeFirst = sourceCode.text.slice(start, startNode.range[0]);
17
+ const textAfterLast = sourceCode.text.slice(endNode.range[1], end);
18
+ if (textBeforeFirst.length && !textBeforeFirst.includes("\n")) {
19
+ context.report({
20
+ node,
21
+ messageId,
22
+ *fix(fixer) {
23
+ yield fixer.replaceTextRange([start, startNode.range[0]], "");
24
+ }
25
+ });
26
+ }
27
+ if (textAfterLast.length && !textAfterLast.includes("\n")) {
28
+ context.report({
29
+ node,
30
+ messageId,
31
+ *fix(fixer) {
32
+ yield fixer.replaceTextRange([endNode.range[1], end], "");
33
+ },
34
+ loc: {
35
+ start: endNode.loc.end,
36
+ end: {
37
+ column: node.loc.end.column - 1,
38
+ line: node.loc.end.line
39
+ }
40
+ }
41
+ });
42
+ }
43
+ }
44
+ const genericSpacing = createEslintRule({
45
+ name: RULE_NAME,
46
+ meta: {
47
+ type: "layout",
48
+ docs: {
49
+ description: "",
50
+ recommended: "stylistic"
51
+ },
52
+ fixable: "code",
53
+ schema: [],
54
+ messages: {
55
+ genericSpacingMismatch: "spacing mismatch"
56
+ }
57
+ },
58
+ defaultOptions: [],
59
+ create(context) {
60
+ const sourceCode = context.sourceCode;
61
+ return {
62
+ TSTypeParameterDeclaration: (node) => spacingAround(node, context),
63
+ TSTypeParameterInstantiation: (node) => spacingAround(node, context),
64
+ TSTypeParameter(node) {
65
+ if (!node.default)
66
+ return;
67
+ const startNode = node.constraint || node.name;
68
+ const endNode = node.default;
69
+ const start = startNode.range[1];
70
+ const end = endNode.range[0];
71
+ if (sourceCode.text.slice(start, end) !== " = ") {
72
+ context.report({
73
+ node,
74
+ messageId,
75
+ *fix(fixer) {
76
+ yield fixer.replaceTextRange([start, end], " = ");
77
+ },
78
+ loc: {
79
+ start: startNode.loc.end,
80
+ end: endNode.loc.start
81
+ }
82
+ });
83
+ }
84
+ }
85
+ };
86
+ }
87
+ });
88
+
1
89
  const index = {
2
- rules: {}
90
+ rules: {
91
+ "generic-spacing": genericSpacing
92
+ }
3
93
  };
4
94
 
5
95
  export { index as default };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-plugin-ziloen",
3
- "version": "0.0.104",
3
+ "version": "0.0.106",
4
4
  "author": "ziloen",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/ziloen/eslint-config",
@@ -10,17 +10,18 @@
10
10
  "dist"
11
11
  ],
12
12
  "dependencies": {
13
- "@typescript-eslint/utils": "^6.6.0"
13
+ "@typescript-eslint/utils": "^6.7.0"
14
14
  },
15
15
  "devDependencies": {
16
16
  "@types/node": "^20.6.0",
17
- "@typescript-eslint/rule-tester": "^6.6.0",
17
+ "@typescript-eslint/rule-tester": "^6.7.0",
18
18
  "rimraf": "^5.0.1",
19
19
  "unbuild": "^2.0.0",
20
20
  "vitest": "^0.34.4"
21
21
  },
22
22
  "scripts": {
23
23
  "build": "rimraf dist && unbuild",
24
- "stub": "unbuild --stub"
24
+ "stub": "unbuild --stub",
25
+ "test": "vitest"
25
26
  }
26
27
  }