@ethang/eslint-config 24.0.1 → 24.0.2

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.
Files changed (75) hide show
  1. package/build.ts +48 -0
  2. package/dist/config.html.js +2 -0
  3. package/dist/config.html.js.map +1 -0
  4. package/dist/eslint.config.d.ts +4 -0
  5. package/dist/eslint.config.js +2 -0
  6. package/dist/package.json +67 -0
  7. package/eslint.config.js +28 -2
  8. package/package.json +1 -1
  9. package/src/README.md +132 -0
  10. package/src/build/create-config-file.ts +70 -0
  11. package/src/build/create-config.ts +98 -0
  12. package/src/build/get-react-version.ts +19 -0
  13. package/src/build/list-utilities.ts +137 -0
  14. package/src/build/rule-list.ts +283 -0
  15. package/src/build/update-readme.ts +259 -0
  16. package/src/build/update-rules.ts +173 -0
  17. package/src/config.angular.js +122 -0
  18. package/src/config.astro.js +69 -0
  19. package/src/config.html.js +73 -0
  20. package/src/config.react.js +111 -0
  21. package/src/config.solid.js +34 -0
  22. package/src/config.storybook.js +31 -0
  23. package/src/config.tailwind.js +28 -0
  24. package/src/constants.js +16 -0
  25. package/src/eslint.config.js +1075 -0
  26. package/src/eslint.html.js +73 -0
  27. package/src/setup/a11y.ts +19 -0
  28. package/src/setup/angular.ts +36 -0
  29. package/src/setup/astro.ts +14 -0
  30. package/src/setup/compat.ts +13 -0
  31. package/src/setup/cspell.ts +100 -0
  32. package/src/setup/css.ts +15 -0
  33. package/src/setup/eslint.ts +250 -0
  34. package/src/setup/gen-rules.ts +85 -0
  35. package/src/setup/html.ts +17 -0
  36. package/src/setup/json.ts +17 -0
  37. package/src/setup/lodash.ts +59 -0
  38. package/src/setup/markdown.ts +16 -0
  39. package/src/setup/perfectionist.ts +49 -0
  40. package/src/setup/react.ts +37 -0
  41. package/src/setup/solid.ts +21 -0
  42. package/src/setup/sonar.ts +40 -0
  43. package/src/setup/storybook.ts +10 -0
  44. package/src/setup/tailwind.ts +12 -0
  45. package/src/setup/tanstack-query.ts +8 -0
  46. package/src/setup/tanstack-router.ts +8 -0
  47. package/src/setup/typescript-eslint.ts +114 -0
  48. package/src/setup/unicorn.ts +38 -0
  49. package/src/tsconfig.json +3 -0
  50. package/tsconfig.json +3 -0
  51. /package/{README.md → dist/README.md} +0 -0
  52. /package/{chunk-WK3YS7OG.js → dist/chunk-WK3YS7OG.js} +0 -0
  53. /package/{chunk-WK3YS7OG.js.map → dist/chunk-WK3YS7OG.js.map} +0 -0
  54. /package/{config.angular.d.ts → dist/config.angular.d.ts} +0 -0
  55. /package/{config.angular.js → dist/config.angular.js} +0 -0
  56. /package/{config.angular.js.map → dist/config.angular.js.map} +0 -0
  57. /package/{config.astro.d.ts → dist/config.astro.d.ts} +0 -0
  58. /package/{config.astro.js → dist/config.astro.js} +0 -0
  59. /package/{config.astro.js.map → dist/config.astro.js.map} +0 -0
  60. /package/{config.react.d.ts → dist/config.html.d.ts} +0 -0
  61. /package/{config.solid.d.ts → dist/config.react.d.ts} +0 -0
  62. /package/{config.react.js → dist/config.react.js} +0 -0
  63. /package/{config.react.js.map → dist/config.react.js.map} +0 -0
  64. /package/{config.storybook.d.ts → dist/config.solid.d.ts} +0 -0
  65. /package/{config.solid.js → dist/config.solid.js} +0 -0
  66. /package/{config.solid.js.map → dist/config.solid.js.map} +0 -0
  67. /package/{eslint.config.d.ts → dist/config.storybook.d.ts} +0 -0
  68. /package/{config.storybook.js → dist/config.storybook.js} +0 -0
  69. /package/{config.storybook.js.map → dist/config.storybook.js.map} +0 -0
  70. /package/{config.tailwind.d.ts → dist/config.tailwind.d.ts} +0 -0
  71. /package/{config.tailwind.js → dist/config.tailwind.js} +0 -0
  72. /package/{config.tailwind.js.map → dist/config.tailwind.js.map} +0 -0
  73. /package/{constants.js → dist/constants.js} +0 -0
  74. /package/{constants.js.map → dist/constants.js.map} +0 -0
  75. /package/{eslint.config.js.map → dist/eslint.config.js.map} +0 -0
