@storm-software/linting-tools 1.42.0 → 1.44.0
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/.eslintrc.json +97 -0
- package/CHANGELOG.md +43 -0
- package/README.md +1 -1
- package/bin/lint.ts +24 -13
- package/jest.config.ts +11 -0
- package/package.json +10 -6
- package/project.json +111 -0
- package/{alex → src/alex}/.alexignore +0 -0
- package/{alex → src/alex}/.alexrc +0 -0
- package/src/alex/index.ts +67 -0
- package/{biome → src/biome}/biome.json +2 -1
- package/src/cli/index.ts +300 -0
- package/{cspell → src/cspell}/dictionary.txt +2 -0
- package/src/eslint/constants.ts +87 -0
- package/src/eslint/graphql/{index.js → index.ts} +4 -7
- package/src/eslint/index.ts +7 -0
- package/src/eslint/javascript/index.ts +22 -0
- package/src/eslint/jest/index.ts +16 -0
- package/src/eslint/json/index.ts +32 -0
- package/src/eslint/next/index.ts +25 -0
- package/src/eslint/react/index.ts +25 -0
- package/src/eslint/rules/import.ts +85 -0
- package/src/eslint/rules/jsx-a11y.ts +8 -0
- package/src/eslint/{react/index.js → rules/react.ts} +3 -39
- package/src/eslint/{javascript/index.js → rules/storm.ts} +3 -139
- package/src/eslint/rules/ts-docs.ts +12 -0
- package/src/eslint/rules/unicorn.ts +23 -0
- package/src/eslint/typescript/index.ts +132 -0
- package/src/ls-lint/.ls-lint.yml +13 -0
- package/src/manypkg/index.ts +164 -0
- package/src/taplo/.taplo.toml +6 -0
- package/tsconfig.json +18 -0
- package/tsconfig.script.json +21 -0
- package/tsconfig.spec.json +13 -0
- package/LICENSE +0 -201
- package/bin/lint.js +0 -333139
- package/src/cli/index.js +0 -328555
- package/src/eslint/jest/index.js +0 -19
- package/src/eslint/json/index.js +0 -95
- package/src/eslint/next/index.js +0 -90
- package/src/eslint/typescript/index.js +0 -569
- package/src/manypkg/index.js +0 -34729
- /package/{cspell → src/cspell}/config.json +0 -0
- /package/{prettier → src/prettier}/.prettierignore +0 -0
- /package/{prettier → src/prettier}/config.json +0 -0
package/src/eslint/jest/index.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
const require = (await import('node:module')).createRequire(import.meta.url);const __filename = (await import('node:url')).fileURLToPath(import.meta.url);const __dirname = (await import('node:path')).dirname(__filename);
|
|
2
|
-
|
|
3
|
-
// packages/linting-tools/src/eslint/jest/index.ts
|
|
4
|
-
var config = {
|
|
5
|
-
root: true,
|
|
6
|
-
overrides: [
|
|
7
|
-
{
|
|
8
|
-
files: ["*.spec.ts", "*.spec.tsx", "*.spec.js", "*.spec.jsx"],
|
|
9
|
-
env: {
|
|
10
|
-
jest: true
|
|
11
|
-
},
|
|
12
|
-
rules: {}
|
|
13
|
-
}
|
|
14
|
-
]
|
|
15
|
-
};
|
|
16
|
-
var jest_default = config;
|
|
17
|
-
export {
|
|
18
|
-
jest_default as default
|
|
19
|
-
};
|
package/src/eslint/json/index.js
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
const require = (await import('node:module')).createRequire(import.meta.url);const __filename = (await import('node:url')).fileURLToPath(import.meta.url);const __dirname = (await import('node:path')).dirname(__filename);
|
|
2
|
-
|
|
3
|
-
// packages/linting-tools/src/eslint/constants.ts
|
|
4
|
-
var RESTRICTED_SYNTAX = [
|
|
5
|
-
{
|
|
6
|
-
// ❌ readFile(…, { encoding: … })
|
|
7
|
-
selector: "CallExpression[callee.name=/readFileSync|readFile|writeFileSync|writeFile/] > .arguments:last-child[type=ObjectExpression][properties.length=1] Property[key.name=encoding]",
|
|
8
|
-
message: "Specify encoding as last argument instead of object with encoding key"
|
|
9
|
-
},
|
|
10
|
-
{
|
|
11
|
-
// ❌ readFile(…, {})
|
|
12
|
-
selector: "CallExpression[callee.name=/readFileSync|readFile|writeFileSync|writeFile/] > .arguments:last-child[type=ObjectExpression][properties.length=0]",
|
|
13
|
-
message: "Specify encoding as last argument"
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
// ❌ readFileSync(…).toString(…)
|
|
17
|
-
selector: "CallExpression[callee.name=readFileSync][parent.property.name=toString]",
|
|
18
|
-
message: "toString is redundant, specify encoding as last argument"
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
// ❌ ….readFile(…, { encoding: … })
|
|
22
|
-
selector: "CallExpression[callee.type=MemberExpression][callee.property.name=/readFileSync|readFile|writeFileSync|writeFile/] > .arguments:last-child[type=ObjectExpression][properties.length=1] Property[key.name=encoding]",
|
|
23
|
-
message: "Specify encoding as last argument instead of object with encoding key"
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
// ❌ ….readFile(…, {})
|
|
27
|
-
selector: "CallExpression[callee.type=MemberExpression][callee.property.name=/readFileSync|readFile|writeFileSync|writeFile/] > .arguments:last-child[type=ObjectExpression][properties.length=0]",
|
|
28
|
-
message: "Specify encoding as last argument"
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
// ❌ Boolean(…)
|
|
32
|
-
selector: "CallExpression[callee.name=Boolean][arguments.1.elements.length!=0]",
|
|
33
|
-
message: "Prefer `!!\u2026` over `Boolean(\u2026)` because TypeScript infers a narrow literal boolean `type: true` instead of `type: boolean`."
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
// ❌ process.browser
|
|
37
|
-
selector: "ExpressionStatement[expression.object.name=process][expression.property.name=browser]",
|
|
38
|
-
message: "`process.browser` is deprecated, use `!!globalThis.window`"
|
|
39
|
-
}
|
|
40
|
-
// {
|
|
41
|
-
// // ❌ let { foo: { bar } } = baz
|
|
42
|
-
// // ✅ let { bar } = baz.foo
|
|
43
|
-
// // ✅ let { foo: { bar } } = await baz
|
|
44
|
-
// selector:
|
|
45
|
-
// 'VariableDeclarator[init.type!=AwaitExpression] > ObjectPattern[properties.length=1][properties.0.value.type=ObjectPattern]',
|
|
46
|
-
// message: 'Do not use nested destructuring.',
|
|
47
|
-
// },
|
|
48
|
-
];
|
|
49
|
-
var REACT_RESTRICTED_SYNTAX = [
|
|
50
|
-
...RESTRICTED_SYNTAX,
|
|
51
|
-
{
|
|
52
|
-
// ❌ useMemo(…, [])
|
|
53
|
-
selector: "CallExpression[callee.name=useMemo][arguments.1.type=ArrayExpression][arguments.1.elements.length=0]",
|
|
54
|
-
message: "`useMemo` with an empty dependency array can't provide a stable reference, use `useRef` instead."
|
|
55
|
-
}
|
|
56
|
-
];
|
|
57
|
-
var CODE_BLOCK = "**/*.md{,x}/*";
|
|
58
|
-
|
|
59
|
-
// packages/linting-tools/src/eslint/json/index.ts
|
|
60
|
-
var JSONC_FILES = [
|
|
61
|
-
"tsconfig.json",
|
|
62
|
-
"tsconfig.base.json",
|
|
63
|
-
"nx.json",
|
|
64
|
-
".vscode/launch.json"
|
|
65
|
-
];
|
|
66
|
-
var config = {
|
|
67
|
-
root: true,
|
|
68
|
-
overrides: [
|
|
69
|
-
{
|
|
70
|
-
files: "*.json",
|
|
71
|
-
excludedFiles: JSONC_FILES,
|
|
72
|
-
extends: "plugin:jsonc/recommended-with-json"
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
files: ["*.jsonc", ...JSONC_FILES],
|
|
76
|
-
extends: "plugin:jsonc/recommended-with-jsonc"
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
files: "*.json5",
|
|
80
|
-
extends: "plugin:jsonc/recommended-with-json5"
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
files: "*.json{,c,5}",
|
|
84
|
-
excludedFiles: CODE_BLOCK,
|
|
85
|
-
plugins: ["unicorn"],
|
|
86
|
-
rules: {
|
|
87
|
-
"unicorn/filename-case": "error"
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
]
|
|
91
|
-
};
|
|
92
|
-
var json_default = config;
|
|
93
|
-
export {
|
|
94
|
-
json_default as default
|
|
95
|
-
};
|
package/src/eslint/next/index.js
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
const require = (await import('node:module')).createRequire(import.meta.url);const __filename = (await import('node:url')).fileURLToPath(import.meta.url);const __dirname = (await import('node:path')).dirname(__filename);
|
|
2
|
-
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
3
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
4
|
-
}) : x)(function(x) {
|
|
5
|
-
if (typeof require !== "undefined")
|
|
6
|
-
return require.apply(this, arguments);
|
|
7
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
8
|
-
});
|
|
9
|
-
|
|
10
|
-
// packages/linting-tools/src/eslint/constants.ts
|
|
11
|
-
var RESTRICTED_SYNTAX = [
|
|
12
|
-
{
|
|
13
|
-
// ❌ readFile(…, { encoding: … })
|
|
14
|
-
selector: "CallExpression[callee.name=/readFileSync|readFile|writeFileSync|writeFile/] > .arguments:last-child[type=ObjectExpression][properties.length=1] Property[key.name=encoding]",
|
|
15
|
-
message: "Specify encoding as last argument instead of object with encoding key"
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
// ❌ readFile(…, {})
|
|
19
|
-
selector: "CallExpression[callee.name=/readFileSync|readFile|writeFileSync|writeFile/] > .arguments:last-child[type=ObjectExpression][properties.length=0]",
|
|
20
|
-
message: "Specify encoding as last argument"
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
// ❌ readFileSync(…).toString(…)
|
|
24
|
-
selector: "CallExpression[callee.name=readFileSync][parent.property.name=toString]",
|
|
25
|
-
message: "toString is redundant, specify encoding as last argument"
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
// ❌ ….readFile(…, { encoding: … })
|
|
29
|
-
selector: "CallExpression[callee.type=MemberExpression][callee.property.name=/readFileSync|readFile|writeFileSync|writeFile/] > .arguments:last-child[type=ObjectExpression][properties.length=1] Property[key.name=encoding]",
|
|
30
|
-
message: "Specify encoding as last argument instead of object with encoding key"
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
// ❌ ….readFile(…, {})
|
|
34
|
-
selector: "CallExpression[callee.type=MemberExpression][callee.property.name=/readFileSync|readFile|writeFileSync|writeFile/] > .arguments:last-child[type=ObjectExpression][properties.length=0]",
|
|
35
|
-
message: "Specify encoding as last argument"
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
// ❌ Boolean(…)
|
|
39
|
-
selector: "CallExpression[callee.name=Boolean][arguments.1.elements.length!=0]",
|
|
40
|
-
message: "Prefer `!!\u2026` over `Boolean(\u2026)` because TypeScript infers a narrow literal boolean `type: true` instead of `type: boolean`."
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
// ❌ process.browser
|
|
44
|
-
selector: "ExpressionStatement[expression.object.name=process][expression.property.name=browser]",
|
|
45
|
-
message: "`process.browser` is deprecated, use `!!globalThis.window`"
|
|
46
|
-
}
|
|
47
|
-
// {
|
|
48
|
-
// // ❌ let { foo: { bar } } = baz
|
|
49
|
-
// // ✅ let { bar } = baz.foo
|
|
50
|
-
// // ✅ let { foo: { bar } } = await baz
|
|
51
|
-
// selector:
|
|
52
|
-
// 'VariableDeclarator[init.type!=AwaitExpression] > ObjectPattern[properties.length=1][properties.0.value.type=ObjectPattern]',
|
|
53
|
-
// message: 'Do not use nested destructuring.',
|
|
54
|
-
// },
|
|
55
|
-
];
|
|
56
|
-
var REACT_RESTRICTED_SYNTAX = [
|
|
57
|
-
...RESTRICTED_SYNTAX,
|
|
58
|
-
{
|
|
59
|
-
// ❌ useMemo(…, [])
|
|
60
|
-
selector: "CallExpression[callee.name=useMemo][arguments.1.type=ArrayExpression][arguments.1.elements.length=0]",
|
|
61
|
-
message: "`useMemo` with an empty dependency array can't provide a stable reference, use `useRef` instead."
|
|
62
|
-
}
|
|
63
|
-
];
|
|
64
|
-
var JS_FILES = ["*.js?(x)", "*.mjs"];
|
|
65
|
-
|
|
66
|
-
// packages/linting-tools/src/eslint/next/index.ts
|
|
67
|
-
var babelOptions = {
|
|
68
|
-
presets: (() => {
|
|
69
|
-
try {
|
|
70
|
-
__require.resolve("next/babel");
|
|
71
|
-
return ["next/babel"];
|
|
72
|
-
} catch (e) {
|
|
73
|
-
return [];
|
|
74
|
-
}
|
|
75
|
-
})()
|
|
76
|
-
};
|
|
77
|
-
var config = {
|
|
78
|
-
root: true,
|
|
79
|
-
extends: ["plugin:@next/next/recommended"],
|
|
80
|
-
overrides: [
|
|
81
|
-
{
|
|
82
|
-
files: JS_FILES,
|
|
83
|
-
parserOptions: { babelOptions }
|
|
84
|
-
}
|
|
85
|
-
]
|
|
86
|
-
};
|
|
87
|
-
var next_default = config;
|
|
88
|
-
export {
|
|
89
|
-
next_default as default
|
|
90
|
-
};
|