@jeremybarbet/oxlint-plugin 0.4.0 → 0.5.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/README.md +21 -20
- package/dist/rules/no-unused-styles.mjs +9 -3
- package/dist/rules/no-unused-styles.mjs.map +1 -1
- package/package.json +10 -1
package/README.md
CHANGED
|
@@ -41,11 +41,11 @@ Not reported:
|
|
|
41
41
|
- Anything matching `**/*.config.*`, always. A config file is loaded by path by the tool that owns
|
|
42
42
|
it, so its default export is an entry point by definition.
|
|
43
43
|
|
|
44
|
-
| Option
|
|
45
|
-
|
|
|
46
|
-
| `unusedExports`
|
|
47
|
-
| `missingExports`
|
|
48
|
-
| `ignoreExports`
|
|
44
|
+
| Option | Default | |
|
|
45
|
+
| ---------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
46
|
+
| `unusedExports` | `true` | Report exports nothing imports. |
|
|
47
|
+
| `missingExports` | `false` | Report files with no exports. Noisy — every spec and mock qualifies. |
|
|
48
|
+
| `ignoreExports` | `[]` | Globs whose exports are never reported. Put your entry points here. |
|
|
49
49
|
| `ignoreDefaultExports` | `false` | Never report `export default`. Pass globs to scope it — a file-based router like expo-router loads its routes by path, so their default export is an entry point, never an import. |
|
|
50
50
|
|
|
51
51
|
```ts
|
|
@@ -64,10 +64,10 @@ Reports a binding that is exported but only ever used inside its own declaring f
|
|
|
64
64
|
complement of `no-unused-modules`, which deliberately leaves this case alone because the two want
|
|
65
65
|
opposite fixes:
|
|
66
66
|
|
|
67
|
-
| Rule
|
|
68
|
-
|
|
|
69
|
-
| `no-unused-modules`
|
|
70
|
-
| `no-unnecessary-export` | Only the declaring file references it.
|
|
67
|
+
| Rule | Condition | Fix |
|
|
68
|
+
| ----------------------- | ---------------------------------------- | -------------------------- |
|
|
69
|
+
| `no-unused-modules` | Nothing references the export, anywhere. | Delete the declaration. |
|
|
70
|
+
| `no-unnecessary-export` | Only the declaring file references it. | Drop the `export` keyword. |
|
|
71
71
|
|
|
72
72
|
The two never both fire on one name. Together they mean an export is either imported somewhere or
|
|
73
73
|
reported.
|
|
@@ -81,10 +81,10 @@ import, so the fix is offered as an editor suggestion and `--fix` leaves the fil
|
|
|
81
81
|
`export const x = …` gets one: a specifier list drops an entry rather than the keyword, and a
|
|
82
82
|
destructured or multi-declarator export may still have an imported sibling.
|
|
83
83
|
|
|
84
|
-
| Option
|
|
85
|
-
|
|
|
86
|
-
| `includeTypes`
|
|
87
|
-
| `ignoreExports` | `[]`
|
|
84
|
+
| Option | Default | |
|
|
85
|
+
| --------------- | ------- | --------------------------------------- |
|
|
86
|
+
| `includeTypes` | `false` | Also report type-only exports. |
|
|
87
|
+
| `ignoreExports` | `[]` | Globs whose exports are never reported. |
|
|
88
88
|
|
|
89
89
|
```ts
|
|
90
90
|
'op/no-unnecessary-export': 'error',
|
|
@@ -95,7 +95,7 @@ destructured or multi-declarator export may still have an imported sibling.
|
|
|
95
95
|
Reports public class members that nothing outside the declaring file references.
|
|
96
96
|
|
|
97
97
|
This is the gap that motivated the package. `knip` analyses module-level exports only, so an
|
|
98
|
-
exported class that
|
|
98
|
+
exported class that _is_ used hides its entire body from it; `tsc`'s `noUnusedLocals` covers
|
|
99
99
|
`private` members alone. In a codebase where most logic lives on service and controller classes,
|
|
100
100
|
that leaves most of the code unchecked.
|
|
101
101
|
|
|
@@ -112,11 +112,11 @@ Not reported:
|
|
|
112
112
|
polymorphically by a base class or by whatever holds the interface.
|
|
113
113
|
- Members referenced only from test files (mirrors `knip --production`).
|
|
114
114
|
|
|
115
|
-
| Option
|
|
116
|
-
|
|
|
117
|
-
| `ignoreNames`
|
|
118
|
-
| `ignoreUsagesIn`
|
|
119
|
-
| `reportPrivateCandidates` | `false`
|
|
115
|
+
| Option | Default | |
|
|
116
|
+
| ------------------------- | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
|
|
117
|
+
| `ignoreNames` | framework lifecycle hooks | Member names never reported. |
|
|
118
|
+
| `ignoreUsagesIn` | specs, mocks, `src/test/**` | Globs whose references do not count as usage. |
|
|
119
|
+
| `reportPrivateCandidates` | `false` | Also report members used _only_ inside their own file, suggesting `private`. Off by default: those are a refactor prompt, not dead code. |
|
|
120
120
|
|
|
121
121
|
### `no-export-all`
|
|
122
122
|
|
|
@@ -125,7 +125,8 @@ Disallows `export *`, which defeats tree-shaking and invites name clashes.
|
|
|
125
125
|
### `no-unused-styles`
|
|
126
126
|
|
|
127
127
|
React Native. Reports entries in a `StyleSheet.create` object that nothing consumes. Understands the
|
|
128
|
-
plain object form and both function forms `react-native-unistyles` uses
|
|
128
|
+
plain object form and both function forms `react-native-unistyles` uses, and counts reads of the styles
|
|
129
|
+
`useVariants` returns.
|
|
129
130
|
|
|
130
131
|
### `require-cache-control`
|
|
131
132
|
|
|
@@ -46,6 +46,7 @@ const rule = {
|
|
|
46
46
|
create(context) {
|
|
47
47
|
const styleSheets = new Map();
|
|
48
48
|
const usages = [];
|
|
49
|
+
const aliases = new Map();
|
|
49
50
|
return {
|
|
50
51
|
// Collect every member expression up front — the stylesheet it refers to may not have been
|
|
51
52
|
// visited yet, so matching is deferred to `Program:exit`.
|
|
@@ -78,6 +79,10 @@ const rule = {
|
|
|
78
79
|
styleSheets.set(variableName, { node: stylesNode, styles: new Set(styles) });
|
|
79
80
|
}
|
|
80
81
|
},
|
|
82
|
+
// `const variantStyles = styles.useVariants({ size })`
|
|
83
|
+
'VariableDeclarator[id.type="Identifier"][init.callee.object.type="Identifier"][init.callee.property.name="useVariants"]'(node) {
|
|
84
|
+
aliases.set(node.id.name, node.init.callee.object.name);
|
|
85
|
+
},
|
|
81
86
|
// `const { container } = styles`
|
|
82
87
|
VariableDeclarator(node) {
|
|
83
88
|
if (node.init?.type !== 'Identifier' || node.id.type !== 'ObjectPattern') {
|
|
@@ -99,17 +104,18 @@ const rule = {
|
|
|
99
104
|
'Program:exit'() {
|
|
100
105
|
const usedStyles = new Set();
|
|
101
106
|
for (const { objectName, styleName } of usages) {
|
|
102
|
-
const
|
|
107
|
+
const sheetName = aliases.get(objectName) ?? objectName;
|
|
108
|
+
const sheet = styleSheets.get(sheetName);
|
|
103
109
|
if (!sheet) {
|
|
104
110
|
continue;
|
|
105
111
|
}
|
|
106
112
|
if (styleName === ALL_STYLES) {
|
|
107
113
|
for (const name of sheet.styles) {
|
|
108
|
-
usedStyles.add(`${
|
|
114
|
+
usedStyles.add(`${sheetName}.${name}`);
|
|
109
115
|
}
|
|
110
116
|
}
|
|
111
117
|
else {
|
|
112
|
-
usedStyles.add(`${
|
|
118
|
+
usedStyles.add(`${sheetName}.${styleName}`);
|
|
113
119
|
}
|
|
114
120
|
}
|
|
115
121
|
for (const [sheetName, sheet] of styleSheets) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-unused-styles.mjs","sourceRoot":"","sources":["../../src/rules/no-unused-styles.mts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,MAAM,cAAc,CAAC;AAYlE,kEAAkE;AAClE,MAAM,UAAU,GAAG,GAAG,CAAC;AAEvB,MAAM,aAAa,GAAG,CAAC,MAAY,EAAY,EAAE,CAC9C,MAAM,CAAC,UAAqB;KAC1B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,YAAY,CAAC;KAC3E,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAc,CAAC,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,eAAe,GAAG,CAAC,QAA0B,EAAe,EAAE;IAClE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACzC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QAC9C,OAAO,QAAQ,CAAC,IAAY,CAAC;IAC/B,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QAC5C,MAAM,eAAe,GAAI,QAAQ,CAAC,IAAI,CAAC,IAAe,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;QAE/G,IAAI,eAAe,EAAE,QAAQ,EAAE,IAAI,KAAK,kBAAkB,EAAE,CAAC;YAC3D,OAAO,eAAe,CAAC,QAAgB,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,IAAI,GAAS;IACjB,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EAAE,8EAA8E;SAC5F;QACD,QAAQ,EAAE;YACR,WAAW,EAAE,6CAA6C;SAC3D;QACD,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,MAAM;KAChB;IACD,MAAM,CAAC,OAAgB;QACrB,MAAM,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAC;QACvD,MAAM,MAAM,GAAY,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"no-unused-styles.mjs","sourceRoot":"","sources":["../../src/rules/no-unused-styles.mts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jeremybarbet/oxlint-plugin",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Shared oxlint JS plugin: dead-code rules that oxlint, tsc and knip each miss, plus a few house rules.",
|
|
5
5
|
"author": "Jérémy Barbet <jeremgraph@gmail.com> (https://github.com/jeremybarbet)",
|
|
6
6
|
"repository": "https://github.com/jeremybarbet/oxlint-plugin",
|
|
@@ -39,6 +39,12 @@
|
|
|
39
39
|
},
|
|
40
40
|
"scripts": {
|
|
41
41
|
"build": "rm -rf dist && tsc",
|
|
42
|
+
"lint": "yarn lint:tsc && yarn lint:oxlint && yarn lint:oxfmt",
|
|
43
|
+
"lint:ci": "yarn lint:tsc && yarn lint:oxlint:ci && yarn lint:oxfmt:ci",
|
|
44
|
+
"lint:oxfmt": "oxfmt -c oxfmt.config.mts",
|
|
45
|
+
"lint:oxfmt:ci": "oxfmt -c oxfmt.config.mts --check",
|
|
46
|
+
"lint:oxlint": "oxlint -c oxlint.config.mts --fix",
|
|
47
|
+
"lint:oxlint:ci": "oxlint -c oxlint.config.mts",
|
|
42
48
|
"lint:tsc": "tsc --noEmit",
|
|
43
49
|
"prepack": "yarn build"
|
|
44
50
|
},
|
|
@@ -50,6 +56,9 @@
|
|
|
50
56
|
},
|
|
51
57
|
"devDependencies": {
|
|
52
58
|
"@types/node": "25.9.1",
|
|
59
|
+
"oxfmt": "0.65.0",
|
|
60
|
+
"oxlint": "1.80.0",
|
|
61
|
+
"oxlint-tsgolint": "7.0.2001",
|
|
53
62
|
"typescript": "5.9.3"
|
|
54
63
|
}
|
|
55
64
|
}
|