package/build.ts ADDED
@@ -0,0 +1,48 @@
1
+ import replace from "lodash/replace.js";
2
+ import { copyFileSync, writeFileSync } from "node:fs";
3
+
4
+ import { projectBuilder } from "../project-builder/src/project-builder.ts";
5
+ import { updateReadme } from "./src/build/update-readme.js";
6
+ import { updateRules } from "./src/build/update-rules.js";
7
+
8
+ const configFiles = [
9
+ "src/eslint.config.js",
10
+ "src/config.html.js",
11
+ "src/config.astro.js",
12
+ "src/config.react.js",
13
+ "src/config.solid.js",
14
+ "src/config.angular.js",
15
+ "src/config.storybook.js",
16
+ "src/config.tailwind.js",
17
+ ];
18
+
19
+ await updateRules();
20
+ updateReadme();
21
+ await projectBuilder(import.meta.dirname, {
22
+ entry: [...configFiles, "src/constants.js"],
23
+ outDir: "dist",
24
+ });
25
+ copyFileSync("src/README.md", "dist/README.md");
26
+
27
+ const typeFile = `import { defineConfig } from "eslint/config";
28
+
29
+ declare const _default: Parameters<typeof defineConfig>;
30
+ export default _default;
31
+ `;
32
+
33
+ const tailwindTypeFile = `import { defineConfig } from "eslint/config";
34
+
35
+ declare const _default: (pathToIndex: string) => Parameters<typeof defineConfig>;
36
+ export default _default;
37
+ `;
38
+
39
+ for (const configFile of configFiles) {
40
+ let distributionFile = replace(configFile, "src", "dist");
41
+ distributionFile = replace(distributionFile, ".js", ".d.ts");
42
+
43
+ if ("src/config.tailwind.js" === configFile) {
44
+ writeFileSync(distributionFile, tailwindTypeFile);
45
+ } else {
46
+ writeFileSync(distributionFile, typeFile);
47
+ }
48
+ }
@@ -0,0 +1,2 @@
1
+ import{a as r,b as e}from"./chunk-WK3YS7OG.js";import{defineConfig as t}from"eslint/config";import o from"@html-eslint/eslint-plugin";var m=t({files:["**/*.html"],ignores:r,languageOptions:e,language:"html/html",plugins:{html:o},rules:{"html/attrs-newline":"off","html/element-newline":"off","html/id-naming-convention":"error","html/indent":"off","html/lowercase":"error","html/max-element-depth":"error","html/no-abstract-roles":"error","html/no-accesskey-attrs":"error","html/no-aria-hidden-body":"error","html/no-aria-hidden-on-focusable":"error","html/no-duplicate-attrs":"error","html/no-duplicate-class":"error","html/no-duplicate-id":"error","html/no-duplicate-in-head":"error","html/no-empty-headings":"error","html/no-extra-spacing-attrs":"off","html/no-extra-spacing-text":"error","html/no-heading-inside-button":"error","html/no-ineffective-attrs":"error","html/no-inline-styles":"error","html/no-invalid-entity":"error","html/no-invalid-role":"error","html/no-multiple-empty-lines":"error","html/no-multiple-h1":"error","html/no-nested-interactive":"error","html/no-non-scalable-viewport":"error","html/no-obsolete-tags":"error","html/no-positive-tabindex":"error","html/no-restricted-attr-values":"error","html/no-restricted-attrs":"error","html/no-restricted-tags":"error","html/no-script-style-type":"error","html/no-skip-heading-levels":"error","html/no-target-blank":"error","html/no-trailing-spaces":"error","html/no-whitespace-only-children":"error","html/prefer-https":"error","html/quotes":"error","html/require-attrs":"error","html/require-button-type":"error","html/require-closing-tags":"off","html/require-doctype":"error","html/require-explicit-size":"error","html/require-form-method":"error","html/require-frame-title":"error","html/require-img-alt":"error","html/require-input-label":"error","html/require-lang":"error","html/require-li-container":"error","html/require-meta-charset":"error","html/require-meta-description":"error","html/require-meta-viewport":"error","html/require-open-graph-protocol":"error","html/require-title":"error","html/sort-attrs":"error","html/use-baseline":"error"}});export{m as default};
2
+ //# sourceMappingURL=config.html.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/config.html.js"],"sourcesContent":["// @ts-nocheck\nimport { defineConfig } from \"eslint/config\";\nimport { ignores, languageOptions } from \"./constants.js\";\nimport html from \"@html-eslint/eslint-plugin\";\n\nexport default defineConfig(\n {\n files: [\"**/*.html\"],\nignores,\nlanguageOptions,language: \"html/html\",\n plugins: {\n \"html\": html,\n },\n rules: {\n \"html/attrs-newline\":\"off\",\"html/element-newline\":\"off\",\"html/id-naming-convention\":\"error\",\"html/indent\":\"off\",\"html/lowercase\":\"error\",\"html/max-element-depth\":\"error\",\"html/no-abstract-roles\":\"error\",\"html/no-accesskey-attrs\":\"error\",\"html/no-aria-hidden-body\":\"error\",\"html/no-aria-hidden-on-focusable\":\"error\",\"html/no-duplicate-attrs\":\"error\",\"html/no-duplicate-class\":\"error\",\"html/no-duplicate-id\":\"error\",\"html/no-duplicate-in-head\":\"error\",\"html/no-empty-headings\":\"error\",\"html/no-extra-spacing-attrs\":\"off\",\"html/no-extra-spacing-text\":\"error\",\"html/no-heading-inside-button\":\"error\",\"html/no-ineffective-attrs\":\"error\",\"html/no-inline-styles\":\"error\",\"html/no-invalid-entity\":\"error\",\"html/no-invalid-role\":\"error\",\"html/no-multiple-empty-lines\":\"error\",\"html/no-multiple-h1\":\"error\",\"html/no-nested-interactive\":\"error\",\"html/no-non-scalable-viewport\":\"error\",\"html/no-obsolete-tags\":\"error\",\"html/no-positive-tabindex\":\"error\",\"html/no-restricted-attr-values\":\"error\",\"html/no-restricted-attrs\":\"error\",\"html/no-restricted-tags\":\"error\",\"html/no-script-style-type\":\"error\",\"html/no-skip-heading-levels\":\"error\",\"html/no-target-blank\":\"error\",\"html/no-trailing-spaces\":\"error\",\"html/no-whitespace-only-children\":\"error\",\"html/prefer-https\":\"error\",\"html/quotes\":\"error\",\"html/require-attrs\":\"error\",\"html/require-button-type\":\"error\",\"html/require-closing-tags\":\"off\",\"html/require-doctype\":\"error\",\"html/require-explicit-size\":\"error\",\"html/require-form-method\":\"error\",\"html/require-frame-title\":\"error\",\"html/require-img-alt\":\"error\",\"html/require-input-label\":\"error\",\"html/require-lang\":\"error\",\"html/require-li-container\":\"error\",\"html/require-meta-charset\":\"error\",\"html/require-meta-description\":\"error\",\"html/require-meta-viewport\":\"error\",\"html/require-open-graph-protocol\":\"error\",\"html/require-title\":\"error\",\"html/sort-attrs\":\"error\",\"html/use-baseline\":\"error\"\n },\n \n },\n \n \n );\n"],"mappings":"+CACA,OAAS,gBAAAA,MAAoB,gBAE7B,OAAOC,MAAU,6BAEjB,IAAOC,EAAQC,EACT,CACF,MAAO,CAAC,WAAW,EACvB,QAAAC,EACA,gBAAAC,EAAgB,SAAU,YACtB,QAAS,CACP,KAAQJ,CACV,EACA,MAAO,CACL,qBAAqB,MAAM,uBAAuB,MAAM,4BAA4B,QAAQ,cAAc,MAAM,iBAAiB,QAAQ,yBAAyB,QAAQ,yBAAyB,QAAQ,0BAA0B,QAAQ,2BAA2B,QAAQ,mCAAmC,QAAQ,0BAA0B,QAAQ,0BAA0B,QAAQ,uBAAuB,QAAQ,4BAA4B,QAAQ,yBAAyB,QAAQ,8BAA8B,MAAM,6BAA6B,QAAQ,gCAAgC,QAAQ,4BAA4B,QAAQ,wBAAwB,QAAQ,yBAAyB,QAAQ,uBAAuB,QAAQ,+BAA+B,QAAQ,sBAAsB,QAAQ,6BAA6B,QAAQ,gCAAgC,QAAQ,wBAAwB,QAAQ,4BAA4B,QAAQ,iCAAiC,QAAQ,2BAA2B,QAAQ,0BAA0B,QAAQ,4BAA4B,QAAQ,8BAA8B,QAAQ,uBAAuB,QAAQ,0BAA0B,QAAQ,mCAAmC,QAAQ,oBAAoB,QAAQ,cAAc,QAAQ,qBAAqB,QAAQ,2BAA2B,QAAQ,4BAA4B,MAAM,uBAAuB,QAAQ,6BAA6B,QAAQ,2BAA2B,QAAQ,2BAA2B,QAAQ,uBAAuB,QAAQ,2BAA2B,QAAQ,oBAAoB,QAAQ,4BAA4B,QAAQ,4BAA4B,QAAQ,gCAAgC,QAAQ,6BAA6B,QAAQ,mCAAmC,QAAQ,qBAAqB,QAAQ,kBAAkB,QAAQ,oBAAoB,OAC31D,CAEF,CAGE","names":["defineConfig","html","config_html_default","defineConfig","ignores","languageOptions"]}
@@ -0,0 +1,4 @@
1
+ import { defineConfig } from "eslint/config";
2
+
3
+ declare const _default: Parameters<typeof defineConfig>;
4
+ export default _default;
@@ -0,0 +1,2 @@
1
+ import{a as e,b as o}from"./chunk-WK3YS7OG.js";import{defineConfig as n}from"eslint/config";import s from"eslint-plugin-jsx-a11y";import t from"eslint-plugin-compat";import a from"@cspell/eslint-plugin";import i from"@eslint/css";import c from"eslint-config-prettier";import p from"eslint-plugin-prettier/recommended";import r from"@eslint/json";import l from"eslint-plugin-lodash";import u from"@eslint/markdown";import d from"eslint-plugin-perfectionist";import f from"eslint-plugin-sonarjs";import m from"@tanstack/eslint-plugin-query";import y from"@tanstack/eslint-plugin-router";import g from"typescript-eslint";import h from"eslint-plugin-unicorn";var _=n({files:["**/*.{js,ts,jsx,tsx,cjs,cts,mjs,mts}"],ignores:e,languageOptions:o,settings:{react:{version:"19.2.3"}},plugins:{compat:t,"@typescript-eslint":g.plugin,unicorn:h,lodash:l,sonar:f,perfectionist:d,"@tanstack/query":m,"@tanstack/router":y,a11y:s,cspell:a},rules:{"compat/compat":"error","accessor-pairs":"error","array-callback-return":"error","arrow-body-style":["error","always"],"block-scoped-var":"error",camelcase:"off","capitalized-comments":"off","class-methods-use-this":"off",complexity:"off","consistent-return":"off","consistent-this":"off","constructor-super":"error",curly:"off","default-case":"off","default-case-last":"off","default-param-last":"off","dot-notation":"off",eqeqeq:"error","for-direction":"error","func-name-matching":"error","func-names":"off","func-style":["error","declaration",{allowArrowFunctions:!0}],"getter-return":"error","grouped-accessor-pairs":"error","guard-for-in":"error","id-denylist":"off","id-length":"off","id-match":"off","init-declarations":"off","logical-assignment-operators":"error","max-classes-per-file":"error","max-depth":"error","max-lines":"off","max-lines-per-function":"off","max-nested-callbacks":"error","max-params":"off","max-statements":"off","new-cap":"off","no-alert":"error","no-array-constructor":"off","no-async-promise-executor":"error","no-await-in-loop":"error","no-bitwise":"error","no-caller":"error","no-case-declarations":"error","no-class-assign":"error","no-compare-neg-zero":"error","no-cond-assign":"error","no-console":"error","no-const-assign":"error","no-constant-binary-expression":"error","no-constant-condition":"error","no-constructor-return":"error","no-continue":"error","no-control-regex":"error","no-debugger":"error","no-delete-var":"error","no-div-regex":"error","no-dupe-args":"error","no-dupe-class-members":"off","no-dupe-else-if":"error","no-dupe-keys":"error","no-duplicate-case":"error","no-duplicate-imports":"error","no-else-return":"error","no-empty":"error","no-empty-character-class":"error","no-empty-function":"off","no-empty-pattern":"error","no-empty-static-block":"error","no-eq-null":"error","no-eval":"error","no-ex-assign":"error","no-extend-native":"error","no-extra-bind":"error","no-extra-boolean-cast":"error","no-extra-label":"error","no-fallthrough":"error","no-func-assign":"error","no-global-assign":"error","no-implicit-coercion":"error","no-implicit-globals":"off","no-implied-eval":"off","no-import-assign":"error","no-inline-comments":"off","no-inner-declarations":"error","no-invalid-regexp":"error","no-invalid-this":"error","no-irregular-whitespace":"error","no-iterator":"error","no-label-var":"error","no-labels":"error","no-lone-blocks":"error","no-lonely-if":"error","no-loop-func":"error","no-loss-of-precision":"error","no-magic-numbers":"off","no-misleading-character-class":"error","no-multi-assign":"error","no-multi-str":"error","no-negated-condition":"error","no-nested-ternary":"error","no-new":"error","no-new-func":"error","no-new-native-nonconstructor":"error","no-new-wrappers":"error","no-nonoctal-decimal-escape":"error","no-obj-calls":"error","no-object-constructor":"error","no-octal":"error","no-octal-escape":"error","no-param-reassign":"error","no-plusplus":"error","no-promise-executor-return":"error","no-proto":"error","no-prototype-builtins":"error","no-redeclare":"off","no-regex-spaces":"error","no-restricted-exports":"off","no-restricted-globals":"off","no-restricted-imports":"off","no-restricted-properties":"off","no-restricted-syntax":"off","no-return-assign":"error","no-script-url":"error","no-self-assign":"error","no-self-compare":"error","no-sequences":"error","no-setter-return":"error","no-shadow":"off","no-shadow-restricted-names":"error","no-sparse-arrays":"error","no-template-curly-in-string":"off","no-ternary":"off","no-this-before-super":"error","no-throw-literal":"off","no-unassigned-vars":"error","no-undef":"off","no-undef-init":"error","no-undefined":"off","no-underscore-dangle":"off","no-unexpected-multiline":"off","no-unmodified-loop-condition":"error","no-unneeded-ternary":"error","no-unreachable":"error","no-unreachable-loop":"error","no-unsafe-finally":"error","no-unsafe-negation":"error","no-unsafe-optional-chaining":["error",{disallowArithmeticOperators:!0}],"no-unused-expressions":"off","no-unused-labels":"error","no-unused-private-class-members":"error","no-unused-vars":"off","no-use-before-define":"off","no-useless-assignment":"off","no-useless-backreference":"error","no-useless-call":"error","no-useless-catch":"error","no-useless-computed-key":"error","no-useless-concat":"error","no-useless-constructor":"off","no-useless-escape":"error","no-useless-rename":"error","no-useless-return":"error","no-var":"error","no-void":"error","no-warning-comments":"off","no-with":"error","object-shorthand":"error","one-var":"off","operator-assignment":"error","prefer-arrow-callback":"off","prefer-const":"error","prefer-destructuring":"off","prefer-exponentiation-operator":"error","prefer-named-capture-group":"error","prefer-numeric-literals":"error","prefer-object-has-own":"error","prefer-object-spread":"error","prefer-promise-reject-errors":"off","prefer-regex-literals":"error","prefer-rest-params":"error","prefer-spread":"error","prefer-template":"error","preserve-caught-error":"error",radix:"error","require-atomic-updates":"error","require-await":"off","require-unicode-regexp":"error","require-yield":"error","sort-imports":"off","sort-keys":"off","sort-vars":"error",strict:"error","symbol-description":"error","unicode-bom":"error","use-isnan":"error","valid-typeof":"error","vars-on-top":"error",yoda:["error","always"],"@typescript-eslint/adjacent-overload-signatures":"off","@typescript-eslint/array-type":"error","@typescript-eslint/await-thenable":"error","@typescript-eslint/ban-ts-comment":"error","@typescript-eslint/ban-tslint-comment":"error","@typescript-eslint/class-literal-property-style":"error","@typescript-eslint/class-methods-use-this":"off","@typescript-eslint/consistent-generic-constructors":"error","@typescript-eslint/consistent-indexed-object-style":"error","@typescript-eslint/consistent-return":"off","@typescript-eslint/consistent-type-assertions":"error","@typescript-eslint/consistent-type-definitions":["error","type"],"@typescript-eslint/consistent-type-exports":"error","@typescript-eslint/consistent-type-imports":["error",{fixStyle:"inline-type-imports"}],"@typescript-eslint/default-param-last":"error","@typescript-eslint/dot-notation":"error","@typescript-eslint/explicit-function-return-type":"off","@typescript-eslint/explicit-member-accessibility":"error","@typescript-eslint/explicit-module-boundary-types":"off","@typescript-eslint/init-declarations":"off","@typescript-eslint/max-params":"off","@typescript-eslint/member-ordering":"off","@typescript-eslint/method-signature-style":"error","@typescript-eslint/naming-convention":"off","@typescript-eslint/no-array-constructor":"error","@typescript-eslint/no-array-delete":"error","@typescript-eslint/no-base-to-string":"error","@typescript-eslint/no-confusing-non-null-assertion":"error","@typescript-eslint/no-confusing-void-expression":"error","@typescript-eslint/no-deprecated":"error","@typescript-eslint/no-dupe-class-members":"off","@typescript-eslint/no-duplicate-enum-values":"error","@typescript-eslint/no-duplicate-type-constituents":"error","@typescript-eslint/no-dynamic-delete":"error","@typescript-eslint/no-empty-function":"error","@typescript-eslint/no-empty-object-type":"error","@typescript-eslint/no-explicit-any":"error","@typescript-eslint/no-extra-non-null-assertion":"error","@typescript-eslint/no-extraneous-class":"error","@typescript-eslint/no-floating-promises":"error","@typescript-eslint/no-for-in-array":"error","@typescript-eslint/no-implied-eval":"error","@typescript-eslint/no-import-type-side-effects":"error","@typescript-eslint/no-inferrable-types":"error","@typescript-eslint/no-invalid-this":"off","@typescript-eslint/no-invalid-void-type":"error","@typescript-eslint/no-loop-func":"error","@typescript-eslint/no-magic-numbers":"off","@typescript-eslint/no-meaningless-void-operator":"error","@typescript-eslint/no-misused-new":"error","@typescript-eslint/no-misused-promises":"error","@typescript-eslint/no-misused-spread":"error","@typescript-eslint/no-mixed-enums":"error","@typescript-eslint/no-namespace":"error","@typescript-eslint/no-non-null-asserted-nullish-coalescing":"error","@typescript-eslint/no-non-null-asserted-optional-chain":"error","@typescript-eslint/no-non-null-assertion":"error","@typescript-eslint/no-redeclare":"off","@typescript-eslint/no-redundant-type-constituents":"error","@typescript-eslint/no-require-imports":"error","@typescript-eslint/no-restricted-imports":"error","@typescript-eslint/no-restricted-types":"error","@typescript-eslint/no-shadow":"error","@typescript-eslint/no-this-alias":"error","@typescript-eslint/no-unnecessary-boolean-literal-compare":"error","@typescript-eslint/no-unnecessary-condition":"error","@typescript-eslint/no-unnecessary-parameter-property-assignment":"error","@typescript-eslint/no-unnecessary-qualifier":"error","@typescript-eslint/no-unnecessary-template-expression":"error","@typescript-eslint/no-unnecessary-type-arguments":"error","@typescript-eslint/no-unnecessary-type-assertion":"error","@typescript-eslint/no-unnecessary-type-constraint":"error","@typescript-eslint/no-unnecessary-type-conversion":"error","@typescript-eslint/no-unnecessary-type-parameters":"off","@typescript-eslint/no-unsafe-argument":"error","@typescript-eslint/no-unsafe-assignment":"error","@typescript-eslint/no-unsafe-call":"error","@typescript-eslint/no-unsafe-declaration-merging":"error","@typescript-eslint/no-unsafe-enum-comparison":"error","@typescript-eslint/no-unsafe-function-type":"error","@typescript-eslint/no-unsafe-member-access":"error","@typescript-eslint/no-unsafe-return":"error","@typescript-eslint/no-unsafe-type-assertion":"error","@typescript-eslint/no-unsafe-unary-minus":"error","@typescript-eslint/no-unused-expressions":"error","@typescript-eslint/no-unused-private-class-members":"error","@typescript-eslint/no-unused-vars":["error",{args:"all",argsIgnorePattern:"^_",caughtErrors:"all",caughtErrorsIgnorePattern:"^_",destructuredArrayIgnorePattern:"^_",ignoreRestSiblings:!0,varsIgnorePattern:"^_"}],"@typescript-eslint/no-use-before-define":"off","@typescript-eslint/no-useless-constructor":"error","@typescript-eslint/no-useless-empty-export":"error","@typescript-eslint/no-wrapper-object-types":"error","@typescript-eslint/non-nullable-type-assertion-style":"error","@typescript-eslint/only-throw-error":"error","@typescript-eslint/parameter-properties":"off","@typescript-eslint/prefer-as-const":"error","@typescript-eslint/prefer-destructuring":"error","@typescript-eslint/prefer-enum-initializers":"error","@typescript-eslint/prefer-find":"error","@typescript-eslint/prefer-for-of":"error","@typescript-eslint/prefer-function-type":"error","@typescript-eslint/prefer-includes":"error","@typescript-eslint/prefer-literal-enum-member":"error","@typescript-eslint/prefer-namespace-keyword":"error","@typescript-eslint/prefer-nullish-coalescing":"error","@typescript-eslint/prefer-optional-chain":"error","@typescript-eslint/prefer-promise-reject-errors":"error","@typescript-eslint/prefer-readonly":"error","@typescript-eslint/prefer-readonly-parameter-types":"off","@typescript-eslint/prefer-reduce-type-parameter":"error","@typescript-eslint/prefer-regexp-exec":"error","@typescript-eslint/prefer-return-this-type":"error","@typescript-eslint/prefer-string-starts-ends-with":"error","@typescript-eslint/promise-function-async":"error","@typescript-eslint/related-getter-setter-pairs":"error","@typescript-eslint/require-array-sort-compare":"error","@typescript-eslint/require-await":"error","@typescript-eslint/restrict-plus-operands":"error","@typescript-eslint/restrict-template-expressions":"error","@typescript-eslint/return-await":"error","@typescript-eslint/strict-boolean-expressions":"error","@typescript-eslint/switch-exhaustiveness-check":"error","@typescript-eslint/triple-slash-reference":"error","@typescript-eslint/unbound-method":"error","@typescript-eslint/unified-signatures":"error","@typescript-eslint/use-unknown-in-catch-callback-variable":"error","unicorn/better-regex":"error","unicorn/catch-error-name":"error","unicorn/consistent-assert":"error","unicorn/consistent-date-clone":"error","unicorn/consistent-destructuring":"error","unicorn/consistent-empty-array-spread":"error","unicorn/consistent-existence-index-check":"error","unicorn/consistent-function-scoping":"error","unicorn/custom-error-definition":"error","unicorn/empty-brace-spaces":"off","unicorn/error-message":"error","unicorn/escape-case":"error","unicorn/expiring-todo-comments":"error","unicorn/explicit-length-check":"off","unicorn/filename-case":"error","unicorn/import-style":"error","unicorn/new-for-builtins":"error","unicorn/no-abusive-eslint-disable":"error","unicorn/no-accessor-recursion":"error","unicorn/no-anonymous-default-export":"error","unicorn/no-array-callback-reference":"error","unicorn/no-array-for-each":"error","unicorn/no-array-method-this-argument":"error","unicorn/no-array-reduce":"error","unicorn/no-array-reverse":"error","unicorn/no-array-sort":"error","unicorn/no-await-expression-member":"error","unicorn/no-await-in-promise-methods":"error","unicorn/no-console-spaces":"error","unicorn/no-document-cookie":"error","unicorn/no-empty-file":"error","unicorn/no-for-loop":"error","unicorn/no-hex-escape":"error","unicorn/no-immediate-mutation":"error","unicorn/no-instanceof-builtins":"error","unicorn/no-invalid-fetch-options":"error","unicorn/no-invalid-remove-event-listener":"error","unicorn/no-keyword-prefix":"off","unicorn/no-lonely-if":"error","unicorn/no-magic-array-flat-depth":"error","unicorn/no-named-default":"error","unicorn/no-negated-condition":"error","unicorn/no-negation-in-equality-check":"error","unicorn/no-nested-ternary":"off","unicorn/no-new-array":"error","unicorn/no-new-buffer":"error","unicorn/no-null":"off","unicorn/no-object-as-default-parameter":"error","unicorn/no-process-exit":"error","unicorn/no-single-promise-in-promise-methods":"error","unicorn/no-static-only-class":"error","unicorn/no-thenable":"error","unicorn/no-this-assignment":"error","unicorn/no-typeof-undefined":"error","unicorn/no-unnecessary-array-flat-depth":"error","unicorn/no-unnecessary-array-splice-count":"error","unicorn/no-unnecessary-await":"error","unicorn/no-unnecessary-polyfills":"error","unicorn/no-unnecessary-slice-end":"error","unicorn/no-unreadable-array-destructuring":"error","unicorn/no-unreadable-iife":"error","unicorn/no-unused-properties":"error","unicorn/no-useless-collection-argument":"error","unicorn/no-useless-error-capture-stack-trace":"error","unicorn/no-useless-fallback-in-spread":"error","unicorn/no-useless-length-check":"error","unicorn/no-useless-promise-resolve-reject":"error","unicorn/no-useless-spread":"error","unicorn/no-useless-switch-case":"error","unicorn/no-useless-undefined":"error","unicorn/no-zero-fractions":"error","unicorn/number-literal-case":"off","unicorn/numeric-separators-style":"error","unicorn/prefer-add-event-listener":"error","unicorn/prefer-array-find":"error","unicorn/prefer-array-flat":"error","unicorn/prefer-array-flat-map":"error","unicorn/prefer-array-index-of":"error","unicorn/prefer-array-some":"error","unicorn/prefer-at":"error","unicorn/prefer-bigint-literals":"error","unicorn/prefer-blob-reading-methods":"error","unicorn/prefer-class-fields":"error","unicorn/prefer-classlist-toggle":"error","unicorn/prefer-code-point":"error","unicorn/prefer-date-now":"error","unicorn/prefer-default-parameters":"error","unicorn/prefer-dom-node-append":"error","unicorn/prefer-dom-node-dataset":"error","unicorn/prefer-dom-node-remove":"error","unicorn/prefer-dom-node-text-content":"error","unicorn/prefer-event-target":"error","unicorn/prefer-export-from":"error","unicorn/prefer-global-this":"error","unicorn/prefer-import-meta-properties":"error","unicorn/prefer-includes":"error","unicorn/prefer-json-parse-buffer":"error","unicorn/prefer-keyboard-event-key":"error","unicorn/prefer-logical-operator-over-ternary":"error","unicorn/prefer-math-min-max":"error","unicorn/prefer-math-trunc":"error","unicorn/prefer-modern-dom-apis":"error","unicorn/prefer-modern-math-apis":"error","unicorn/prefer-module":"error","unicorn/prefer-native-coercion-functions":"error","unicorn/prefer-negative-index":"error","unicorn/prefer-node-protocol":"error","unicorn/prefer-number-properties":"error","unicorn/prefer-object-from-entries":"error","unicorn/prefer-optional-catch-binding":"error","unicorn/prefer-prototype-methods":"error","unicorn/prefer-query-selector":"error","unicorn/prefer-reflect-apply":"error","unicorn/prefer-regexp-test":"error","unicorn/prefer-response-static-json":"error","unicorn/prefer-set-has":"error","unicorn/prefer-set-size":"error","unicorn/prefer-single-call":"error","unicorn/prefer-spread":"error","unicorn/prefer-string-raw":"error","unicorn/prefer-string-replace-all":"error","unicorn/prefer-string-slice":"error","unicorn/prefer-string-starts-ends-with":"error","unicorn/prefer-string-trim-start-end":"error","unicorn/prefer-structured-clone":"error","unicorn/prefer-switch":"error","unicorn/prefer-ternary":"error","unicorn/prefer-top-level-await":"error","unicorn/prefer-type-error":"error","unicorn/prevent-abbreviations":"error","unicorn/relative-url-style":"error","unicorn/require-array-join-separator":"error","unicorn/require-module-attributes":"error","unicorn/require-module-specifiers":"error","unicorn/require-number-to-fixed-digits-argument":"error","unicorn/require-post-message-target-origin":"error","unicorn/string-content":"error","unicorn/switch-case-braces":"error","unicorn/template-indent":"off","unicorn/text-encoding-identifier-case":"error","unicorn/throw-new-error":"error","lodash/callback-binding":"error","lodash/chain-style":[2,"as-needed"],"lodash/chaining":"error","lodash/collection-method-value":"error","lodash/collection-ordering":"error","lodash/collection-return":"error","lodash/consistent-compose":[2,"flow"],"lodash/identity-shorthand":[2,"always"],"lodash/import-scope":[2,"method"],"lodash/matches-prop-shorthand":[2,"always"],"lodash/matches-shorthand":[2,"always",3],"lodash/no-commit":"error","lodash/no-double-unwrap":"error","lodash/no-extra-args":"error","lodash/no-unbound-this":"error","lodash/path-style":[2,"array"],"lodash/prefer-compact":"error","lodash/prefer-constant":"error","lodash/prefer-filter":"error","lodash/prefer-find":"error","lodash/prefer-flat-map":"error","lodash/prefer-get":"error","lodash/prefer-immutable-method":"error","lodash/prefer-includes":[2,{includeNative:!0}],"lodash/prefer-invoke-map":"error","lodash/prefer-is-nil":"error","lodash/prefer-lodash-chain":"error","lodash/prefer-lodash-method":"error","lodash/prefer-lodash-typecheck":"error","lodash/prefer-map":"error","lodash/prefer-matches":"error","lodash/prefer-noop":"error","lodash/prefer-over-quantifier":"error","lodash/prefer-reject":"error","lodash/prefer-some":[2,{includeNative:!0}],"lodash/prefer-startswith":"error","lodash/prefer-thru":"error","lodash/prefer-times":"error","lodash/prefer-wrapper-method":"error","lodash/preferred-alias":"error","lodash/prop-shorthand":[2,"always"],"lodash/unwrap":"error","sonar/anchor-precedence":"error","sonar/argument-type":"error","sonar/arguments-order":"error","sonar/arguments-usage":"error","sonar/array-callback-without-return":"error","sonar/array-constructor":"error","sonar/arrow-function-convention":"off","sonar/assertions-in-tests":"error","sonar/aws-apigateway-public-api":"error","sonar/aws-ec2-rds-dms-public":"error","sonar/aws-ec2-unencrypted-ebs-volume":"error","sonar/aws-efs-unencrypted":"error","sonar/aws-iam-all-privileges":"error","sonar/aws-iam-all-resources-accessible":"error","sonar/aws-iam-privilege-escalation":"error","sonar/aws-iam-public-access":"error","sonar/aws-opensearchservice-domain":"error","sonar/aws-rds-unencrypted-databases":"error","sonar/aws-restricted-ip-admin-access":"error","sonar/aws-s3-bucket-granted-access":"error","sonar/aws-s3-bucket-insecure-http":"error","sonar/aws-s3-bucket-public-access":"error","sonar/aws-s3-bucket-versioning":"error","sonar/aws-sagemaker-unencrypted-notebook":"error","sonar/aws-sns-unencrypted-topics":"error","sonar/aws-sqs-unencrypted-queue":"error","sonar/bitwise-operators":"error","sonar/block-scoped-var":"error","sonar/bool-param-default":"error","sonar/call-argument-line":"error","sonar/chai-determinate-assertion":"error","sonar/class-name":"error","sonar/class-prototype":"error","sonar/code-eval":"error","sonar/cognitive-complexity":"error","sonar/comma-or-logical-or-case":"error","sonar/comment-regex":"off","sonar/concise-regex":"error","sonar/confidential-information-logging":"error","sonar/constructor-for-side-effects":"error","sonar/content-length":"error","sonar/content-security-policy":"error","sonar/cookie-no-httponly":"error","sonar/cors":"error","sonar/csrf":"error","sonar/cyclomatic-complexity":"off","sonar/declarations-in-global-scope":"error","sonar/deprecation":"error","sonar/destructuring-assignment-syntax":"error","sonar/different-types-comparison":"error","sonar/disabled-auto-escaping":"error","sonar/disabled-resource-integrity":"error","sonar/disabled-timeout":"error","sonar/duplicates-in-character-class":"error","sonar/elseif-without-else":"error","sonar/empty-string-repetition":"error","sonar/encryption-secure-mode":"error","sonar/existing-groups":"error","sonar/expression-complexity":"error","sonar/file-header":"off","sonar/file-name-differ-from-class":"error","sonar/file-permissions":"error","sonar/file-uploads":"error","sonar/fixme-tag":"error","sonar/for-in":"error","sonar/for-loop-increment-sign":"error","sonar/frame-ancestors":"error","sonar/function-inside-loop":"error","sonar/function-name":["error",{format:"^(?:[a-z][a-zA-Z0-9]*|[A-Z][A-Z0-9]*)$"}],"sonar/function-return-type":"off","sonar/future-reserved-words":"error","sonar/generator-without-yield":"error","sonar/hashing":"error","sonar/hidden-files":"error","sonar/in-operator-type-error":"error","sonar/inconsistent-function-call":"error","sonar/index-of-compare-to-positive-number":"error","sonar/insecure-cookie":"error","sonar/insecure-jwt-token":"error","sonar/inverted-assertion-arguments":"error","sonar/jsx-no-leaked-render":"error","sonar/label-position":"error","sonar/link-with-target-blank":"error","sonar/max-lines":"error","sonar/max-lines-per-function":"error","sonar/max-switch-cases":"error","sonar/max-union-size":"off","sonar/misplaced-loop-counter":"error","sonar/nested-control-flow":"error","sonar/new-operator-misuse":"error","sonar/no-all-duplicated-branches":"error","sonar/no-alphabetical-sort":"error","sonar/no-angular-bypass-sanitization":"error","sonar/no-array-delete":"error","sonar/no-associative-arrays":"error","sonar/no-async-constructor":"error","sonar/no-built-in-override":"error","sonar/no-case-label-in-switch":"error","sonar/no-clear-text-protocols":"error","sonar/no-code-after-done":"error","sonar/no-collapsible-if":"error","sonar/no-collection-size-mischeck":"error","sonar/no-commented-code":"error","sonar/no-control-regex":"error","sonar/no-dead-store":"error","sonar/no-delete-var":"error","sonar/no-duplicate-in-composite":"error","sonar/no-duplicate-string":"error","sonar/no-duplicated-branches":"error","sonar/no-element-overwrite":"error","sonar/no-empty-after-reluctant":"error","sonar/no-empty-alternatives":"error","sonar/no-empty-character-class":"error","sonar/no-empty-collection":"error","sonar/no-empty-group":"error","sonar/no-empty-test-file":"error","sonar/no-equals-in-for-termination":"error","sonar/no-exclusive-tests":"error","sonar/no-extra-arguments":"error","sonar/no-fallthrough":"error","sonar/no-for-in-iterable":"error","sonar/no-function-declaration-in-block":"error","sonar/no-global-this":"error","sonar/no-globals-shadowing":"error","sonar/no-gratuitous-expressions":"error","sonar/no-hardcoded-ip":"error","sonar/no-hardcoded-passwords":"error","sonar/no-hardcoded-secrets":"error","sonar/no-hook-setter-in-body":"error","sonar/no-identical-conditions":"error","sonar/no-identical-expressions":"error","sonar/no-identical-functions":"error","sonar/no-ignored-exceptions":"error","sonar/no-ignored-return":"error","sonar/no-implicit-dependencies":"off","sonar/no-implicit-global":"error","sonar/no-in-misuse":"error","sonar/no-incomplete-assertions":"error","sonar/no-inconsistent-returns":"off","sonar/no-incorrect-string-concat":"error","sonar/no-internal-api-use":"error","sonar/no-intrusive-permissions":"error","sonar/no-invalid-regexp":"error","sonar/no-invariant-returns":"error","sonar/no-inverted-boolean-check":"error","sonar/no-ip-forward":"error","sonar/no-labels":"error","sonar/no-literal-call":"error","sonar/no-mime-sniff":"error","sonar/no-misleading-array-reverse":"error","sonar/no-misleading-character-class":"error","sonar/no-mixed-content":"error","sonar/no-nested-assignment":"error","sonar/no-nested-conditional":"error","sonar/no-nested-functions":"error","sonar/no-nested-incdec":"error","sonar/no-nested-switch":"error","sonar/no-nested-template-literals":"error","sonar/no-os-command-from-path":"error","sonar/no-parameter-reassignment":"error","sonar/no-primitive-wrappers":"error","sonar/no-redundant-assignments":"error","sonar/no-redundant-boolean":"error","sonar/no-redundant-jump":"error","sonar/no-redundant-optional":"error","sonar/no-reference-error":"off","sonar/no-referrer-policy":"error","sonar/no-regex-spaces":"error","sonar/no-require-or-define":"error","sonar/no-return-type-any":"error","sonar/no-same-argument-assert":"error","sonar/no-same-line-conditional":"error","sonar/no-selector-parameter":"error","sonar/no-skipped-tests":"error","sonar/no-small-switch":"error","sonar/no-sonar-comments":"error","sonar/no-table-as-layout":"error","sonar/no-try-promise":"error","sonar/no-undefined-argument":"error","sonar/no-undefined-assignment":"off","sonar/no-unenclosed-multiline-block":"error","sonar/no-uniq-key":"error","sonar/no-unsafe-unzip":"error","sonar/no-unthrown-error":"error","sonar/no-unused-collection":"error","sonar/no-unused-function-argument":"error","sonar/no-unused-vars":"error","sonar/no-use-of-empty-return-value":"error","sonar/no-useless-catch":"error","sonar/no-useless-increment":"error","sonar/no-useless-intersection":"error","sonar/no-useless-react-setstate":"error","sonar/no-variable-usage-before-declaration":"error","sonar/no-weak-cipher":"error","sonar/no-weak-keys":"error","sonar/no-wildcard-import":"error","sonar/non-existent-operator":"error","sonar/non-number-in-arithmetic-expression":"error","sonar/null-dereference":"error","sonar/object-alt-content":"error","sonar/operation-returning-nan":"error","sonar/os-command":"error","sonar/post-message":"error","sonar/prefer-default-last":"error","sonar/prefer-immediate-return":"error","sonar/prefer-object-literal":"error","sonar/prefer-promise-shorthand":"error","sonar/prefer-read-only-props":"error","sonar/prefer-regexp-exec":"error","sonar/prefer-single-boolean-return":"error","sonar/prefer-type-guard":"error","sonar/prefer-while":"error","sonar/production-debug":"error","sonar/pseudo-random":"error","sonar/public-static-readonly":"error","sonar/publicly-writable-directories":"error","sonar/reduce-initial-value":"error","sonar/redundant-type-aliases":"error","sonar/regex-complexity":"error","sonar/session-regeneration":"error","sonar/shorthand-property-grouping":"off","sonar/single-char-in-character-classes":"error","sonar/single-character-alternation":"error","sonar/slow-regex":"error","sonar/sql-queries":"error","sonar/stable-tests":"error","sonar/stateful-regex":"error","sonar/strict-transport-security":"error","sonar/strings-comparison":"error","sonar/super-invocation":"error","sonar/table-header":"error","sonar/table-header-reference":"error","sonar/test-check-exception":"error","sonar/todo-tag":"off","sonar/too-many-break-or-continue-in-loop":"error","sonar/unicode-aware-regex":"error","sonar/unused-import":"error","sonar/unused-named-groups":"error","sonar/unverified-certificate":"error","sonar/unverified-hostname":"error","sonar/updated-const-var":"error","sonar/updated-loop-counter":"error","sonar/use-type-alias":"error","sonar/values-not-convertible-to-numbers":"error","sonar/variable-name":"error","sonar/void-use":"error","sonar/weak-ssl":"error","sonar/x-powered-by":"error","sonar/xml-parser-xxe":"error","perfectionist/sort-array-includes":"error","perfectionist/sort-classes":"error","perfectionist/sort-decorators":"error","perfectionist/sort-enums":"error","perfectionist/sort-exports":"error","perfectionist/sort-heritage-clauses":"error","perfectionist/sort-imports":"error","perfectionist/sort-interfaces":"error","perfectionist/sort-intersection-types":"error","perfectionist/sort-jsx-props":["error",{groups:["shorthand","multiline"]}],"perfectionist/sort-maps":"error","perfectionist/sort-modules":"error","perfectionist/sort-named-exports":"error","perfectionist/sort-named-imports":"error","perfectionist/sort-object-types":"error","perfectionist/sort-objects":["error",{partitionByComment:!0}],"perfectionist/sort-sets":"error","perfectionist/sort-switch-case":["error",{order:"asc",type:"alphabetical"}],"perfectionist/sort-union-types":"error","perfectionist/sort-variable-declarations":["error",{order:"asc",type:"alphabetical"}],"@tanstack/query/exhaustive-deps":"error","@tanstack/query/infinite-query-property-order":"error","@tanstack/query/mutation-property-order":"error","@tanstack/query/no-rest-destructuring":"error","@tanstack/query/no-unstable-deps":"error","@tanstack/query/no-void-query-fn":"error","@tanstack/query/stable-query-client":"error","@tanstack/router/create-route-property-order":"error","a11y/alt-text":"error","a11y/anchor-ambiguous-text":"error","a11y/anchor-has-content":"error","a11y/anchor-is-valid":"error","a11y/aria-activedescendant-has-tabindex":"error","a11y/aria-props":"error","a11y/aria-proptypes":"error","a11y/aria-role":"error","a11y/aria-unsupported-elements":"error","a11y/autocomplete-valid":"error","a11y/click-events-have-key-events":"error","a11y/control-has-associated-label":"off","a11y/heading-has-content":"error","a11y/html-has-lang":"error","a11y/iframe-has-title":"error","a11y/img-redundant-alt":"error","a11y/interactive-supports-focus":"error","a11y/label-has-associated-control":"error","a11y/lang":"error","a11y/media-has-caption":"off","a11y/mouse-events-have-key-events":"error","a11y/no-access-key":"error","a11y/no-aria-hidden-on-focusable":"error","a11y/no-autofocus":"error","a11y/no-distracting-elements":"error","a11y/no-interactive-element-to-noninteractive-role":"error","a11y/no-noninteractive-element-interactions":"error","a11y/no-noninteractive-element-to-interactive-role":"error","a11y/no-noninteractive-tabindex":"error","a11y/no-redundant-roles":"error","a11y/no-static-element-interactions":"error","a11y/prefer-tag-over-role":"error","a11y/role-has-required-aria-props":"error","a11y/role-supports-aria-props":"error","a11y/scope":"error","a11y/tabindex-no-positive":"error","cspell/spellchecker":["error",{cspell:{words:["tauri","Applynetic","julianday","typicode","toolbelt","taze","ethang","TSESTree","Boop","cldr","astro","laravel","qwik","sitecore","uswds","mediat","Packt","Academind","Udemy","Colte","Bootcamp","HTMX","MERN","Nuxt","Credly","Sterett","Beyonder","hotspot","lqip","Hawn","nextui","speculationrules","zustand","vinxi","datasource","turso","supabase","solidjs","labelledby","svix","blockqoute","cortexjs","mathrm","nums","lifecycles","krausest","Signalis","Plass","Iteree","Sonner","cmdk","ngsw","dexie","leetcode","ngsrc","sindresorhus","rogan","heroui","millis","duckdb","pthread","remeda","radash","noto","nosniff","SAMEORIGIN","starcoder","logprobs","sealioning","swebok","pluralsight","skillset","junie"]}}]}},{files:["**/*.md"],plugins:{markdown:u},rules:{"markdown/fenced-code-language":"error","markdown/heading-increment":"error","markdown/no-bare-urls":"error","markdown/no-duplicate-definitions":"error","markdown/no-duplicate-headings":"error","markdown/no-empty-definitions":"error","markdown/no-empty-images":"error","markdown/no-empty-links":"error","markdown/no-html":"error","markdown/no-invalid-label-refs":"error","markdown/no-missing-atx-heading-space":"error","markdown/no-missing-label-refs":"error","markdown/no-missing-link-fragments":"error","markdown/no-multiple-h1":"error","markdown/no-reference-like-urls":"error","markdown/no-reversed-media-syntax":"error","markdown/no-space-in-emphasis":"error","markdown/no-unused-definitions":"error","markdown/require-alt-text":"error","markdown/table-column-count":"error"}},{files:["**/*.css"],language:"css/css",plugins:{css:i},rules:{"css/font-family-fallbacks":"error","css/no-duplicate-imports":"error","css/no-duplicate-keyframe-selectors":"error","css/no-empty-blocks":"error","css/no-important":"error","css/no-invalid-at-rule-placement":"error","css/no-invalid-at-rules":"off","css/no-invalid-named-grid-areas":"error","css/no-invalid-properties":"error","css/no-unmatchable-selectors":"error","css/prefer-logical-properties":"error","css/relative-font-units":"error","css/selector-complexity":"error","css/use-baseline":["error",{available:"newly"}],"css/use-layers":"error"}},{files:["**/*.json"],language:"json/json",plugins:{json:r},rules:{"json/no-duplicate-keys":"error","json/no-empty-keys":"error","json/no-unnormalized-keys":"error","json/no-unsafe-values":"error","json/sort-keys":"error","json/top-level-interop":"error"}},{files:["**/*.jsonc"],language:"json/jsonc",plugins:{json:r},rules:{"json/no-duplicate-keys":"error","json/no-empty-keys":"error","json/no-unnormalized-keys":"error","json/no-unsafe-values":"error","json/sort-keys":"error","json/top-level-interop":"error"}},{files:["**/*.json5"],language:"json/json5",plugins:{json:r},rules:{"json/no-duplicate-keys":"error","json/no-empty-keys":"error","json/no-unnormalized-keys":"error","json/no-unsafe-values":"error","json/sort-keys":"error","json/top-level-interop":"error"}},c,p);export{_ as default};
2
+ //# sourceMappingURL=eslint.config.js.map
@@ -0,0 +1,67 @@
1
+ {
2
+ "author": "Ethan Glover",
3
+ "browserslist": [
4
+ "extends browserslist-config-baseline",
5
+ "current node"
6
+ ],
7
+ "dependencies": {
8
+ "@angular-eslint/eslint-plugin": "^21.1.0",
9
+ "@angular-eslint/eslint-plugin-template": "^21.1.0",
10
+ "@angular-eslint/template-parser": "^21.1.0",
11
+ "@cspell/eslint-plugin": "^9.4.0",
12
+ "@eslint-react/eslint-plugin": "^2.3.13",
13
+ "@eslint/css": "0.14.1",
14
+ "@eslint/js": "^9.39.2",
15
+ "@eslint/json": "^0.14.0",
16
+ "@eslint/markdown": "^7.5.1",
17
+ "@html-eslint/eslint-plugin": "^0.51.0",
18
+ "@tanstack/eslint-plugin-query": "^5.91.2",
19
+ "@tanstack/eslint-plugin-router": "^1.141.0",
20
+ "@typescript-eslint/parser": "^8.49.0",
21
+ "angular-eslint": "21.1.0",
22
+ "eslint": "^9.39.2",
23
+ "eslint-config-prettier": "^10.1.8",
24
+ "eslint-plugin-astro": "^1.5.0",
25
+ "eslint-plugin-compat": "^6.0.2",
26
+ "eslint-plugin-jsx-a11y": "^6.10.2",
27
+ "eslint-plugin-lodash": "^8.0.0",
28
+ "eslint-plugin-perfectionist": "^4.15.1",
29
+ "eslint-plugin-prettier": "^5.5.4",
30
+ "eslint-plugin-react-hooks": "^7.0.1",
31
+ "eslint-plugin-solid": "^0.14.5",
32
+ "eslint-plugin-sonarjs": "3.0.5",
33
+ "eslint-plugin-storybook": "^10.1.8",
34
+ "eslint-plugin-tailwindcss": "^4.0.0-beta.0",
35
+ "eslint-plugin-unicorn": "^62.0.0",
36
+ "prettier": "^3.7.4",
37
+ "typescript-eslint": "^8.49.0"
38
+ },
39
+ "devDependencies": {
40
+ "@ethang/markdown-generator": "^1.1.5",
41
+ "@ethang/toolbelt": "^4.4.11",
42
+ "@types/eslint-plugin-jsx-a11y": "^6.10.1",
43
+ "@types/eslint-plugin-tailwindcss": "^3.17.0",
44
+ "@types/lodash": "^4.17.21",
45
+ "@types/node": "^25.0.2",
46
+ "browserslist-config-baseline": "^0.5.0",
47
+ "lodash": "^4.17.21",
48
+ "tailwindcss": "^4.1.18",
49
+ "typescript": "^5.9.3",
50
+ "zod": "^4.1.13"
51
+ },
52
+ "engines": {
53
+ "node": ">=24"
54
+ },
55
+ "license": "ISC",
56
+ "main": "eslint.config.js",
57
+ "name": "@ethang/eslint-config",
58
+ "repository": {
59
+ "url": "git+https://github.com/eglove/ethang-monorepo.git#master"
60
+ },
61
+ "scripts": {
62
+ "build": "bun build.ts && pnpm lint",
63
+ "lint": "eslint . --fix --concurrency=auto && prettier src --write"
64
+ },
65
+ "type": "module",
66
+ "version": "24.0.2"
67
+ }
package/eslint.config.js CHANGED
@@ -1,2 +1,28 @@
1
- import{a as e,b as o}from"./chunk-WK3YS7OG.js";import{defineConfig as n}from"eslint/config";import s from"eslint-plugin-jsx-a11y";import t from"eslint-plugin-compat";import a from"@cspell/eslint-plugin";import i from"@eslint/css";import c from"eslint-config-prettier";import p from"eslint-plugin-prettier/recommended";import r from"@eslint/json";import l from"eslint-plugin-lodash";import u from"@eslint/markdown";import d from"eslint-plugin-perfectionist";import f from"eslint-plugin-sonarjs";import m from"@tanstack/eslint-plugin-query";import y from"@tanstack/eslint-plugin-router";import g from"typescript-eslint";import h from"eslint-plugin-unicorn";var _=n({files:["**/*.{js,ts,jsx,tsx,cjs,cts,mjs,mts}"],ignores:e,languageOptions:o,settings:{react:{version:"19.2.3"}},plugins:{compat:t,"@typescript-eslint":g.plugin,unicorn:h,lodash:l,sonar:f,perfectionist:d,"@tanstack/query":m,"@tanstack/router":y,a11y:s,cspell:a},rules:{"compat/compat":"error","accessor-pairs":"error","array-callback-return":"error","arrow-body-style":["error","always"],"block-scoped-var":"error",camelcase:"off","capitalized-comments":"off","class-methods-use-this":"off",complexity:"off","consistent-return":"off","consistent-this":"off","constructor-super":"error",curly:"off","default-case":"off","default-case-last":"off","default-param-last":"off","dot-notation":"off",eqeqeq:"error","for-direction":"error","func-name-matching":"error","func-names":"off","func-style":["error","declaration",{allowArrowFunctions:!0}],"getter-return":"error","grouped-accessor-pairs":"error","guard-for-in":"error","id-denylist":"off","id-length":"off","id-match":"off","init-declarations":"off","logical-assignment-operators":"error","max-classes-per-file":"error","max-depth":"error","max-lines":"off","max-lines-per-function":"off","max-nested-callbacks":"error","max-params":"off","max-statements":"off","new-cap":"off","no-alert":"error","no-array-constructor":"off","no-async-promise-executor":"error","no-await-in-loop":"error","no-bitwise":"error","no-caller":"error","no-case-declarations":"error","no-class-assign":"error","no-compare-neg-zero":"error","no-cond-assign":"error","no-console":"error","no-const-assign":"error","no-constant-binary-expression":"error","no-constant-condition":"error","no-constructor-return":"error","no-continue":"error","no-control-regex":"error","no-debugger":"error","no-delete-var":"error","no-div-regex":"error","no-dupe-args":"error","no-dupe-class-members":"off","no-dupe-else-if":"error","no-dupe-keys":"error","no-duplicate-case":"error","no-duplicate-imports":"error","no-else-return":"error","no-empty":"error","no-empty-character-class":"error","no-empty-function":"off","no-empty-pattern":"error","no-empty-static-block":"error","no-eq-null":"error","no-eval":"error","no-ex-assign":"error","no-extend-native":"error","no-extra-bind":"error","no-extra-boolean-cast":"error","no-extra-label":"error","no-fallthrough":"error","no-func-assign":"error","no-global-assign":"error","no-implicit-coercion":"error","no-implicit-globals":"off","no-implied-eval":"off","no-import-assign":"error","no-inline-comments":"off","no-inner-declarations":"error","no-invalid-regexp":"error","no-invalid-this":"error","no-irregular-whitespace":"error","no-iterator":"error","no-label-var":"error","no-labels":"error","no-lone-blocks":"error","no-lonely-if":"error","no-loop-func":"error","no-loss-of-precision":"error","no-magic-numbers":"off","no-misleading-character-class":"error","no-multi-assign":"error","no-multi-str":"error","no-negated-condition":"error","no-nested-ternary":"error","no-new":"error","no-new-func":"error","no-new-native-nonconstructor":"error","no-new-wrappers":"error","no-nonoctal-decimal-escape":"error","no-obj-calls":"error","no-object-constructor":"error","no-octal":"error","no-octal-escape":"error","no-param-reassign":"error","no-plusplus":"error","no-promise-executor-return":"error","no-proto":"error","no-prototype-builtins":"error","no-redeclare":"off","no-regex-spaces":"error","no-restricted-exports":"off","no-restricted-globals":"off","no-restricted-imports":"off","no-restricted-properties":"off","no-restricted-syntax":"off","no-return-assign":"error","no-script-url":"error","no-self-assign":"error","no-self-compare":"error","no-sequences":"error","no-setter-return":"error","no-shadow":"off","no-shadow-restricted-names":"error","no-sparse-arrays":"error","no-template-curly-in-string":"off","no-ternary":"off","no-this-before-super":"error","no-throw-literal":"off","no-unassigned-vars":"error","no-undef":"off","no-undef-init":"error","no-undefined":"off","no-underscore-dangle":"off","no-unexpected-multiline":"off","no-unmodified-loop-condition":"error","no-unneeded-ternary":"error","no-unreachable":"error","no-unreachable-loop":"error","no-unsafe-finally":"error","no-unsafe-negation":"error","no-unsafe-optional-chaining":["error",{disallowArithmeticOperators:!0}],"no-unused-expressions":"off","no-unused-labels":"error","no-unused-private-class-members":"error","no-unused-vars":"off","no-use-before-define":"off","no-useless-assignment":"off","no-useless-backreference":"error","no-useless-call":"error","no-useless-catch":"error","no-useless-computed-key":"error","no-useless-concat":"error","no-useless-constructor":"off","no-useless-escape":"error","no-useless-rename":"error","no-useless-return":"error","no-var":"error","no-void":"error","no-warning-comments":"off","no-with":"error","object-shorthand":"error","one-var":"off","operator-assignment":"error","prefer-arrow-callback":"off","prefer-const":"error","prefer-destructuring":"off","prefer-exponentiation-operator":"error","prefer-named-capture-group":"error","prefer-numeric-literals":"error","prefer-object-has-own":"error","prefer-object-spread":"error","prefer-promise-reject-errors":"off","prefer-regex-literals":"error","prefer-rest-params":"error","prefer-spread":"error","prefer-template":"error","preserve-caught-error":"error",radix:"error","require-atomic-updates":"error","require-await":"off","require-unicode-regexp":"error","require-yield":"error","sort-imports":"off","sort-keys":"off","sort-vars":"error",strict:"error","symbol-description":"error","unicode-bom":"error","use-isnan":"error","valid-typeof":"error","vars-on-top":"error",yoda:["error","always"],"@typescript-eslint/adjacent-overload-signatures":"off","@typescript-eslint/array-type":"error","@typescript-eslint/await-thenable":"error","@typescript-eslint/ban-ts-comment":"error","@typescript-eslint/ban-tslint-comment":"error","@typescript-eslint/class-literal-property-style":"error","@typescript-eslint/class-methods-use-this":"off","@typescript-eslint/consistent-generic-constructors":"error","@typescript-eslint/consistent-indexed-object-style":"error","@typescript-eslint/consistent-return":"off","@typescript-eslint/consistent-type-assertions":"error","@typescript-eslint/consistent-type-definitions":["error","type"],"@typescript-eslint/consistent-type-exports":"error","@typescript-eslint/consistent-type-imports":["error",{fixStyle:"inline-type-imports"}],"@typescript-eslint/default-param-last":"error","@typescript-eslint/dot-notation":"error","@typescript-eslint/explicit-function-return-type":"off","@typescript-eslint/explicit-member-accessibility":"error","@typescript-eslint/explicit-module-boundary-types":"off","@typescript-eslint/init-declarations":"off","@typescript-eslint/max-params":"off","@typescript-eslint/member-ordering":"off","@typescript-eslint/method-signature-style":"error","@typescript-eslint/naming-convention":"off","@typescript-eslint/no-array-constructor":"error","@typescript-eslint/no-array-delete":"error","@typescript-eslint/no-base-to-string":"error","@typescript-eslint/no-confusing-non-null-assertion":"error","@typescript-eslint/no-confusing-void-expression":"error","@typescript-eslint/no-deprecated":"error","@typescript-eslint/no-dupe-class-members":"off","@typescript-eslint/no-duplicate-enum-values":"error","@typescript-eslint/no-duplicate-type-constituents":"error","@typescript-eslint/no-dynamic-delete":"error","@typescript-eslint/no-empty-function":"error","@typescript-eslint/no-empty-object-type":"error","@typescript-eslint/no-explicit-any":"error","@typescript-eslint/no-extra-non-null-assertion":"error","@typescript-eslint/no-extraneous-class":"error","@typescript-eslint/no-floating-promises":"error","@typescript-eslint/no-for-in-array":"error","@typescript-eslint/no-implied-eval":"error","@typescript-eslint/no-import-type-side-effects":"error","@typescript-eslint/no-inferrable-types":"error","@typescript-eslint/no-invalid-this":"off","@typescript-eslint/no-invalid-void-type":"error","@typescript-eslint/no-loop-func":"error","@typescript-eslint/no-magic-numbers":"off","@typescript-eslint/no-meaningless-void-operator":"error","@typescript-eslint/no-misused-new":"error","@typescript-eslint/no-misused-promises":"error","@typescript-eslint/no-misused-spread":"error","@typescript-eslint/no-mixed-enums":"error","@typescript-eslint/no-namespace":"error","@typescript-eslint/no-non-null-asserted-nullish-coalescing":"error","@typescript-eslint/no-non-null-asserted-optional-chain":"error","@typescript-eslint/no-non-null-assertion":"error","@typescript-eslint/no-redeclare":"off","@typescript-eslint/no-redundant-type-constituents":"error","@typescript-eslint/no-require-imports":"error","@typescript-eslint/no-restricted-imports":"error","@typescript-eslint/no-restricted-types":"error","@typescript-eslint/no-shadow":"error","@typescript-eslint/no-this-alias":"error","@typescript-eslint/no-unnecessary-boolean-literal-compare":"error","@typescript-eslint/no-unnecessary-condition":"error","@typescript-eslint/no-unnecessary-parameter-property-assignment":"error","@typescript-eslint/no-unnecessary-qualifier":"error","@typescript-eslint/no-unnecessary-template-expression":"error","@typescript-eslint/no-unnecessary-type-arguments":"error","@typescript-eslint/no-unnecessary-type-assertion":"error","@typescript-eslint/no-unnecessary-type-constraint":"error","@typescript-eslint/no-unnecessary-type-conversion":"error","@typescript-eslint/no-unnecessary-type-parameters":"off","@typescript-eslint/no-unsafe-argument":"error","@typescript-eslint/no-unsafe-assignment":"error","@typescript-eslint/no-unsafe-call":"error","@typescript-eslint/no-unsafe-declaration-merging":"error","@typescript-eslint/no-unsafe-enum-comparison":"error","@typescript-eslint/no-unsafe-function-type":"error","@typescript-eslint/no-unsafe-member-access":"error","@typescript-eslint/no-unsafe-return":"error","@typescript-eslint/no-unsafe-type-assertion":"error","@typescript-eslint/no-unsafe-unary-minus":"error","@typescript-eslint/no-unused-expressions":"error","@typescript-eslint/no-unused-private-class-members":"error","@typescript-eslint/no-unused-vars":["error",{args:"all",argsIgnorePattern:"^_",caughtErrors:"all",caughtErrorsIgnorePattern:"^_",destructuredArrayIgnorePattern:"^_",ignoreRestSiblings:!0,varsIgnorePattern:"^_"}],"@typescript-eslint/no-use-before-define":"off","@typescript-eslint/no-useless-constructor":"error","@typescript-eslint/no-useless-empty-export":"error","@typescript-eslint/no-wrapper-object-types":"error","@typescript-eslint/non-nullable-type-assertion-style":"error","@typescript-eslint/only-throw-error":"error","@typescript-eslint/parameter-properties":"off","@typescript-eslint/prefer-as-const":"error","@typescript-eslint/prefer-destructuring":"error","@typescript-eslint/prefer-enum-initializers":"error","@typescript-eslint/prefer-find":"error","@typescript-eslint/prefer-for-of":"error","@typescript-eslint/prefer-function-type":"error","@typescript-eslint/prefer-includes":"error","@typescript-eslint/prefer-literal-enum-member":"error","@typescript-eslint/prefer-namespace-keyword":"error","@typescript-eslint/prefer-nullish-coalescing":"error","@typescript-eslint/prefer-optional-chain":"error","@typescript-eslint/prefer-promise-reject-errors":"error","@typescript-eslint/prefer-readonly":"error","@typescript-eslint/prefer-readonly-parameter-types":"off","@typescript-eslint/prefer-reduce-type-parameter":"error","@typescript-eslint/prefer-regexp-exec":"error","@typescript-eslint/prefer-return-this-type":"error","@typescript-eslint/prefer-string-starts-ends-with":"error","@typescript-eslint/promise-function-async":"error","@typescript-eslint/related-getter-setter-pairs":"error","@typescript-eslint/require-array-sort-compare":"error","@typescript-eslint/require-await":"error","@typescript-eslint/restrict-plus-operands":"error","@typescript-eslint/restrict-template-expressions":"error","@typescript-eslint/return-await":"error","@typescript-eslint/strict-boolean-expressions":"error","@typescript-eslint/switch-exhaustiveness-check":"error","@typescript-eslint/triple-slash-reference":"error","@typescript-eslint/unbound-method":"error","@typescript-eslint/unified-signatures":"error","@typescript-eslint/use-unknown-in-catch-callback-variable":"error","unicorn/better-regex":"error","unicorn/catch-error-name":"error","unicorn/consistent-assert":"error","unicorn/consistent-date-clone":"error","unicorn/consistent-destructuring":"error","unicorn/consistent-empty-array-spread":"error","unicorn/consistent-existence-index-check":"error","unicorn/consistent-function-scoping":"error","unicorn/custom-error-definition":"error","unicorn/empty-brace-spaces":"off","unicorn/error-message":"error","unicorn/escape-case":"error","unicorn/expiring-todo-comments":"error","unicorn/explicit-length-check":"off","unicorn/filename-case":"error","unicorn/import-style":"error","unicorn/new-for-builtins":"error","unicorn/no-abusive-eslint-disable":"error","unicorn/no-accessor-recursion":"error","unicorn/no-anonymous-default-export":"error","unicorn/no-array-callback-reference":"error","unicorn/no-array-for-each":"error","unicorn/no-array-method-this-argument":"error","unicorn/no-array-reduce":"error","unicorn/no-array-reverse":"error","unicorn/no-array-sort":"error","unicorn/no-await-expression-member":"error","unicorn/no-await-in-promise-methods":"error","unicorn/no-console-spaces":"error","unicorn/no-document-cookie":"error","unicorn/no-empty-file":"error","unicorn/no-for-loop":"error","unicorn/no-hex-escape":"error","unicorn/no-immediate-mutation":"error","unicorn/no-instanceof-builtins":"error","unicorn/no-invalid-fetch-options":"error","unicorn/no-invalid-remove-event-listener":"error","unicorn/no-keyword-prefix":"off","unicorn/no-lonely-if":"error","unicorn/no-magic-array-flat-depth":"error","unicorn/no-named-default":"error","unicorn/no-negated-condition":"error","unicorn/no-negation-in-equality-check":"error","unicorn/no-nested-ternary":"off","unicorn/no-new-array":"error","unicorn/no-new-buffer":"error","unicorn/no-null":"off","unicorn/no-object-as-default-parameter":"error","unicorn/no-process-exit":"error","unicorn/no-single-promise-in-promise-methods":"error","unicorn/no-static-only-class":"error","unicorn/no-thenable":"error","unicorn/no-this-assignment":"error","unicorn/no-typeof-undefined":"error","unicorn/no-unnecessary-array-flat-depth":"error","unicorn/no-unnecessary-array-splice-count":"error","unicorn/no-unnecessary-await":"error","unicorn/no-unnecessary-polyfills":"error","unicorn/no-unnecessary-slice-end":"error","unicorn/no-unreadable-array-destructuring":"error","unicorn/no-unreadable-iife":"error","unicorn/no-unused-properties":"error","unicorn/no-useless-collection-argument":"error","unicorn/no-useless-error-capture-stack-trace":"error","unicorn/no-useless-fallback-in-spread":"error","unicorn/no-useless-length-check":"error","unicorn/no-useless-promise-resolve-reject":"error","unicorn/no-useless-spread":"error","unicorn/no-useless-switch-case":"error","unicorn/no-useless-undefined":"error","unicorn/no-zero-fractions":"error","unicorn/number-literal-case":"off","unicorn/numeric-separators-style":"error","unicorn/prefer-add-event-listener":"error","unicorn/prefer-array-find":"error","unicorn/prefer-array-flat":"error","unicorn/prefer-array-flat-map":"error","unicorn/prefer-array-index-of":"error","unicorn/prefer-array-some":"error","unicorn/prefer-at":"error","unicorn/prefer-bigint-literals":"error","unicorn/prefer-blob-reading-methods":"error","unicorn/prefer-class-fields":"error","unicorn/prefer-classlist-toggle":"error","unicorn/prefer-code-point":"error","unicorn/prefer-date-now":"error","unicorn/prefer-default-parameters":"error","unicorn/prefer-dom-node-append":"error","unicorn/prefer-dom-node-dataset":"error","unicorn/prefer-dom-node-remove":"error","unicorn/prefer-dom-node-text-content":"error","unicorn/prefer-event-target":"error","unicorn/prefer-export-from":"error","unicorn/prefer-global-this":"error","unicorn/prefer-import-meta-properties":"error","unicorn/prefer-includes":"error","unicorn/prefer-json-parse-buffer":"error","unicorn/prefer-keyboard-event-key":"error","unicorn/prefer-logical-operator-over-ternary":"error","unicorn/prefer-math-min-max":"error","unicorn/prefer-math-trunc":"error","unicorn/prefer-modern-dom-apis":"error","unicorn/prefer-modern-math-apis":"error","unicorn/prefer-module":"error","unicorn/prefer-native-coercion-functions":"error","unicorn/prefer-negative-index":"error","unicorn/prefer-node-protocol":"error","unicorn/prefer-number-properties":"error","unicorn/prefer-object-from-entries":"error","unicorn/prefer-optional-catch-binding":"error","unicorn/prefer-prototype-methods":"error","unicorn/prefer-query-selector":"error","unicorn/prefer-reflect-apply":"error","unicorn/prefer-regexp-test":"error","unicorn/prefer-response-static-json":"error","unicorn/prefer-set-has":"error","unicorn/prefer-set-size":"error","unicorn/prefer-single-call":"error","unicorn/prefer-spread":"error","unicorn/prefer-string-raw":"error","unicorn/prefer-string-replace-all":"error","unicorn/prefer-string-slice":"error","unicorn/prefer-string-starts-ends-with":"error","unicorn/prefer-string-trim-start-end":"error","unicorn/prefer-structured-clone":"error","unicorn/prefer-switch":"error","unicorn/prefer-ternary":"error","unicorn/prefer-top-level-await":"error","unicorn/prefer-type-error":"error","unicorn/prevent-abbreviations":"error","unicorn/relative-url-style":"error","unicorn/require-array-join-separator":"error","unicorn/require-module-attributes":"error","unicorn/require-module-specifiers":"error","unicorn/require-number-to-fixed-digits-argument":"error","unicorn/require-post-message-target-origin":"error","unicorn/string-content":"error","unicorn/switch-case-braces":"error","unicorn/template-indent":"off","unicorn/text-encoding-identifier-case":"error","unicorn/throw-new-error":"error","lodash/callback-binding":"error","lodash/chain-style":[2,"as-needed"],"lodash/chaining":"error","lodash/collection-method-value":"error","lodash/collection-ordering":"error","lodash/collection-return":"error","lodash/consistent-compose":[2,"flow"],"lodash/identity-shorthand":[2,"always"],"lodash/import-scope":[2,"method"],"lodash/matches-prop-shorthand":[2,"always"],"lodash/matches-shorthand":[2,"always",3],"lodash/no-commit":"error","lodash/no-double-unwrap":"error","lodash/no-extra-args":"error","lodash/no-unbound-this":"error","lodash/path-style":[2,"array"],"lodash/prefer-compact":"error","lodash/prefer-constant":"error","lodash/prefer-filter":"error","lodash/prefer-find":"error","lodash/prefer-flat-map":"error","lodash/prefer-get":"error","lodash/prefer-immutable-method":"error","lodash/prefer-includes":[2,{includeNative:!0}],"lodash/prefer-invoke-map":"error","lodash/prefer-is-nil":"error","lodash/prefer-lodash-chain":"error","lodash/prefer-lodash-method":"error","lodash/prefer-lodash-typecheck":"error","lodash/prefer-map":"error","lodash/prefer-matches":"error","lodash/prefer-noop":"error","lodash/prefer-over-quantifier":"error","lodash/prefer-reject":"error","lodash/prefer-some":[2,{includeNative:!0}],"lodash/prefer-startswith":"error","lodash/prefer-thru":"error","lodash/prefer-times":"error","lodash/prefer-wrapper-method":"error","lodash/preferred-alias":"error","lodash/prop-shorthand":[2,"always"],"lodash/unwrap":"error","sonar/anchor-precedence":"error","sonar/argument-type":"error","sonar/arguments-order":"error","sonar/arguments-usage":"error","sonar/array-callback-without-return":"error","sonar/array-constructor":"error","sonar/arrow-function-convention":"off","sonar/assertions-in-tests":"error","sonar/aws-apigateway-public-api":"error","sonar/aws-ec2-rds-dms-public":"error","sonar/aws-ec2-unencrypted-ebs-volume":"error","sonar/aws-efs-unencrypted":"error","sonar/aws-iam-all-privileges":"error","sonar/aws-iam-all-resources-accessible":"error","sonar/aws-iam-privilege-escalation":"error","sonar/aws-iam-public-access":"error","sonar/aws-opensearchservice-domain":"error","sonar/aws-rds-unencrypted-databases":"error","sonar/aws-restricted-ip-admin-access":"error","sonar/aws-s3-bucket-granted-access":"error","sonar/aws-s3-bucket-insecure-http":"error","sonar/aws-s3-bucket-public-access":"error","sonar/aws-s3-bucket-versioning":"error","sonar/aws-sagemaker-unencrypted-notebook":"error","sonar/aws-sns-unencrypted-topics":"error","sonar/aws-sqs-unencrypted-queue":"error","sonar/bitwise-operators":"error","sonar/block-scoped-var":"error","sonar/bool-param-default":"error","sonar/call-argument-line":"error","sonar/chai-determinate-assertion":"error","sonar/class-name":"error","sonar/class-prototype":"error","sonar/code-eval":"error","sonar/cognitive-complexity":"error","sonar/comma-or-logical-or-case":"error","sonar/comment-regex":"off","sonar/concise-regex":"error","sonar/confidential-information-logging":"error","sonar/constructor-for-side-effects":"error","sonar/content-length":"error","sonar/content-security-policy":"error","sonar/cookie-no-httponly":"error","sonar/cors":"error","sonar/csrf":"error","sonar/cyclomatic-complexity":"off","sonar/declarations-in-global-scope":"error","sonar/deprecation":"error","sonar/destructuring-assignment-syntax":"error","sonar/different-types-comparison":"error","sonar/disabled-auto-escaping":"error","sonar/disabled-resource-integrity":"error","sonar/disabled-timeout":"error","sonar/duplicates-in-character-class":"error","sonar/elseif-without-else":"error","sonar/empty-string-repetition":"error","sonar/encryption-secure-mode":"error","sonar/existing-groups":"error","sonar/expression-complexity":"error","sonar/file-header":"off","sonar/file-name-differ-from-class":"error","sonar/file-permissions":"error","sonar/file-uploads":"error","sonar/fixme-tag":"error","sonar/for-in":"error","sonar/for-loop-increment-sign":"error","sonar/frame-ancestors":"error","sonar/function-inside-loop":"error","sonar/function-name":["error",{format:"^(?:[a-z][a-zA-Z0-9]*|[A-Z][A-Z0-9]*)$"}],"sonar/function-return-type":"off","sonar/future-reserved-words":"error","sonar/generator-without-yield":"error","sonar/hashing":"error","sonar/hidden-files":"error","sonar/in-operator-type-error":"error","sonar/inconsistent-function-call":"error","sonar/index-of-compare-to-positive-number":"error","sonar/insecure-cookie":"error","sonar/insecure-jwt-token":"error","sonar/inverted-assertion-arguments":"error","sonar/jsx-no-leaked-render":"error","sonar/label-position":"error","sonar/link-with-target-blank":"error","sonar/max-lines":"error","sonar/max-lines-per-function":"error","sonar/max-switch-cases":"error","sonar/max-union-size":"off","sonar/misplaced-loop-counter":"error","sonar/nested-control-flow":"error","sonar/new-operator-misuse":"error","sonar/no-all-duplicated-branches":"error","sonar/no-alphabetical-sort":"error","sonar/no-angular-bypass-sanitization":"error","sonar/no-array-delete":"error","sonar/no-associative-arrays":"error","sonar/no-async-constructor":"error","sonar/no-built-in-override":"error","sonar/no-case-label-in-switch":"error","sonar/no-clear-text-protocols":"error","sonar/no-code-after-done":"error","sonar/no-collapsible-if":"error","sonar/no-collection-size-mischeck":"error","sonar/no-commented-code":"error","sonar/no-control-regex":"error","sonar/no-dead-store":"error","sonar/no-delete-var":"error","sonar/no-duplicate-in-composite":"error","sonar/no-duplicate-string":"error","sonar/no-duplicated-branches":"error","sonar/no-element-overwrite":"error","sonar/no-empty-after-reluctant":"error","sonar/no-empty-alternatives":"error","sonar/no-empty-character-class":"error","sonar/no-empty-collection":"error","sonar/no-empty-group":"error","sonar/no-empty-test-file":"error","sonar/no-equals-in-for-termination":"error","sonar/no-exclusive-tests":"error","sonar/no-extra-arguments":"error","sonar/no-fallthrough":"error","sonar/no-for-in-iterable":"error","sonar/no-function-declaration-in-block":"error","sonar/no-global-this":"error","sonar/no-globals-shadowing":"error","sonar/no-gratuitous-expressions":"error","sonar/no-hardcoded-ip":"error","sonar/no-hardcoded-passwords":"error","sonar/no-hardcoded-secrets":"error","sonar/no-hook-setter-in-body":"error","sonar/no-identical-conditions":"error","sonar/no-identical-expressions":"error","sonar/no-identical-functions":"error","sonar/no-ignored-exceptions":"error","sonar/no-ignored-return":"error","sonar/no-implicit-dependencies":"off","sonar/no-implicit-global":"error","sonar/no-in-misuse":"error","sonar/no-incomplete-assertions":"error","sonar/no-inconsistent-returns":"off","sonar/no-incorrect-string-concat":"error","sonar/no-internal-api-use":"error","sonar/no-intrusive-permissions":"error","sonar/no-invalid-regexp":"error","sonar/no-invariant-returns":"error","sonar/no-inverted-boolean-check":"error","sonar/no-ip-forward":"error","sonar/no-labels":"error","sonar/no-literal-call":"error","sonar/no-mime-sniff":"error","sonar/no-misleading-array-reverse":"error","sonar/no-misleading-character-class":"error","sonar/no-mixed-content":"error","sonar/no-nested-assignment":"error","sonar/no-nested-conditional":"error","sonar/no-nested-functions":"error","sonar/no-nested-incdec":"error","sonar/no-nested-switch":"error","sonar/no-nested-template-literals":"error","sonar/no-os-command-from-path":"error","sonar/no-parameter-reassignment":"error","sonar/no-primitive-wrappers":"error","sonar/no-redundant-assignments":"error","sonar/no-redundant-boolean":"error","sonar/no-redundant-jump":"error","sonar/no-redundant-optional":"error","sonar/no-reference-error":"off","sonar/no-referrer-policy":"error","sonar/no-regex-spaces":"error","sonar/no-require-or-define":"error","sonar/no-return-type-any":"error","sonar/no-same-argument-assert":"error","sonar/no-same-line-conditional":"error","sonar/no-selector-parameter":"error","sonar/no-skipped-tests":"error","sonar/no-small-switch":"error","sonar/no-sonar-comments":"error","sonar/no-table-as-layout":"error","sonar/no-try-promise":"error","sonar/no-undefined-argument":"error","sonar/no-undefined-assignment":"off","sonar/no-unenclosed-multiline-block":"error","sonar/no-uniq-key":"error","sonar/no-unsafe-unzip":"error","sonar/no-unthrown-error":"error","sonar/no-unused-collection":"error","sonar/no-unused-function-argument":"error","sonar/no-unused-vars":"error","sonar/no-use-of-empty-return-value":"error","sonar/no-useless-catch":"error","sonar/no-useless-increment":"error","sonar/no-useless-intersection":"error","sonar/no-useless-react-setstate":"error","sonar/no-variable-usage-before-declaration":"error","sonar/no-weak-cipher":"error","sonar/no-weak-keys":"error","sonar/no-wildcard-import":"error","sonar/non-existent-operator":"error","sonar/non-number-in-arithmetic-expression":"error","sonar/null-dereference":"error","sonar/object-alt-content":"error","sonar/operation-returning-nan":"error","sonar/os-command":"error","sonar/post-message":"error","sonar/prefer-default-last":"error","sonar/prefer-immediate-return":"error","sonar/prefer-object-literal":"error","sonar/prefer-promise-shorthand":"error","sonar/prefer-read-only-props":"error","sonar/prefer-regexp-exec":"error","sonar/prefer-single-boolean-return":"error","sonar/prefer-type-guard":"error","sonar/prefer-while":"error","sonar/production-debug":"error","sonar/pseudo-random":"error","sonar/public-static-readonly":"error","sonar/publicly-writable-directories":"error","sonar/reduce-initial-value":"error","sonar/redundant-type-aliases":"error","sonar/regex-complexity":"error","sonar/session-regeneration":"error","sonar/shorthand-property-grouping":"off","sonar/single-char-in-character-classes":"error","sonar/single-character-alternation":"error","sonar/slow-regex":"error","sonar/sql-queries":"error","sonar/stable-tests":"error","sonar/stateful-regex":"error","sonar/strict-transport-security":"error","sonar/strings-comparison":"error","sonar/super-invocation":"error","sonar/table-header":"error","sonar/table-header-reference":"error","sonar/test-check-exception":"error","sonar/todo-tag":"off","sonar/too-many-break-or-continue-in-loop":"error","sonar/unicode-aware-regex":"error","sonar/unused-import":"error","sonar/unused-named-groups":"error","sonar/unverified-certificate":"error","sonar/unverified-hostname":"error","sonar/updated-const-var":"error","sonar/updated-loop-counter":"error","sonar/use-type-alias":"error","sonar/values-not-convertible-to-numbers":"error","sonar/variable-name":"error","sonar/void-use":"error","sonar/weak-ssl":"error","sonar/x-powered-by":"error","sonar/xml-parser-xxe":"error","perfectionist/sort-array-includes":"error","perfectionist/sort-classes":"error","perfectionist/sort-decorators":"error","perfectionist/sort-enums":"error","perfectionist/sort-exports":"error","perfectionist/sort-heritage-clauses":"error","perfectionist/sort-imports":"error","perfectionist/sort-interfaces":"error","perfectionist/sort-intersection-types":"error","perfectionist/sort-jsx-props":["error",{groups:["shorthand","multiline"]}],"perfectionist/sort-maps":"error","perfectionist/sort-modules":"error","perfectionist/sort-named-exports":"error","perfectionist/sort-named-imports":"error","perfectionist/sort-object-types":"error","perfectionist/sort-objects":["error",{partitionByComment:!0}],"perfectionist/sort-sets":"error","perfectionist/sort-switch-case":["error",{order:"asc",type:"alphabetical"}],"perfectionist/sort-union-types":"error","perfectionist/sort-variable-declarations":["error",{order:"asc",type:"alphabetical"}],"@tanstack/query/exhaustive-deps":"error","@tanstack/query/infinite-query-property-order":"error","@tanstack/query/mutation-property-order":"error","@tanstack/query/no-rest-destructuring":"error","@tanstack/query/no-unstable-deps":"error","@tanstack/query/no-void-query-fn":"error","@tanstack/query/stable-query-client":"error","@tanstack/router/create-route-property-order":"error","a11y/alt-text":"error","a11y/anchor-ambiguous-text":"error","a11y/anchor-has-content":"error","a11y/anchor-is-valid":"error","a11y/aria-activedescendant-has-tabindex":"error","a11y/aria-props":"error","a11y/aria-proptypes":"error","a11y/aria-role":"error","a11y/aria-unsupported-elements":"error","a11y/autocomplete-valid":"error","a11y/click-events-have-key-events":"error","a11y/control-has-associated-label":"off","a11y/heading-has-content":"error","a11y/html-has-lang":"error","a11y/iframe-has-title":"error","a11y/img-redundant-alt":"error","a11y/interactive-supports-focus":"error","a11y/label-has-associated-control":"error","a11y/lang":"error","a11y/media-has-caption":"off","a11y/mouse-events-have-key-events":"error","a11y/no-access-key":"error","a11y/no-aria-hidden-on-focusable":"error","a11y/no-autofocus":"error","a11y/no-distracting-elements":"error","a11y/no-interactive-element-to-noninteractive-role":"error","a11y/no-noninteractive-element-interactions":"error","a11y/no-noninteractive-element-to-interactive-role":"error","a11y/no-noninteractive-tabindex":"error","a11y/no-redundant-roles":"error","a11y/no-static-element-interactions":"error","a11y/prefer-tag-over-role":"error","a11y/role-has-required-aria-props":"error","a11y/role-supports-aria-props":"error","a11y/scope":"error","a11y/tabindex-no-positive":"error","cspell/spellchecker":["error",{cspell:{words:["tauri","Applynetic","julianday","typicode","toolbelt","taze","ethang","TSESTree","Boop","cldr","astro","laravel","qwik","sitecore","uswds","mediat","Packt","Academind","Udemy","Colte","Bootcamp","HTMX","MERN","Nuxt","Credly","Sterett","Beyonder","hotspot","lqip","Hawn","nextui","speculationrules","zustand","vinxi","datasource","turso","supabase","solidjs","labelledby","svix","blockqoute","cortexjs","mathrm","nums","lifecycles","krausest","Signalis","Plass","Iteree","Sonner","cmdk","ngsw","dexie","leetcode","ngsrc","sindresorhus","rogan","heroui","millis","duckdb","pthread","remeda","radash","noto","nosniff","SAMEORIGIN","starcoder","logprobs","sealioning","swebok","pluralsight","skillset","junie"]}}]}},{files:["**/*.md"],plugins:{markdown:u},rules:{"markdown/fenced-code-language":"error","markdown/heading-increment":"error","markdown/no-bare-urls":"error","markdown/no-duplicate-definitions":"error","markdown/no-duplicate-headings":"error","markdown/no-empty-definitions":"error","markdown/no-empty-images":"error","markdown/no-empty-links":"error","markdown/no-html":"error","markdown/no-invalid-label-refs":"error","markdown/no-missing-atx-heading-space":"error","markdown/no-missing-label-refs":"error","markdown/no-missing-link-fragments":"error","markdown/no-multiple-h1":"error","markdown/no-reference-like-urls":"error","markdown/no-reversed-media-syntax":"error","markdown/no-space-in-emphasis":"error","markdown/no-unused-definitions":"error","markdown/require-alt-text":"error","markdown/table-column-count":"error"}},{files:["**/*.css"],language:"css/css",plugins:{css:i},rules:{"css/font-family-fallbacks":"error","css/no-duplicate-imports":"error","css/no-duplicate-keyframe-selectors":"error","css/no-empty-blocks":"error","css/no-important":"error","css/no-invalid-at-rule-placement":"error","css/no-invalid-at-rules":"off","css/no-invalid-named-grid-areas":"error","css/no-invalid-properties":"error","css/no-unmatchable-selectors":"error","css/prefer-logical-properties":"error","css/relative-font-units":"error","css/selector-complexity":"error","css/use-baseline":["error",{available:"newly"}],"css/use-layers":"error"}},{files:["**/*.json"],language:"json/json",plugins:{json:r},rules:{"json/no-duplicate-keys":"error","json/no-empty-keys":"error","json/no-unnormalized-keys":"error","json/no-unsafe-values":"error","json/sort-keys":"error","json/top-level-interop":"error"}},{files:["**/*.jsonc"],language:"json/jsonc",plugins:{json:r},rules:{"json/no-duplicate-keys":"error","json/no-empty-keys":"error","json/no-unnormalized-keys":"error","json/no-unsafe-values":"error","json/sort-keys":"error","json/top-level-interop":"error"}},{files:["**/*.json5"],language:"json/json5",plugins:{json:r},rules:{"json/no-duplicate-keys":"error","json/no-empty-keys":"error","json/no-unnormalized-keys":"error","json/no-unsafe-values":"error","json/sort-keys":"error","json/top-level-interop":"error"}},c,p);export{_ as default};
2
- //# sourceMappingURL=eslint.config.js.map
1
+ import config from "./src/eslint.config.js";
2
+ import { defineConfig } from "eslint/config";
3
+
4
+ export default defineConfig(
5
+ {
6
+ ignores: [
7
+ "dist",
8
+ "src/README.md",
9
+ "src/eslint.config.js",
10
+ "src/config.solid.js",
11
+ "src/config.react.js",
12
+ "src/config.astro.js",
13
+ "src/config.angular.js",
14
+ "src/config.storybook.js",
15
+ "src/config.tailwind.js",
16
+ "**/*.d.ts",
17
+ ],
18
+ },
19
+ ...config,
20
+ {
21
+ languageOptions: {
22
+ parserOptions: {
23
+ project: true,
24
+ tsconfigRootDir: import.meta.dirname,
25
+ },
26
+ },
27
+ },
28
+ );
package/package.json CHANGED
@@ -59,7 +59,7 @@
59
59
  "url": "git+https://github.com/eglove/ethang-monorepo.git#master"
