zirka 0.0.39 → 0.0.40

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.
@@ -72,10 +72,7 @@ function transformSeverity(configsToProcess, targetSeverity) {
72
72
  if (!ruleConfig) {
73
73
  continue;
74
74
  }
75
- const [currentSeverity, ruleOptions, isOriginalRuleArray] = Array.isArray(ruleConfig) ? (
76
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- ESLint's 'RuleEntry' is typed with any[]
77
- [ruleConfig[0], ruleConfig.slice(1), true]
78
- ) : [ruleConfig, [], false];
75
+ const [currentSeverity, ruleOptions, isOriginalRuleArray] = Array.isArray(ruleConfig) ? [ruleConfig[0], ruleConfig.slice(1), true] : [ruleConfig, [], false];
79
76
  let newRuleEntry = ruleConfig;
80
77
  if (targetSeverity === "warn" /* Warn */) {
81
78
  if (currentSeverity === "error" /* Error */ || currentSeverity === 2 /* Error */) {
@@ -415,113 +412,6 @@ var init_es6 = __esm({
415
412
  }
416
413
  });
417
414
 
418
- // eslint/rules/import.ts
419
- var importRules, importOverrides;
420
- var init_import = __esm({
421
- "eslint/rules/import.ts"() {
422
- "use strict";
423
- importRules = {
424
- /**
425
- * Disallow non-import statements appearing before import statements.
426
- * 🚫 Not fixable - https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/first.md
427
- * Source: Vercel Style Guide → https://github.com/vercel/style-guide
428
- */
429
- "import/first": "error",
430
- /**
431
- * Require a newline after the last import/require.
432
- * 🔧 Fixable - https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/newline-after-import.md
433
- * Source: Vercel Style Guide → https://github.com/vercel/style-guide
434
- */
435
- "import/newline-after-import": "warn",
436
- /**
437
- * Disallow import of modules using absolute paths.
438
- * 🚫 Not fixable - https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-absolute-path.md
439
- * Source: Vercel Style Guide → https://github.com/vercel/style-guide
440
- */
441
- "import/no-absolute-path": "error",
442
- /**
443
- * Disallow cyclical dependencies between modules.
444
- * 🚫 Not fixable - https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-cycle.md
445
- * Source: Vercel Style Guide → https://github.com/vercel/style-guide
446
- */
447
- "import/no-cycle": "error",
448
- /**
449
- * Disallow duplicate imports from the same module.
450
- * 🔧 Fixable - https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-duplicates.md
451
- * Source: Added by bredansky → https://github.com/bredansky
452
- */
453
- "import/no-duplicates": ["error", { "prefer-inline": true }],
454
- /**
455
- * Disallow default exports.
456
- * 🚫 Not fixable - https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-default-export.md
457
- * Source: Vercel Style Guide → https://github.com/vercel/style-guide
458
- */
459
- "import/no-default-export": "error",
460
- /**
461
- * Disallow the use of extraneous packages.
462
- * 🚫 Not fixable - https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-extraneous-dependencies.md
463
- * Source: Vercel Style Guide → https://github.com/vercel/style-guide
464
- */
465
- "import/no-extraneous-dependencies": ["error", { includeTypes: true }],
466
- /**
467
- * Disallow mutable exports.
468
- * 🚫 Not fixable - https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-mutable-exports.md
469
- * Source: Vercel Style Guide → https://github.com/vercel/style-guide
470
- */
471
- "import/no-mutable-exports": "error",
472
- /**
473
- * Disallow importing packages through relative paths.
474
- * 🔧 Fixable - https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-relative-packages.md
475
- * Source: Vercel Style Guide → https://github.com/vercel/style-guide
476
- */
477
- "import/no-relative-packages": "warn",
478
- /**
479
- * Disallow a module from importing itself.
480
- * 🚫 Not fixable - https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-self-import.md
481
- * Source: Vercel Style Guide → https://github.com/vercel/style-guide
482
- */
483
- "import/no-self-import": "error",
484
- /**
485
- * Ensures that there are no useless path segments.
486
- * 🚫 Not fixable - https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-useless-path-segments.md
487
- * Source: Vercel Style Guide → https://github.com/vercel/style-guide
488
- */
489
- "import/no-useless-path-segments": ["error"],
490
- /**
491
- * Enforce a module import order convention.
492
- * 🔧 Fixable - https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/order.md
493
- * Source: Vercel Style Guide → https://github.com/vercel/style-guide
494
- */
495
- "import/order": [
496
- "warn",
497
- {
498
- groups: [
499
- "builtin",
500
- // Node.js built-in modules
501
- "external",
502
- // Packages
503
- "internal",
504
- // Aliased modules
505
- "parent",
506
- // Relative parent
507
- "sibling",
508
- // Relative sibling
509
- "index"
510
- // Relative index
511
- ],
512
- "newlines-between": "never"
513
- }
514
- ]
515
- };
516
- importOverrides = {
517
- files: ["**/*.config.{cjs,cts,js,mjs,mts,ts}"],
518
- rules: {
519
- "import/no-default-export": "off"
520
- }
521
- };
522
- }
523
- });
524
-
525
415
  // eslint/rules/possible-errors.ts
526
416
  var possibleErrorsRules;
527
417
  var init_possible_errors = __esm({
@@ -736,41 +626,28 @@ var init_variables = __esm({
736
626
  });
737
627
 
738
628
  // eslint/_base.ts
739
- var import_js, importPlugin, import_recommended, import_eslint_parser, import_config3, baseConfig;
629
+ var import_js, import_config3, baseConfig;
740
630
  var init_base = __esm({
741
631
  "eslint/_base.ts"() {
742
632
  "use strict";
743
633
  import_js = __toESM(require("@eslint/js"), 1);
744
- importPlugin = __toESM(require("eslint-plugin-import"), 1);
745
- import_recommended = __toESM(require("eslint-plugin-prettier/recommended"), 1);
746
- import_eslint_parser = __toESM(require("@babel/eslint-parser"), 1);
747
634
  import_config3 = require("eslint/config");
748
635
  init_constants();
749
636
  init_best_practice();
750
637
  init_es6();
751
- init_import();
752
638
  init_possible_errors();
753
639
  init_stylistic();
754
640
  init_comments();
755
641
  init_unicorn();
756
642
  init_variables();
757
643
  baseConfig = (0, import_config3.defineConfig)([
758
- // Core recommended ESLint rules
759
644
  import_js.default.configs.recommended,
760
- // Import plugin recommendations
761
- importPlugin.flatConfigs.recommended,
762
- // Prettier formatting integration
763
- import_recommended.default,
764
- // Custom and recommended rules for comments
765
645
  commentsConfig,
766
- // Custom and recommended rules for unicorn plugin
767
646
  unicornConfig,
768
- // Custom ESLint configuration for all files
769
647
  {
770
648
  rules: {
771
649
  ...bestPracticeRules,
772
650
  ...es6Rules,
773
- ...importRules,
774
651
  ...possibleErrorsRules,
775
652
  ...stylisticRules,
776
653
  ...variablesRules
@@ -778,44 +655,12 @@ var init_base = __esm({
778
655
  },
779
656
  {
780
657
  languageOptions: {
781
- // Enable modern JS syntax
782
658
  ecmaVersion: ECMA_VERSION,
783
- // Use ES modules rather than CommonJS
784
659
  sourceType: "module"
785
660
  },
786
- // Import-related configuration
787
- settings: {
788
- "import/resolver": {
789
- node: true
790
- }
791
- },
792
- linterOptions: {
793
- // Warn if there are unnecessary `eslint-disable` comments
794
- reportUnusedDisableDirectives: true
795
- },
796
- // This un-ignores dotfiles like `.eslintrc.js`, which are usually ignored by default
661
+ linterOptions: { reportUnusedDisableDirectives: true },
797
662
  ignores: ["!.*.js", "!.*"]
798
- },
799
- // Override for JavaScript files (optional but useful)
800
- // Applies the Babel parser for parsing newer JS syntax (e.g., decorators, top-level await)
801
- {
802
- files: JAVASCRIPT_FILES,
803
- languageOptions: {
804
- parser: import_eslint_parser.default,
805
- // Use Babel parser instead of ESLint's default to support modern JS features
806
- parserOptions: {
807
- // Don't require a Babel config file like `.babelrc`
808
- requireConfigFile: false,
809
- // Inline Babel options for this parser instance
810
- babelOptions: {
811
- presets: ["@babel/preset-env"]
812
- // Transpile to ES5 based on target environments
813
- }
814
- }
815
- }
816
- },
817
- // Override for config files that commonly require default exports
818
- importOverrides
663
+ }
819
664
  ]);
820
665
  }
821
666
  });
@@ -886,7 +731,7 @@ var init_node = __esm({
886
731
 
887
732
  // eslint/rules/typescript/import.ts
888
733
  var typescriptImportRules;
889
- var init_import2 = __esm({
734
+ var init_import = __esm({
890
735
  "eslint/rules/typescript/import.ts"() {
891
736
  "use strict";
892
737
  typescriptImportRules = {
@@ -1036,15 +881,16 @@ var typescript_exports = {};
1036
881
  __export(typescript_exports, {
1037
882
  typescriptConfig: () => typescriptConfig
1038
883
  });
1039
- var import_typescript_eslint, typescriptConfig;
884
+ var import_typescript_eslint, import_config6, typescriptConfig;
1040
885
  var init_typescript2 = __esm({
1041
886
  "eslint/typescript.ts"() {
1042
887
  "use strict";
1043
888
  import_typescript_eslint = __toESM(require("typescript-eslint"), 1);
1044
- init_import2();
889
+ import_config6 = require("eslint/config");
890
+ init_import();
1045
891
  init_typescript();
1046
892
  init_constants();
1047
- typescriptConfig = import_typescript_eslint.default.config([
893
+ typescriptConfig = (0, import_config6.defineConfig)([
1048
894
  // These rules enforce strong type safety and identify potential type-related issues.
1049
895
  import_typescript_eslint.default.configs.strictTypeChecked,
1050
896
  // These rules focus on code style and readability specifically for TypeScript.
@@ -1093,16 +939,14 @@ var react_exports = {};
1093
939
  __export(react_exports, {
1094
940
  reactConfig: () => reactConfig
1095
941
  });
1096
- var import_config6, import_eslint_plugin, import_eslint_plugin_jsx_a11y, import_eslint_plugin_react_hooks, reactConfig;
942
+ var import_config7, import_eslint_plugin, reactConfig;
1097
943
  var init_react = __esm({
1098
944
  "eslint/react.ts"() {
1099
945
  "use strict";
1100
- import_config6 = require("eslint/config");
946
+ import_config7 = require("eslint/config");
1101
947
  import_eslint_plugin = __toESM(require("@eslint-react/eslint-plugin"), 1);
1102
- import_eslint_plugin_jsx_a11y = __toESM(require("eslint-plugin-jsx-a11y"), 1);
1103
- import_eslint_plugin_react_hooks = __toESM(require("eslint-plugin-react-hooks"), 1);
1104
948
  init_constants();
1105
- reactConfig = (0, import_config6.defineConfig)([
949
+ reactConfig = (0, import_config7.defineConfig)([
1106
950
  {
1107
951
  // Apply React recommended rules for JavaScript files
1108
952
  files: JAVASCRIPT_FILES,
@@ -1112,15 +956,6 @@ var init_react = __esm({
1112
956
  // Apply React + TypeScript recommended rules (with type-checking enabled)
1113
957
  files: TYPESCRIPT_FILES,
1114
958
  extends: [import_eslint_plugin.default.configs["recommended-type-checked"]]
1115
- },
1116
- {
1117
- // Extend strict accessibility rules and latest React Hooks best practices
1118
- extends: [
1119
- import_eslint_plugin_jsx_a11y.default.flatConfigs.strict,
1120
- // Enforces strong accessibility standards
1121
- import_eslint_plugin_react_hooks.default.configs["recommended-latest"]
1122
- // Ensures proper usage of React Hooks
1123
- ]
1124
959
  }
1125
960
  ]);
1126
961
  }
@@ -1160,7 +995,7 @@ var init_imports = __esm({
1160
995
  nextImportRules = {
1161
996
  files: NEXT_JS_FILES,
1162
997
  rules: {
1163
- "import/no-default-export": "off"
998
+ "pasika/named-exports": "off"
1164
999
  }
1165
1000
  };
1166
1001
  }
@@ -1171,11 +1006,11 @@ var next_exports = {};
1171
1006
  __export(next_exports, {
1172
1007
  nextConfig: () => nextConfig
1173
1008
  });
1174
- var import_config7, import_eslint_plugin_next, babelOptions, nextConfig;
1009
+ var import_config8, import_eslint_plugin_next, babelOptions, nextConfig;
1175
1010
  var init_next = __esm({
1176
1011
  "eslint/next.ts"() {
1177
1012
  "use strict";
1178
- import_config7 = require("eslint/config");
1013
+ import_config8 = require("eslint/config");
1179
1014
  import_eslint_plugin_next = __toESM(require("@next/eslint-plugin-next"), 1);
1180
1015
  init_constants();
1181
1016
  init_imports();
@@ -1189,7 +1024,7 @@ var init_next = __esm({
1189
1024
  }
1190
1025
  })()
1191
1026
  };
1192
- nextConfig = (0, import_config7.defineConfig)([
1027
+ nextConfig = (0, import_config8.defineConfig)([
1193
1028
  // Applies Next.js specific rules globally.
1194
1029
  {
1195
1030
  plugins: {
@@ -1225,13 +1060,13 @@ var playwright_exports = {};
1225
1060
  __export(playwright_exports, {
1226
1061
  playwrightConfig: () => playwrightConfig
1227
1062
  });
1228
- var import_config8, import_eslint_plugin_playwright, playwrightConfig;
1063
+ var import_config9, import_eslint_plugin_playwright, playwrightConfig;
1229
1064
  var init_playwright = __esm({
1230
1065
  "eslint/playwright.ts"() {
1231
1066
  "use strict";
1232
- import_config8 = require("eslint/config");
1067
+ import_config9 = require("eslint/config");
1233
1068
  import_eslint_plugin_playwright = __toESM(require("eslint-plugin-playwright"), 1);
1234
- playwrightConfig = (0, import_config8.defineConfig)([
1069
+ playwrightConfig = (0, import_config9.defineConfig)([
1235
1070
  {
1236
1071
  ...import_eslint_plugin_playwright.default.configs["flat/recommended"],
1237
1072
  files: ["**/*.spec.{js,ts}", "**/*.test.{js,ts}", "**/tests/**/*.{js,ts}", "**/e2e/**/*.{js,ts}"],
@@ -1263,7 +1098,7 @@ function styleguide(options) {
1263
1098
  prettierConfig
1264
1099
  };
1265
1100
  }
1266
- var RuleSeverity, applySeverity, loadEslintConfigs;
1101
+ var RuleSeverity, applySeverity, loadPasikaConfigs, loadEslintConfigs;
1267
1102
  var init_styleguide = __esm({
1268
1103
  "styleguide.ts"() {
1269
1104
  init_prettier_config();
@@ -1280,6 +1115,60 @@ var init_styleguide = __esm({
1280
1115
  const { transformSeverity: transformSeverity2 } = await Promise.resolve().then(() => (init_transform_severity(), transform_severity_exports));
1281
1116
  return transformSeverity2(config, severity);
1282
1117
  };
1118
+ loadPasikaConfigs = async () => {
1119
+ const [pasika, cssMod, jsonMod, markdownMod] = await Promise.all([
1120
+ import("pasika/eslint"),
1121
+ import("@eslint/css"),
1122
+ import("@eslint/json"),
1123
+ import("@eslint/markdown")
1124
+ ]);
1125
+ const cssPlugin = cssMod.default;
1126
+ const jsonPlugin = jsonMod.default;
1127
+ const markdownPlugin = markdownMod.default;
1128
+ const pasikaJsTs = { rules: pasika.pasikaRules };
1129
+ const pasikaCss = { rules: pasika.cssRules };
1130
+ const pasikaJson = { rules: pasika.jsonRules };
1131
+ return [
1132
+ { ignores: ["**/*.css", "package.json", "**/*.md"] },
1133
+ {
1134
+ files: ["src/**/*.{cjs,cts,js,jsx,mjs,mts,ts,tsx}"],
1135
+ plugins: { pasika: pasikaJsTs },
1136
+ rules: Object.fromEntries(Object.keys(pasika.pasikaRules).map((name) => [`pasika/${name}`, "error"]))
1137
+ },
1138
+ {
1139
+ files: ["src/**/globals.css"],
1140
+ plugins: { css: cssPlugin, pasika: pasikaCss },
1141
+ language: "css/css",
1142
+ languageOptions: { tolerant: true },
1143
+ rules: Object.fromEntries(
1144
+ Object.keys(pasika.cssRules).filter((name) => name !== "global-css-location").map((name) => [`pasika/${name}`, "error"])
1145
+ )
1146
+ },
1147
+ {
1148
+ files: ["src/**/*.css"],
1149
+ plugins: { css: cssPlugin, pasika: pasikaCss },
1150
+ language: "css/css",
1151
+ languageOptions: { tolerant: true },
1152
+ rules: { "pasika/global-css-location": "error" }
1153
+ },
1154
+ {
1155
+ files: ["**/*.md"],
1156
+ ignores: ["**/_templates/**"],
1157
+ plugins: { markdown: markdownPlugin, pasika: { rules: pasika.mdRules } },
1158
+ language: "markdown/gfm",
1159
+ rules: Object.fromEntries(Object.keys(pasika.mdRules).map((name) => [`pasika/${name}`, "error"]))
1160
+ },
1161
+ {
1162
+ files: ["package.json"],
1163
+ plugins: {
1164
+ json: { languages: { json: jsonPlugin.languages.json } },
1165
+ pasika: pasikaJson
1166
+ },
1167
+ language: "json/json",
1168
+ rules: Object.fromEntries(Object.keys(pasika.jsonRules).map((name) => [`pasika/${name}`, "error"]))
1169
+ }
1170
+ ];
1171
+ };
1283
1172
  loadEslintConfigs = async (options) => {
1284
1173
  const { browser, node, typescript, react: react2, next, pasika, playwright, ignores, additionalConfigs = [] } = options;
1285
1174
  const configLoaders = [
@@ -1288,7 +1177,7 @@ var init_styleguide = __esm({
1288
1177
  { loader: () => Promise.resolve().then(() => (init_typescript2(), typescript_exports)).then((m) => m.typescriptConfig), severity: typescript },
1289
1178
  { loader: () => Promise.resolve().then(() => (init_react(), react_exports)).then((m) => m.reactConfig), severity: react2 },
1290
1179
  { loader: () => Promise.resolve().then(() => (init_next(), next_exports)).then((m) => m.nextConfig), severity: next },
1291
- { loader: () => import("pasika/eslint").then((m) => [m.pasikaConfig]), severity: pasika },
1180
+ { loader: () => loadPasikaConfigs(), severity: pasika },
1292
1181
  { loader: () => Promise.resolve().then(() => (init_playwright(), playwright_exports)).then((m) => m.playwrightConfig), severity: playwright }
1293
1182
  ];
1294
1183
  const eslintConfigs = [];
@@ -56,10 +56,7 @@ function transformSeverity(configsToProcess, targetSeverity) {
56
56
  if (!ruleConfig) {
57
57
  continue;
58
58
  }
59
- const [currentSeverity, ruleOptions, isOriginalRuleArray] = Array.isArray(ruleConfig) ? (
60
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- ESLint's 'RuleEntry' is typed with any[]
61
- [ruleConfig[0], ruleConfig.slice(1), true]
62
- ) : [ruleConfig, [], false];
59
+ const [currentSeverity, ruleOptions, isOriginalRuleArray] = Array.isArray(ruleConfig) ? [ruleConfig[0], ruleConfig.slice(1), true] : [ruleConfig, [], false];
63
60
  let newRuleEntry = ruleConfig;
64
61
  if (targetSeverity === "warn" /* Warn */) {
65
62
  if (currentSeverity === "error" /* Error */ || currentSeverity === 2 /* Error */) {
@@ -399,113 +396,6 @@ var init_es6 = __esm({
399
396
  }
400
397
  });
401
398
 
402
- // eslint/rules/import.ts
403
- var importRules, importOverrides;
404
- var init_import = __esm({
405
- "eslint/rules/import.ts"() {
406
- "use strict";
407
- importRules = {
408
- /**
409
- * Disallow non-import statements appearing before import statements.
410
- * 🚫 Not fixable - https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/first.md
411
- * Source: Vercel Style Guide → https://github.com/vercel/style-guide
412
- */
413
- "import/first": "error",
414
- /**
415
- * Require a newline after the last import/require.
416
- * 🔧 Fixable - https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/newline-after-import.md
417
- * Source: Vercel Style Guide → https://github.com/vercel/style-guide
418
- */
419
- "import/newline-after-import": "warn",
420
- /**
421
- * Disallow import of modules using absolute paths.
422
- * 🚫 Not fixable - https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-absolute-path.md
423
- * Source: Vercel Style Guide → https://github.com/vercel/style-guide
424
- */
425
- "import/no-absolute-path": "error",
426
- /**
427
- * Disallow cyclical dependencies between modules.
428
- * 🚫 Not fixable - https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-cycle.md
429
- * Source: Vercel Style Guide → https://github.com/vercel/style-guide
430
- */
431
- "import/no-cycle": "error",
432
- /**
433
- * Disallow duplicate imports from the same module.
434
- * 🔧 Fixable - https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-duplicates.md
435
- * Source: Added by bredansky → https://github.com/bredansky
436
- */
437
- "import/no-duplicates": ["error", { "prefer-inline": true }],
438
- /**
439
- * Disallow default exports.
440
- * 🚫 Not fixable - https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-default-export.md
441
- * Source: Vercel Style Guide → https://github.com/vercel/style-guide
442
- */
443
- "import/no-default-export": "error",
444
- /**
445
- * Disallow the use of extraneous packages.
446
- * 🚫 Not fixable - https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-extraneous-dependencies.md
447
- * Source: Vercel Style Guide → https://github.com/vercel/style-guide
448
- */
449
- "import/no-extraneous-dependencies": ["error", { includeTypes: true }],
450
- /**
451
- * Disallow mutable exports.
452
- * 🚫 Not fixable - https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-mutable-exports.md
453
- * Source: Vercel Style Guide → https://github.com/vercel/style-guide
454
- */
455
- "import/no-mutable-exports": "error",
456
- /**
457
- * Disallow importing packages through relative paths.
458
- * 🔧 Fixable - https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-relative-packages.md
459
- * Source: Vercel Style Guide → https://github.com/vercel/style-guide
460
- */
461
- "import/no-relative-packages": "warn",
462
- /**
463
- * Disallow a module from importing itself.
464
- * 🚫 Not fixable - https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-self-import.md
465
- * Source: Vercel Style Guide → https://github.com/vercel/style-guide
466
- */
467
- "import/no-self-import": "error",
468
- /**
469
- * Ensures that there are no useless path segments.
470
- * 🚫 Not fixable - https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-useless-path-segments.md
471
- * Source: Vercel Style Guide → https://github.com/vercel/style-guide
472
- */
473
- "import/no-useless-path-segments": ["error"],
474
- /**
475
- * Enforce a module import order convention.
476
- * 🔧 Fixable - https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/order.md
477
- * Source: Vercel Style Guide → https://github.com/vercel/style-guide
478
- */
479
- "import/order": [
480
- "warn",
481
- {
482
- groups: [
483
- "builtin",
484
- // Node.js built-in modules
485
- "external",
486
- // Packages
487
- "internal",
488
- // Aliased modules
489
- "parent",
490
- // Relative parent
491
- "sibling",
492
- // Relative sibling
493
- "index"
494
- // Relative index
495
- ],
496
- "newlines-between": "never"
497
- }
498
- ]
499
- };
500
- importOverrides = {
501
- files: ["**/*.config.{cjs,cts,js,mjs,mts,ts}"],
502
- rules: {
503
- "import/no-default-export": "off"
504
- }
505
- };
506
- }
507
- });
508
-
509
399
  // eslint/rules/possible-errors.ts
510
400
  var possibleErrorsRules;
511
401
  var init_possible_errors = __esm({
@@ -721,9 +611,6 @@ var init_variables = __esm({
721
611
 
722
612
  // eslint/_base.ts
723
613
  import eslintJavascriptPlugin from "@eslint/js";
724
- import * as importPlugin from "eslint-plugin-import";
725
- import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended";
726
- import babelParser from "@babel/eslint-parser";
727
614
  import { defineConfig as defineConfig3 } from "eslint/config";
728
615
  var baseConfig;
729
616
  var init_base = __esm({
@@ -732,29 +619,19 @@ var init_base = __esm({
732
619
  init_constants();
733
620
  init_best_practice();
734
621
  init_es6();
735
- init_import();
736
622
  init_possible_errors();
737
623
  init_stylistic();
738
624
  init_comments();
739
625
  init_unicorn();
740
626
  init_variables();
741
627
  baseConfig = defineConfig3([
742
- // Core recommended ESLint rules
743
628
  eslintJavascriptPlugin.configs.recommended,
744
- // Import plugin recommendations
745
- importPlugin.flatConfigs.recommended,
746
- // Prettier formatting integration
747
- eslintPluginPrettierRecommended,
748
- // Custom and recommended rules for comments
749
629
  commentsConfig,
750
- // Custom and recommended rules for unicorn plugin
751
630
  unicornConfig,
752
- // Custom ESLint configuration for all files
753
631
  {
754
632
  rules: {
755
633
  ...bestPracticeRules,
756
634
  ...es6Rules,
757
- ...importRules,
758
635
  ...possibleErrorsRules,
759
636
  ...stylisticRules,
760
637
  ...variablesRules
@@ -762,44 +639,12 @@ var init_base = __esm({
762
639
  },
763
640
  {
764
641
  languageOptions: {
765
- // Enable modern JS syntax
766
642
  ecmaVersion: ECMA_VERSION,
767
- // Use ES modules rather than CommonJS
768
643
  sourceType: "module"
769
644
  },
770
- // Import-related configuration
771
- settings: {
772
- "import/resolver": {
773
- node: true
774
- }
775
- },
776
- linterOptions: {
777
- // Warn if there are unnecessary `eslint-disable` comments
778
- reportUnusedDisableDirectives: true
779
- },
780
- // This un-ignores dotfiles like `.eslintrc.js`, which are usually ignored by default
645
+ linterOptions: { reportUnusedDisableDirectives: true },
781
646
  ignores: ["!.*.js", "!.*"]
782
- },
783
- // Override for JavaScript files (optional but useful)
784
- // Applies the Babel parser for parsing newer JS syntax (e.g., decorators, top-level await)
785
- {
786
- files: JAVASCRIPT_FILES,
787
- languageOptions: {
788
- parser: babelParser,
789
- // Use Babel parser instead of ESLint's default to support modern JS features
790
- parserOptions: {
791
- // Don't require a Babel config file like `.babelrc`
792
- requireConfigFile: false,
793
- // Inline Babel options for this parser instance
794
- babelOptions: {
795
- presets: ["@babel/preset-env"]
796
- // Transpile to ES5 based on target environments
797
- }
798
- }
799
- }
800
- },
801
- // Override for config files that commonly require default exports
802
- importOverrides
647
+ }
803
648
  ]);
804
649
  }
805
650
  });
@@ -870,7 +715,7 @@ var init_node = __esm({
870
715
 
871
716
  // eslint/rules/typescript/import.ts
872
717
  var typescriptImportRules;
873
- var init_import2 = __esm({
718
+ var init_import = __esm({
874
719
  "eslint/rules/typescript/import.ts"() {
875
720
  "use strict";
876
721
  typescriptImportRules = {
@@ -1021,14 +866,15 @@ __export(typescript_exports, {
1021
866
  typescriptConfig: () => typescriptConfig
1022
867
  });
1023
868
  import tseslint from "typescript-eslint";
869
+ import { defineConfig as defineConfig6 } from "eslint/config";
1024
870
  var typescriptConfig;
1025
871
  var init_typescript2 = __esm({
1026
872
  "eslint/typescript.ts"() {
1027
873
  "use strict";
1028
- init_import2();
874
+ init_import();
1029
875
  init_typescript();
1030
876
  init_constants();
1031
- typescriptConfig = tseslint.config([
877
+ typescriptConfig = defineConfig6([
1032
878
  // These rules enforce strong type safety and identify potential type-related issues.
1033
879
  tseslint.configs.strictTypeChecked,
1034
880
  // These rules focus on code style and readability specifically for TypeScript.
@@ -1077,16 +923,14 @@ var react_exports = {};
1077
923
  __export(react_exports, {
1078
924
  reactConfig: () => reactConfig
1079
925
  });
1080
- import { defineConfig as defineConfig6 } from "eslint/config";
926
+ import { defineConfig as defineConfig7 } from "eslint/config";
1081
927
  import react from "@eslint-react/eslint-plugin";
1082
- import jsxA11y from "eslint-plugin-jsx-a11y";
1083
- import reactHooks from "eslint-plugin-react-hooks";
1084
928
  var reactConfig;
1085
929
  var init_react = __esm({
1086
930
  "eslint/react.ts"() {
1087
931
  "use strict";
1088
932
  init_constants();
1089
- reactConfig = defineConfig6([
933
+ reactConfig = defineConfig7([
1090
934
  {
1091
935
  // Apply React recommended rules for JavaScript files
1092
936
  files: JAVASCRIPT_FILES,
@@ -1096,15 +940,6 @@ var init_react = __esm({
1096
940
  // Apply React + TypeScript recommended rules (with type-checking enabled)
1097
941
  files: TYPESCRIPT_FILES,
1098
942
  extends: [react.configs["recommended-type-checked"]]
1099
- },
1100
- {
1101
- // Extend strict accessibility rules and latest React Hooks best practices
1102
- extends: [
1103
- jsxA11y.flatConfigs.strict,
1104
- // Enforces strong accessibility standards
1105
- reactHooks.configs["recommended-latest"]
1106
- // Ensures proper usage of React Hooks
1107
- ]
1108
943
  }
1109
944
  ]);
1110
945
  }
@@ -1144,7 +979,7 @@ var init_imports = __esm({
1144
979
  nextImportRules = {
1145
980
  files: NEXT_JS_FILES,
1146
981
  rules: {
1147
- "import/no-default-export": "off"
982
+ "pasika/named-exports": "off"
1148
983
  }
1149
984
  };
1150
985
  }
@@ -1155,7 +990,7 @@ var next_exports = {};
1155
990
  __export(next_exports, {
1156
991
  nextConfig: () => nextConfig
1157
992
  });
1158
- import { defineConfig as defineConfig7 } from "eslint/config";
993
+ import { defineConfig as defineConfig8 } from "eslint/config";
1159
994
  import nextPlugin from "@next/eslint-plugin-next";
1160
995
  var babelOptions, nextConfig;
1161
996
  var init_next = __esm({
@@ -1173,7 +1008,7 @@ var init_next = __esm({
1173
1008
  }
1174
1009
  })()
1175
1010
  };
1176
- nextConfig = defineConfig7([
1011
+ nextConfig = defineConfig8([
1177
1012
  // Applies Next.js specific rules globally.
1178
1013
  {
1179
1014
  plugins: {
@@ -1209,13 +1044,13 @@ var playwright_exports = {};
1209
1044
  __export(playwright_exports, {
1210
1045
  playwrightConfig: () => playwrightConfig
1211
1046
  });
1212
- import { defineConfig as defineConfig8 } from "eslint/config";
1047
+ import { defineConfig as defineConfig9 } from "eslint/config";
1213
1048
  import playwrightPlugin from "eslint-plugin-playwright";
1214
1049
  var playwrightConfig;
1215
1050
  var init_playwright = __esm({
1216
1051
  "eslint/playwright.ts"() {
1217
1052
  "use strict";
1218
- playwrightConfig = defineConfig8([
1053
+ playwrightConfig = defineConfig9([
1219
1054
  {
1220
1055
  ...playwrightPlugin.configs["flat/recommended"],
1221
1056
  files: ["**/*.spec.{js,ts}", "**/*.test.{js,ts}", "**/tests/**/*.{js,ts}", "**/e2e/**/*.{js,ts}"],
@@ -1241,7 +1076,7 @@ function styleguide(options) {
1241
1076
  prettierConfig
1242
1077
  };
1243
1078
  }
1244
- var RuleSeverity, applySeverity, loadEslintConfigs;
1079
+ var RuleSeverity, applySeverity, loadPasikaConfigs, loadEslintConfigs;
1245
1080
  var init_styleguide = __esm({
1246
1081
  "styleguide.ts"() {
1247
1082
  init_prettier_config();
@@ -1258,6 +1093,60 @@ var init_styleguide = __esm({
1258
1093
  const { transformSeverity: transformSeverity2 } = await Promise.resolve().then(() => (init_transform_severity(), transform_severity_exports));
1259
1094
  return transformSeverity2(config, severity);
1260
1095
  };
1096
+ loadPasikaConfigs = async () => {
1097
+ const [pasika, cssMod, jsonMod, markdownMod] = await Promise.all([
1098
+ import("pasika/eslint"),
1099
+ import("@eslint/css"),
1100
+ import("@eslint/json"),
1101
+ import("@eslint/markdown")
1102
+ ]);
1103
+ const cssPlugin = cssMod.default;
1104
+ const jsonPlugin = jsonMod.default;
1105
+ const markdownPlugin = markdownMod.default;
1106
+ const pasikaJsTs = { rules: pasika.pasikaRules };
1107
+ const pasikaCss = { rules: pasika.cssRules };
1108
+ const pasikaJson = { rules: pasika.jsonRules };
1109
+ return [
1110
+ { ignores: ["**/*.css", "package.json", "**/*.md"] },
1111
+ {
1112
+ files: ["src/**/*.{cjs,cts,js,jsx,mjs,mts,ts,tsx}"],
1113
+ plugins: { pasika: pasikaJsTs },
1114
+ rules: Object.fromEntries(Object.keys(pasika.pasikaRules).map((name) => [`pasika/${name}`, "error"]))
1115
+ },
1116
+ {
1117
+ files: ["src/**/globals.css"],
1118
+ plugins: { css: cssPlugin, pasika: pasikaCss },
1119
+ language: "css/css",
1120
+ languageOptions: { tolerant: true },
1121
+ rules: Object.fromEntries(
1122
+ Object.keys(pasika.cssRules).filter((name) => name !== "global-css-location").map((name) => [`pasika/${name}`, "error"])
1123
+ )
1124
+ },
1125
+ {
1126
+ files: ["src/**/*.css"],
1127
+ plugins: { css: cssPlugin, pasika: pasikaCss },
1128
+ language: "css/css",
1129
+ languageOptions: { tolerant: true },
1130
+ rules: { "pasika/global-css-location": "error" }
1131
+ },
1132
+ {
1133
+ files: ["**/*.md"],
1134
+ ignores: ["**/_templates/**"],
1135
+ plugins: { markdown: markdownPlugin, pasika: { rules: pasika.mdRules } },
1136
+ language: "markdown/gfm",
1137
+ rules: Object.fromEntries(Object.keys(pasika.mdRules).map((name) => [`pasika/${name}`, "error"]))
1138
+ },
1139
+ {
1140
+ files: ["package.json"],
1141
+ plugins: {
1142
+ json: { languages: { json: jsonPlugin.languages.json } },
1143
+ pasika: pasikaJson
1144
+ },
1145
+ language: "json/json",
1146
+ rules: Object.fromEntries(Object.keys(pasika.jsonRules).map((name) => [`pasika/${name}`, "error"]))
1147
+ }
1148
+ ];
1149
+ };
1261
1150
  loadEslintConfigs = async (options) => {
1262
1151
  const { browser, node, typescript, react: react2, next, pasika, playwright, ignores, additionalConfigs = [] } = options;
1263
1152
  const configLoaders = [
@@ -1266,7 +1155,7 @@ var init_styleguide = __esm({
1266
1155
  { loader: () => Promise.resolve().then(() => (init_typescript2(), typescript_exports)).then((m) => m.typescriptConfig), severity: typescript },
1267
1156
  { loader: () => Promise.resolve().then(() => (init_react(), react_exports)).then((m) => m.reactConfig), severity: react2 },
1268
1157
  { loader: () => Promise.resolve().then(() => (init_next(), next_exports)).then((m) => m.nextConfig), severity: next },
1269
- { loader: () => import("pasika/eslint").then((m) => [m.pasikaConfig]), severity: pasika },
1158
+ { loader: () => loadPasikaConfigs(), severity: pasika },
1270
1159
  { loader: () => Promise.resolve().then(() => (init_playwright(), playwright_exports)).then((m) => m.playwrightConfig), severity: playwright }
1271
1160
  ];
1272
1161
  const eslintConfigs = [];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zirka",
3
- "version": "0.0.39",
3
+ "version": "0.0.40",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",
@@ -24,8 +24,9 @@
24
24
  ],
25
25
  "scripts": {
26
26
  "build": "tsup",
27
- "check": "npm run fix && npm run typecheck",
27
+ "check": "npm run lint && npm run typecheck",
28
28
  "fix": "eslint . --fix",
29
+ "lint": "eslint .",
29
30
  "prepare": "husky",
30
31
  "typecheck": "tsc -p tsconfig.json --noEmit"
31
32
  },
@@ -34,39 +35,37 @@
34
35
  "*.ts|*.mts|*.cts|*.tsx|*.js|*.cjs|*.mjs|*.jsx": "npx eslint --fix"
35
36
  },
36
37
  "dependencies": {
37
- "@babel/eslint-parser": "^7.27.1",
38
- "@babel/preset-env": "^7.27.2",
39
- "@eslint-community/eslint-plugin-eslint-comments": "^4.5.0",
40
- "@eslint-react/eslint-plugin": "^1.53.0",
41
- "@eslint/js": "^9.27.0",
38
+ "@eslint-community/eslint-plugin-eslint-comments": "^4.7.2",
39
+ "@eslint-react/eslint-plugin": "^5.18.6",
40
+ "@eslint/css": "^1.4.0",
41
+ "@eslint/js": "^9.39.0",
42
+ "@eslint/json": "^2.0.1",
43
+ "@eslint/markdown": "^8.0.3",
42
44
  "@next/eslint-plugin-next": "^15.3.3",
43
45
  "@types/eslint-plugin-jsx-a11y": "^6.10.0",
44
46
  "@types/node": "^22.15.29",
45
47
  "eslint-config-prettier": "^10.1.5",
46
- "eslint-import-resolver-typescript": "^4.4.4",
47
- "eslint-plugin-import": "^2.31.0",
48
- "eslint-plugin-jsx-a11y": "^6.10.2",
49
- "eslint-plugin-playwright": "^2.3.0",
50
- "eslint-plugin-prettier": "^5.4.0",
51
- "eslint-plugin-react-hooks": "^5.2.0",
52
- "eslint-plugin-unicorn": "^59.0.1",
48
+ "eslint-plugin-playwright": "^2.11.0",
49
+ "eslint-plugin-prettier": "^5.5.6",
50
+ "eslint-plugin-react-hooks": "^7.1.1",
51
+ "eslint-plugin-unicorn": "^73.0.0",
53
52
  "globals": "^16.2.0",
54
53
  "jiti": "^2.6.1",
55
- "pasika": "^0.3.0",
54
+ "pasika": "^0.3.2",
56
55
  "prettier-plugin-packagejson": "^2.5.14",
57
- "prettier-plugin-tailwindcss": "^0.6.14",
58
- "typescript-eslint": "^8.33.1"
56
+ "prettier-plugin-tailwindcss": "^0.6.14"
59
57
  },
60
58
  "devDependencies": {
61
- "eslint": "^9.27.0",
59
+ "eslint": "^10.9.1",
62
60
  "husky": "^9.1.7",
63
61
  "lint-staged": "^16.1.6",
64
62
  "prettier": "^3.5.3",
65
63
  "tsup": "^8.5.0",
66
- "typescript": "^5.8.3"
64
+ "typescript": "^5.8.3",
65
+ "typescript-eslint": "^8.68.0"
67
66
  },
68
67
  "peerDependencies": {
69
- "eslint": "^9.27.0",
68
+ "eslint": "^10.9.1",
70
69
  "prettier": "^3.5.3",
71
70
  "typescript": "^5.8.3"
72
71
  },
@@ -13,6 +13,6 @@ declare module "@next/eslint-plugin-next" {
13
13
  }
14
14
 
15
15
  const plugin: NextESLintPlugin;
16
- // eslint-disable-next-line import/no-default-export -- @next/eslint-plugin-next exports plugin by default
16
+
17
17
  export default plugin;
18
18
  }