@sarj/eslint-plugin 9.1.0 → 9.2.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/dist/index.cjs +24 -88
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +24 -88
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -392,7 +392,7 @@ type FlatPreset = {
|
|
|
392
392
|
declare const plugin: {
|
|
393
393
|
meta: {
|
|
394
394
|
readonly name: "@sarj/eslint-plugin";
|
|
395
|
-
readonly version: "9.
|
|
395
|
+
readonly version: "9.2.0";
|
|
396
396
|
};
|
|
397
397
|
rules: {
|
|
398
398
|
"enforce-file-structure": _typescript_eslint_utils_ts_eslint.RuleModule<"importsFirst" | "useServerDirective", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
package/dist/index.d.ts
CHANGED
|
@@ -392,7 +392,7 @@ type FlatPreset = {
|
|
|
392
392
|
declare const plugin: {
|
|
393
393
|
meta: {
|
|
394
394
|
readonly name: "@sarj/eslint-plugin";
|
|
395
|
-
readonly version: "9.
|
|
395
|
+
readonly version: "9.2.0";
|
|
396
396
|
};
|
|
397
397
|
rules: {
|
|
398
398
|
"enforce-file-structure": _typescript_eslint_utils_ts_eslint.RuleModule<"importsFirst" | "useServerDirective", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
package/dist/index.js
CHANGED
|
@@ -1540,12 +1540,6 @@ var no_dynamic_sql_default = createRule({
|
|
|
1540
1540
|
|
|
1541
1541
|
// src/rules/no-enum.ts
|
|
1542
1542
|
import "@typescript-eslint/utils";
|
|
1543
|
-
var DEFAULT_IGNORE_PATTERNS = [
|
|
1544
|
-
/[\\/]generated[\\/]/,
|
|
1545
|
-
/[\\/]openapi-gen[\\/]/,
|
|
1546
|
-
/\.gen\.tsx?$/,
|
|
1547
|
-
/\.generated\.tsx?$/
|
|
1548
|
-
];
|
|
1549
1543
|
function matchesAnyPattern(filename, patterns) {
|
|
1550
1544
|
for (const pattern of patterns) {
|
|
1551
1545
|
const regexSource = pattern.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*\*/g, "::DOUBLESTAR::").replace(/\*/g, "[^/\\\\]*").replace(/::DOUBLESTAR::/g, ".*");
|
|
@@ -1555,10 +1549,6 @@ function matchesAnyPattern(filename, patterns) {
|
|
|
1555
1549
|
}
|
|
1556
1550
|
return false;
|
|
1557
1551
|
}
|
|
1558
|
-
function hasGeneratedMarker(sourceText) {
|
|
1559
|
-
const head = sourceText.slice(0, 1024);
|
|
1560
|
-
return /@generated\b/.test(head);
|
|
1561
|
-
}
|
|
1562
1552
|
var no_enum_default = createRule({
|
|
1563
1553
|
name: "no-enum",
|
|
1564
1554
|
meta: {
|
|
@@ -1588,12 +1578,8 @@ var no_enum_default = createRule({
|
|
|
1588
1578
|
const ignoreFiles = options.ignoreFiles ?? [];
|
|
1589
1579
|
const filename = context.filename;
|
|
1590
1580
|
const sourceText = context.sourceCode.getText();
|
|
1591
|
-
const isIgnoredByDefault = DEFAULT_IGNORE_PATTERNS.some(
|
|
1592
|
-
(re) => re.test(filename)
|
|
1593
|
-
);
|
|
1594
1581
|
const isIgnoredByOption = ignoreFiles.length > 0 && matchesAnyPattern(filename, ignoreFiles);
|
|
1595
|
-
|
|
1596
|
-
if (isIgnoredByDefault || isIgnoredByOption || isGenerated) {
|
|
1582
|
+
if (isIgnoredByOption || isGeneratedFile(filename, sourceText)) {
|
|
1597
1583
|
return {};
|
|
1598
1584
|
}
|
|
1599
1585
|
return {
|
|
@@ -3341,35 +3327,6 @@ var no_restated_comment_default = createRule({
|
|
|
3341
3327
|
|
|
3342
3328
|
// src/rules/no-restated-jsdoc.ts
|
|
3343
3329
|
import { AST_NODE_TYPES as AST_NODE_TYPES16 } from "@typescript-eslint/utils";
|
|
3344
|
-
var VALUE_TAGS = /* @__PURE__ */ new Set([
|
|
3345
|
-
"alpha",
|
|
3346
|
-
"author",
|
|
3347
|
-
"beta",
|
|
3348
|
-
"category",
|
|
3349
|
-
"copyright",
|
|
3350
|
-
"default",
|
|
3351
|
-
"defaultvalue",
|
|
3352
|
-
"deprecated",
|
|
3353
|
-
"example",
|
|
3354
|
-
"experimental",
|
|
3355
|
-
"fileoverview",
|
|
3356
|
-
"fixme",
|
|
3357
|
-
"group",
|
|
3358
|
-
"inheritdoc",
|
|
3359
|
-
"internal",
|
|
3360
|
-
"license",
|
|
3361
|
-
"link",
|
|
3362
|
-
"module",
|
|
3363
|
-
"override",
|
|
3364
|
-
"packagedocumentation",
|
|
3365
|
-
"remarks",
|
|
3366
|
-
"see",
|
|
3367
|
-
"since",
|
|
3368
|
-
"template",
|
|
3369
|
-
"throws",
|
|
3370
|
-
"todo",
|
|
3371
|
-
"typeparam"
|
|
3372
|
-
]);
|
|
3373
3330
|
var MODELLED_TAGS = /* @__PURE__ */ new Set([
|
|
3374
3331
|
"arg",
|
|
3375
3332
|
"argument",
|
|
@@ -3494,7 +3451,6 @@ var no_restated_jsdoc_default = createRule({
|
|
|
3494
3451
|
const { description, tags } = parseJsDoc(comment.value);
|
|
3495
3452
|
if (DIRECTIVE_RE3.test(description)) continue;
|
|
3496
3453
|
const tagNames = new Set(tags.map((tag) => tag.name));
|
|
3497
|
-
if ([...tagNames].some((name) => VALUE_TAGS.has(name))) continue;
|
|
3498
3454
|
if ([...tagNames].some((name) => !MODELLED_TAGS.has(name))) continue;
|
|
3499
3455
|
if (isProtected(description)) continue;
|
|
3500
3456
|
const token = sourceCode.getTokenAfter(comment, { includeComments: false });
|
|
@@ -6975,25 +6931,32 @@ var STYLE_COLOR_PROPS = /* @__PURE__ */ new Set([
|
|
|
6975
6931
|
var RAW_COLOR_VALUE_RE = new RegExp(`#[0-9a-fA-F]{3,8}\\b|\\b(?:${COLOR_FN})\\s*\\(`, "i");
|
|
6976
6932
|
var CSS_VAR_REFERENCE_RE = /var\(\s*--/;
|
|
6977
6933
|
var STORIES_FILE_RE = /\.stories\.[cm]?[jt]sx?$/i;
|
|
6978
|
-
var
|
|
6979
|
-
var
|
|
6980
|
-
|
|
6981
|
-
|
|
6982
|
-
|
|
6983
|
-
|
|
6984
|
-
"tailwind.config.ts"
|
|
6985
|
-
]);
|
|
6986
|
-
var DETECTION_FILES = [
|
|
6934
|
+
var TOKEN_ROLES = "background|foreground|primary|secondary|muted|accent|destructive|danger|success|warning|info|border|card|popover|surface|content|base|subtle|default|ring|input|fg|bg";
|
|
6935
|
+
var SEMANTIC_TOKEN_RE = new RegExp(
|
|
6936
|
+
`--(?:color-)?(?:${TOKEN_ROLES})\\b|(?:bg|text|border|ring|fill|stroke)-(?:ui-)?(?:${TOKEN_ROLES})\\b`
|
|
6937
|
+
);
|
|
6938
|
+
var THEME_BLOCK_RE = /@theme\b/;
|
|
6939
|
+
var PRESENCE_MARKERS = [
|
|
6987
6940
|
"components.json",
|
|
6988
6941
|
"tailwind.config.js",
|
|
6989
6942
|
"tailwind.config.cjs",
|
|
6990
6943
|
"tailwind.config.mjs",
|
|
6991
6944
|
"tailwind.config.ts",
|
|
6945
|
+
"tailwind.config.mts",
|
|
6946
|
+
"tailwind.config.cts"
|
|
6947
|
+
];
|
|
6948
|
+
var CSS_DETECTION_FILES = [
|
|
6992
6949
|
"app/globals.css",
|
|
6950
|
+
"app/global.css",
|
|
6951
|
+
"app/styles/globals.css",
|
|
6993
6952
|
"src/app/globals.css",
|
|
6953
|
+
"src/app/global.css",
|
|
6954
|
+
"src/global.css",
|
|
6994
6955
|
"src/index.css",
|
|
6995
6956
|
"src/styles/globals.css",
|
|
6996
|
-
"styles/
|
|
6957
|
+
"src/styles/index.css",
|
|
6958
|
+
"styles/globals.css",
|
|
6959
|
+
"styles/index.css"
|
|
6997
6960
|
];
|
|
6998
6961
|
var WORKSPACE_ROOT_FILES = [
|
|
6999
6962
|
"pnpm-workspace.yaml",
|
|
@@ -7072,12 +7035,13 @@ var isInsideIconFactoryPath = (node) => {
|
|
|
7072
7035
|
return false;
|
|
7073
7036
|
};
|
|
7074
7037
|
var hasMarkerAt = (dir) => {
|
|
7075
|
-
|
|
7038
|
+
if (PRESENCE_MARKERS.some((rel) => existsSync(join(dir, rel)))) return true;
|
|
7039
|
+
for (const rel of CSS_DETECTION_FILES) {
|
|
7076
7040
|
const candidate = join(dir, rel);
|
|
7077
7041
|
if (!existsSync(candidate)) continue;
|
|
7078
|
-
if (CONFIG_IS_SUFFICIENT.has(rel)) return true;
|
|
7079
7042
|
try {
|
|
7080
|
-
|
|
7043
|
+
const css = readFileSync(candidate, "utf8");
|
|
7044
|
+
if (SEMANTIC_TOKEN_RE.test(css) || THEME_BLOCK_RE.test(css)) return true;
|
|
7081
7045
|
} catch {
|
|
7082
7046
|
}
|
|
7083
7047
|
}
|
|
@@ -8542,32 +8506,6 @@ var prefer_zod_infer_default = createRule({
|
|
|
8542
8506
|
|
|
8543
8507
|
// src/rules/require-assert-never.ts
|
|
8544
8508
|
import { AST_NODE_TYPES as AST_NODE_TYPES39 } from "@typescript-eslint/utils";
|
|
8545
|
-
var isAssertNeverCall = (expression) => {
|
|
8546
|
-
if (expression.type !== AST_NODE_TYPES39.CallExpression) return false;
|
|
8547
|
-
const callee = expression.callee;
|
|
8548
|
-
if (callee.type === AST_NODE_TYPES39.Identifier) {
|
|
8549
|
-
return callee.name === "assertNever";
|
|
8550
|
-
}
|
|
8551
|
-
if (callee.type === AST_NODE_TYPES39.MemberExpression && !callee.computed && callee.property.type === AST_NODE_TYPES39.Identifier) {
|
|
8552
|
-
return callee.property.name === "assertNever";
|
|
8553
|
-
}
|
|
8554
|
-
return false;
|
|
8555
|
-
};
|
|
8556
|
-
var statementContainsAssertNever = (statement) => {
|
|
8557
|
-
if (statement.type === AST_NODE_TYPES39.ExpressionStatement) {
|
|
8558
|
-
return isAssertNeverCall(statement.expression);
|
|
8559
|
-
}
|
|
8560
|
-
if (statement.type === AST_NODE_TYPES39.ThrowStatement) {
|
|
8561
|
-
return isAssertNeverCall(statement.argument);
|
|
8562
|
-
}
|
|
8563
|
-
if (statement.type === AST_NODE_TYPES39.ReturnStatement) {
|
|
8564
|
-
return statement.argument !== null && isAssertNeverCall(statement.argument);
|
|
8565
|
-
}
|
|
8566
|
-
if (statement.type === AST_NODE_TYPES39.BlockStatement) {
|
|
8567
|
-
return statement.body.some(statementContainsAssertNever);
|
|
8568
|
-
}
|
|
8569
|
-
return false;
|
|
8570
|
-
};
|
|
8571
8509
|
var isRuntimeHandlingStatement = (statement) => {
|
|
8572
8510
|
if (statement.type === AST_NODE_TYPES39.EmptyStatement) return false;
|
|
8573
8511
|
if (statement.type === AST_NODE_TYPES39.BlockStatement) {
|
|
@@ -8613,7 +8551,6 @@ var require_assert_never_default = createRule({
|
|
|
8613
8551
|
if (defaultIndex === -1) return;
|
|
8614
8552
|
const defaultCase = node.cases[defaultIndex];
|
|
8615
8553
|
if (defaultCase === void 0) return;
|
|
8616
|
-
if (defaultCase.consequent.some(statementContainsAssertNever)) return;
|
|
8617
8554
|
if (defaultCase.consequent.some(isRuntimeHandlingStatement)) return;
|
|
8618
8555
|
if (isFallthroughDefault(node, defaultIndex)) return;
|
|
8619
8556
|
if (isCommentOnlyNoopDefault(defaultCase, context.sourceCode)) return;
|
|
@@ -8628,7 +8565,6 @@ var require_assert_never_default = createRule({
|
|
|
8628
8565
|
|
|
8629
8566
|
// src/rules/require-fetch-timeout.ts
|
|
8630
8567
|
import { AST_NODE_TYPES as AST_NODE_TYPES40, ASTUtils as ASTUtils2 } from "@typescript-eslint/utils";
|
|
8631
|
-
var CODEMOD_FIXTURE_RE = /[\\/]__testfixtures__[\\/]/;
|
|
8632
8568
|
var GLOBAL_OBJECTS2 = /* @__PURE__ */ new Set([
|
|
8633
8569
|
"globalThis",
|
|
8634
8570
|
"window",
|
|
@@ -8689,7 +8625,7 @@ var require_fetch_timeout_default = createRule({
|
|
|
8689
8625
|
},
|
|
8690
8626
|
defaultOptions: [{}],
|
|
8691
8627
|
create(context, [optionsArg]) {
|
|
8692
|
-
if (isTestFile(context.filename) || isScriptFile(context.filename)
|
|
8628
|
+
if (isTestFile(context.filename) || isScriptFile(context.filename)) {
|
|
8693
8629
|
return {};
|
|
8694
8630
|
}
|
|
8695
8631
|
const allowIn = optionsArg?.allowIn ?? [];
|
|
@@ -9348,7 +9284,7 @@ var rules = {
|
|
|
9348
9284
|
};
|
|
9349
9285
|
var meta = {
|
|
9350
9286
|
name: "@sarj/eslint-plugin",
|
|
9351
|
-
version: "9.
|
|
9287
|
+
version: "9.2.0"
|
|
9352
9288
|
};
|
|
9353
9289
|
var recommendedRules = {
|
|
9354
9290
|
"@sarj/enforce-file-structure": "warn",
|