60
60
  },
61
61
  "type": "module",
62
- "version": "24.0.1",
62
+ "version": "24.0.2",
63
63
  "scripts": {
64
64
  "build": "bun build.ts && pnpm lint",
65
65
  "lint": "eslint . --fix --concurrency=auto && prettier src --write"
package/src/README.md ADDED
@@ -0,0 +1,132 @@
1
+ # Relentless. Unapologetic.
2
+
3
+ [View Config](https://eslint-config-ethang.pages.dev/rules)
4
+
5
+ > [!CAUTION]
6
+ > Prettier is already included for styling!
7
+
8
+ - 759 errored rules.
9
+ - 237 rules from [eslint-plugin-sonarjs](https://github.com/SonarSource/SonarJS/blob/master/packages/jsts/src/rules/README.md)
10
+ - 144 rules from [@eslint/js](https://github.com/eslint/eslint/tree/main/packages/js)
11
+ - 134 rules from [sindresorhus/eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn)
12
+ - 108 rules from [@typescript/eslint](https://github.com/typescript-eslint/typescript-eslint)
13
+ - 34 rules from [jsx-a11y](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y)
14
+ - 32 rules from [eslint-plugin-lodash](https://github.com/wix-incubator/eslint-plugin-lodash)
15
+ - 20 rules from [eslint-plugin-perfectionist](https://github.com/azat-io/eslint-plugin-perfectionist)
16
+ - 20 rules from [@eslint/markdown](https://github.com/eslint/markdown)
17
+ - 14 rules from [@eslint/css](https://github.com/eslint/css)
18
+ - 7 rules from [@tanstack/eslint-plugin-query](https://tanstack.com/query/latest/docs/eslint/eslint-plugin-query)
19
+ - 6 rules from [@eslint/json](https://github.com/eslint/json)
20
+ - 1 rule from [eslint-plugin-compat](https://github.com/amilajack/eslint-plugin-compat)
21
+ - 1 rule from [@tanstack/eslint-plugin-router](https://tanstack.com/router/latest/docs/eslint/eslint-plugin-router)
22
+ - 1 rule from [@cspell/eslint-plugin](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell-eslint-plugin)
23
+
24
+ # Add Even More!
25
+
26
+ - 80 rules for **Angular**
27
+ - `import angularConfig from "@ethang/eslint-config/config.angular.js";`
28
+ - 46 rules from [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/README.md)
29
+ - 34 rules from [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/README.md)
30
+ - 53 rules for **Astro**
31
+ - `import astroConfig from "@ethang/eslint-config/config.astro.js";`
32
+ - 53 rules from [eslint-plugin-astro](https://github.com/ota-meshi/eslint-plugin-astro)
33
+ - 51 rules for **HTML**
34
+ - import html from "@ethang/eslint-config/config.html.js";
35
+ - 51 rules from [@html-eslint/eslint-plugin](https://github.com/html-eslint/html-eslint)
36
+ - 91 rules for **React**
37
+ - `import reactConfig from "@ethang/eslint-config/config.react.js";`
38
+ - 62 rules from [@eslint-react/eslint-plugin](https://eslint-react.xyz/)
39
+ - 29 rules from [eslint-plugin-react-hooks](https://github.com/facebook/react/tree/main/packages/eslint-plugin-react-hooks)
40
+ - 18 rules for **Solid**
41
+ - `import solidConfig from "@ethang/eslint-config/config.solid.js";`
42
+ - 18 rules from [eslint-plugin-solid](https://github.com/solidjs-community/eslint-plugin-solid)
43
+ - 16 rules for **Storybook**
44
+ - `import storybookConfig from "@ethang/eslint-config/config.storybook.js";`
45
+ - 16 rules from [eslint-plugin-storybook](https://github.com/storybookjs/eslint-plugin-storybook)
46
+ - 6 rules for **Tailwind**
47
+ - import tailwindConfig from "@ethang/eslint-config/config.tailwind.js";
48
+ - 6 rules from [eslint-plugin-tailwindcss](https://github.com/francoismassart/eslint-plugin-tailwindcss)
49
+
50
+ # Install
51
+
52
+ ```powershell
53
+ pnpm i -D eslint @ethang/eslint-config
54
+ ```
55
+
56
+ **Requires TypesScript and tsconfig.json at root directory.**
57
+
58
+ # Config
59
+
60
+ In **eslint.config.ts**
61
+
62
+ ```js
63
+ import config from "@ethang/eslint-config/eslint.config.js";
64
+ import { defineConfig } from "eslint/config";
65
+ import path from "node:path";
66
+ import reactConfig from "@ethang/eslint-config/config.react.js"; // OPTIONAL
67
+ import tailwindConfig from "@ethang/eslint-config/config.tailwind.js"; // OPTIONAL
68
+ import htmlConfig from "@ethang/eslint-config/config.html.js"; // OPTIONAL
69
+
70
+ export default defineConfig(
71
+ {
72
+ ignores: [], // Ignored files apply to all following configs
73
+ },
74
+ ...config,
75
+ ...reactConfig,
76
+ ...htmlConfig,
77
+ ...tailwindConfig(path.join(import.meta.dirname, "src", "index.css")),
78
+ {
79
+ languageOptions: {
80
+ parserOptions: {
81
+ project: true,
82
+ tsconfigRootDir: import.meta.dirname,
83
+ },
84
+ },
85
+ rules: {
86
+ // Override rules from above configs
87
+ },
88
+ },
89
+ );
90
+ ```
91
+
92
+ **Scripts**
93
+
94
+ ```json
95
+ "scripts": {
96
+ "lint": "eslint . --fix --concurrency=auto"
97
+ }
98
+ ```
99
+
100
+ **Browserslist**
101
+
102
+ This config will also lint for browserslist features. [More info.](https://github.com/browserslist/browserslist)
103
+
104
+ It's recommended to use [browserslist-config-baseline](https://github.com/web-platform-dx/browserslist-config-baseline)
105
+
106
+ ```powershell
107
+ pnpm i -D browserslist-config-baseline
108
+ ```
109
+
110
+ ```json
111
+ "browserslist": [
112
+ "extends browserslist-config-baseline",
113
+ "current node"
114
+ ],
115
+ ```
116
+
117
+ Or a simpler config without an additional dependency.
118
+
119
+ ```json
120
+ "browserslist": [
121
+ "defaults and fully supports es6-module",
122
+ "current node"
123
+ ],
124
+ ```
125
+
126
+ **Engines**
127
+
128
+ ```json
129
+ "engines": {
130
+ "node": ">=24"
131
+ },
132
+ ```