@agilebot/eslint-plugin 0.1.1 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
package/lib/util/tss.js CHANGED
@@ -1,104 +1,109 @@
1
- // Helper function to get the basic identifier from various node types
2
- function getBasicIdentifier(node) {
3
- if (node.type === 'Identifier') {
4
- // Return the identifier name for simple cases like classes.foo
5
- return node.name;
6
- }
7
-
8
- if (node.type === 'Literal') {
9
- // Return the literal value for cases like classes['foo']
10
- return node.value;
11
- }
12
-
13
- if (node.type === 'TemplateLiteral') {
14
- // Handle template literals, e.g., classes[`foo`]
15
- if (node.expressions.length) {
16
- // Template literals with expressions, e.g., classes[`foo${bar}`]
17
- return null;
18
- }
19
- return node.quasis[0].value.raw;
20
- }
21
-
22
- // Handle other cases, e.g., classes['foo' + bar]
23
- return null;
24
- }
25
-
26
- // Helper function to recursively get the base identifier from a MemberExpression node
27
- function getBaseIdentifier(node) {
28
- if (node.type === 'Identifier') {
29
- return node;
30
- } else if (node.type === 'CallExpression') {
31
- return getBaseIdentifier(node.callee);
32
- } else if (node.type === 'MemberExpression') {
33
- return getBaseIdentifier(node.object);
34
- }
35
- return null;
36
- }
37
-
38
- function getStyesObj(node) {
39
- const isMakeStyles = node.callee.name === 'makeStyles';
40
-
41
- const isModernApi =
42
- node.callee.type === 'MemberExpression' &&
43
- node.callee.property.name === 'create' &&
44
- getBaseIdentifier(node.callee.object) &&
45
- getBaseIdentifier(node.callee.object).name === 'tss';
46
-
47
- if (!isMakeStyles && !isModernApi) {
48
- return;
49
- }
50
-
51
- const styles = (() => {
52
- if (isMakeStyles) {
53
- return node.parent.arguments[0];
54
- }
55
-
56
- if (isModernApi) {
57
- return node.callee.parent.arguments[0];
58
- }
59
- })();
60
-
61
- if (!styles) {
62
- return;
63
- }
64
-
65
- switch (styles.type) {
66
- case 'ObjectExpression':
67
- return styles;
68
- case 'ArrowFunctionExpression':
69
- {
70
- const { body } = styles;
71
-
72
- switch (body.type) {
73
- case 'ObjectExpression':
74
- return body;
75
- case 'BlockStatement': {
76
- let stylesObj;
77
-
78
- body.body.forEach(bodyNode => {
79
- if (
80
- bodyNode.type === 'ReturnStatement' &&
81
- bodyNode.argument.type === 'ObjectExpression'
82
- ) {
83
- stylesObj = bodyNode.argument;
84
- }
85
- });
86
-
87
- return stylesObj;
88
- }
89
- }
90
- }
91
- break;
92
- }
93
- }
94
-
95
- function isCamelCase(value) {
96
- return /^[a-z][a-zA-Z0-9]*$/.test(value);
97
- }
98
-
99
- module.exports = {
100
- getBasicIdentifier: getBasicIdentifier,
101
- getBaseIdentifier: getBaseIdentifier,
102
- getStyesObj: getStyesObj,
103
- isCamelCase: isCamelCase
104
- };
1
+ // Helper function to get the basic identifier from various node types
2
+ function getBasicIdentifier(node) {
3
+ if (node.type === 'Identifier') {
4
+ // Return the identifier name for simple cases like classes.foo
5
+ return node.name;
6
+ }
7
+
8
+ if (node.type === 'Literal') {
9
+ // Return the literal value for cases like classes['foo']
10
+ return node.value;
11
+ }
12
+
13
+ if (node.type === 'TemplateLiteral') {
14
+ // Handle template literals, e.g., classes[`foo`]
15
+ if (node.expressions.length > 0) {
16
+ // Template literals with expressions, e.g., classes[`foo${bar}`]
17
+ return null;
18
+ }
19
+ return node.quasis[0].value.raw;
20
+ }
21
+
22
+ // Handle other cases, e.g., classes['foo' + bar]
23
+ return null;
24
+ }
25
+
26
+ // Helper function to recursively get the base identifier from a MemberExpression node
27
+ function getBaseIdentifier(node) {
28
+ switch (node.type) {
29
+ case 'Identifier': {
30
+ return node;
31
+ }
32
+ case 'CallExpression': {
33
+ return getBaseIdentifier(node.callee);
34
+ }
35
+ case 'MemberExpression': {
36
+ return getBaseIdentifier(node.object);
37
+ }
38
+ // No default
39
+ }
40
+ return null;
41
+ }
42
+
43
+ function getStyesObj(node) {
44
+ const isMakeStyles = node.callee.name === 'makeStyles';
45
+
46
+ const isModernApi =
47
+ node.callee.type === 'MemberExpression' &&
48
+ node.callee.property.name === 'create' &&
49
+ getBaseIdentifier(node.callee.object) &&
50
+ getBaseIdentifier(node.callee.object).name === 'tss';
51
+
52
+ if (!isMakeStyles && !isModernApi) {
53
+ return;
54
+ }
55
+
56
+ const styles = (() => {
57
+ if (isMakeStyles) {
58
+ return node.parent.arguments[0];
59
+ }
60
+
61
+ if (isModernApi) {
62
+ return node.callee.parent.arguments[0];
63
+ }
64
+ })();
65
+
66
+ if (!styles) {
67
+ return;
68
+ }
69
+
70
+ switch (styles.type) {
71
+ case 'ObjectExpression':
72
+ return styles;
73
+ case 'ArrowFunctionExpression':
74
+ {
75
+ const { body } = styles;
76
+
77
+ switch (body.type) {
78
+ case 'ObjectExpression':
79
+ return body;
80
+ case 'BlockStatement': {
81
+ let stylesObj;
82
+
83
+ body.body.forEach(bodyNode => {
84
+ if (
85
+ bodyNode.type === 'ReturnStatement' &&
86
+ bodyNode.argument.type === 'ObjectExpression'
87
+ ) {
88
+ stylesObj = bodyNode.argument;
89
+ }
90
+ });
91
+
92
+ return stylesObj;
93
+ }
94
+ }
95
+ }
96
+ break;
97
+ }
98
+ }
99
+
100
+ function isCamelCase(value) {
101
+ return /^[a-z][a-zA-Z0-9]*$/.test(value);
102
+ }
103
+
104
+ module.exports = {
105
+ getBasicIdentifier: getBasicIdentifier,
106
+ getBaseIdentifier: getBaseIdentifier,
107
+ getStyesObj: getStyesObj,
108
+ isCamelCase: isCamelCase
109
+ };
package/package.json CHANGED
@@ -1,24 +1,30 @@
1
1
  {
2
2
  "name": "@agilebot/eslint-plugin",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Agilebot's ESLint plugin",
5
5
  "main": "lib",
6
6
  "license": "MIT",
7
+ "keywords": [
8
+ "eslint",
9
+ "eslint-plugin"
10
+ ],
7
11
  "repository": {
8
12
  "url": "sh-agilebot/frontend-toolkit",
9
13
  "directory": "packages/eslint-plugin"
10
14
  },
11
15
  "homepage": "https://github.com/sh-agilebot/frontend-toolkit/tree/master/packages/eslint-plugin#readme",
16
+ "engines": {
17
+ "node": "^18.18.0 || >=20.0.0"
18
+ },
12
19
  "dependencies": {
13
20
  "@typescript-eslint/utils": "^7.1.1",
14
- "consola": "^3.2.3",
15
21
  "fast-glob": "^3.3.2",
16
22
  "get-tsconfig": "^4.7.3",
17
23
  "jiti": "^1.21.0",
18
24
  "sucrase": "^3.35.0"
19
25
  },
20
- "devDependencies": {
21
- "@agilebot/eslint-config": "0.1.1"
26
+ "peerDependencies": {
27
+ "eslint": "^7.0.0 || ^8.0.0"
22
28
  },
23
29
  "files": [
24
30
  "lib"