@2digits/eslint-config 4.7.3 → 4.7.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1486,7 +1486,7 @@ interface RuleOptions {
1486
1486
  * Enforce heading levels increment by one
1487
1487
  * @see https://github.com/eslint/markdown/blob/main/docs/rules/heading-increment.md
1488
1488
  */
1489
- 'markdown/heading-increment'?: Linter.RuleEntry<[]>;
1489
+ 'markdown/heading-increment'?: Linter.RuleEntry<MarkdownHeadingIncrement>;
1490
1490
  /**
1491
1491
  * Disallow bare URLs
1492
1492
  * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-bare-urls.md
@@ -1531,7 +1531,7 @@ interface RuleOptions {
1531
1531
  * Disallow headings without a space after the hash characters
1532
1532
  * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-missing-atx-heading-space.md
1533
1533
  */
1534
- 'markdown/no-missing-atx-heading-space'?: Linter.RuleEntry<[]>;
1534
+ 'markdown/no-missing-atx-heading-space'?: Linter.RuleEntry<MarkdownNoMissingAtxHeadingSpace>;
1535
1535
  /**
1536
1536
  * Disallow missing label references
1537
1537
  * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-missing-label-refs.md
@@ -1552,6 +1552,11 @@ interface RuleOptions {
1552
1552
  * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-reversed-media-syntax.md
1553
1553
  */
1554
1554
  'markdown/no-reversed-media-syntax'?: Linter.RuleEntry<[]>;
1555
+ /**
1556
+ * Disallow spaces around emphasis markers
1557
+ * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-space-in-emphasis.md
1558
+ */
1559
+ 'markdown/no-space-in-emphasis'?: Linter.RuleEntry<MarkdownNoSpaceInEmphasis>;
1555
1560
  /**
1556
1561
  * Disallow unused definitions
1557
1562
  * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-unused-definitions.md
@@ -2841,7 +2846,7 @@ interface RuleOptions {
2841
2846
  */
2842
2847
  'pnpm/json-enforce-catalog'?: Linter.RuleEntry<PnpmJsonEnforceCatalog>;
2843
2848
  /**
2844
- * Prefer having pnpm settings in `pnpm-workspace.yaml` instead of `package.json`. This would requires pnpm v10.6+, see https://github.com/orgs/pnpm/discussions/9037.
2849
+ * Prefer having pnpm settings in `pnpm-workspace.yaml` instead of `package.json`. This requires pnpm v10.6+, see https://github.com/orgs/pnpm/discussions/9037.
2845
2850
  * @see https://github.com/antfu/pnpm-workspace-utils/tree/main/packages/eslint-plugin-pnpm/src/rules/json/json-prefer-workspace-settings.test.ts
2846
2851
  */
2847
2852
  'pnpm/json-prefer-workspace-settings'?: Linter.RuleEntry<PnpmJsonPreferWorkspaceSettings>;
@@ -2851,7 +2856,7 @@ interface RuleOptions {
2851
2856
  */
2852
2857
  'pnpm/json-valid-catalog'?: Linter.RuleEntry<PnpmJsonValidCatalog>;
2853
2858
  /**
2854
- * Disallow unused catalogs in `pnpm-workspace.yaml`
2859
+ * Disallow duplicate catalog items in `pnpm-workspace.yaml`
2855
2860
  * @see https://github.com/antfu/pnpm-workspace-utils/tree/main/packages/eslint-plugin-pnpm/src/rules/yaml/yaml-no-duplicate-catalog-item.test.ts
2856
2861
  */
2857
2862
  'pnpm/yaml-no-duplicate-catalog-item'?: Linter.RuleEntry<PnpmYamlNoDuplicateCatalogItem>;
@@ -4544,7 +4549,7 @@ interface RuleOptions {
4544
4549
  */
4545
4550
  'sonar/no-equals-in-for-termination'?: Linter.RuleEntry<[]>;
4546
4551
  /**
4547
- * Exclusive tests should not be commited to version control
4552
+ * Exclusive tests should not be committed to version control
4548
4553
  * @see https://sonarsource.github.io/rspec/#/rspec/S6426/javascript
4549
4554
  */
4550
4555
  'sonar/no-exclusive-tests'?: Linter.RuleEntry<[]>;
@@ -4748,11 +4753,6 @@ interface RuleOptions {
4748
4753
  * @see https://sonarsource.github.io/rspec/#/rspec/S4624/javascript
4749
4754
  */
4750
4755
  'sonar/no-nested-template-literals'?: Linter.RuleEntry<[]>;
4751
- /**
4752
- * Loops with at most one iteration should be refactored
4753
- * @see https://sonarsource.github.io/rspec/#/rspec/S1751/javascript
4754
- */
4755
- 'sonar/no-one-iteration-loop'?: Linter.RuleEntry<[]>;
4756
4756
  /**
4757
4757
  * Searching OS commands in PATH is security-sensitive
4758
4758
  * @see https://sonarsource.github.io/rspec/#/rspec/S4036/javascript
@@ -5213,7 +5213,6 @@ interface RuleOptions {
5213
5213
  /**
5214
5214
  * Loop counters should not be assigned within the loop body
5215
5215
  * @see https://sonarsource.github.io/rspec/#/rspec/S2310/javascript
5216
- * @deprecated
5217
5216
  */
5218
5217
  'sonar/updated-loop-counter'?: Linter.RuleEntry<[]>;
5219
5218
  /**
@@ -7525,6 +7524,7 @@ type AccessorPairs = [] | [{
7525
7524
  getWithoutSet?: boolean;
7526
7525
  setWithoutGet?: boolean;
7527
7526
  enforceForClassMembers?: boolean;
7527
+ enforceForTSTypes?: boolean;
7528
7528
  }];
7529
7529
  // ----- antfu/consistent-chaining -----
7530
7530
  type AntfuConsistentChaining = [] | [{
@@ -7986,7 +7986,9 @@ type GqlStrictIdInTypes = [] | [{
7986
7986
  };
7987
7987
  }];
7988
7988
  // ----- grouped-accessor-pairs -----
7989
- type GroupedAccessorPairs = [] | [("anyOrder" | "getBeforeSet" | "setBeforeGet")];
7989
+ type GroupedAccessorPairs = [] | [("anyOrder" | "getBeforeSet" | "setBeforeGet")] | [("anyOrder" | "getBeforeSet" | "setBeforeGet"), {
7990
+ enforceForTSTypes?: boolean;
7991
+ }];
7990
7992
  // ----- handle-callback-err -----
7991
7993
  type HandleCallbackErr = [] | [string];
7992
7994
  // ----- id-blacklist -----
@@ -9190,6 +9192,10 @@ type LogicalAssignmentOperators = (([] | ["always"] | ["always", {
9190
9192
  type MarkdownFencedCodeLanguage = [] | [{
9191
9193
  required?: string[];
9192
9194
  }];
9195
+ // ----- markdown/heading-increment -----
9196
+ type MarkdownHeadingIncrement = [] | [{
9197
+ frontmatterTitle?: string;
9198
+ }];
9193
9199
  // ----- markdown/no-duplicate-definitions -----
9194
9200
  type MarkdownNoDuplicateDefinitions = [] | [{
9195
9201
  allowDefinitions?: string[];
@@ -9208,6 +9214,11 @@ type MarkdownNoEmptyDefinitions = [] | [{
9208
9214
  // ----- markdown/no-html -----
9209
9215
  type MarkdownNoHtml = [] | [{
9210
9216
  allowed?: string[];
9217
+ allowedIgnoreCase?: boolean;
9218
+ }];
9219
+ // ----- markdown/no-missing-atx-heading-space -----
9220
+ type MarkdownNoMissingAtxHeadingSpace = [] | [{
9221
+ checkClosedHeadings?: boolean;
9211
9222
  }];
9212
9223
  // ----- markdown/no-missing-link-fragments -----
9213
9224
  type MarkdownNoMissingLinkFragments = [] | [{
@@ -9218,6 +9229,10 @@ type MarkdownNoMissingLinkFragments = [] | [{
9218
9229
  type MarkdownNoMultipleH1 = [] | [{
9219
9230
  frontmatterTitle?: string;
9220
9231
  }];
9232
+ // ----- markdown/no-space-in-emphasis -----
9233
+ type MarkdownNoSpaceInEmphasis = [] | [{
9234
+ checkStrikethrough?: boolean;
9235
+ }];
9221
9236
  // ----- markdown/no-unused-definitions -----
9222
9237
  type MarkdownNoUnusedDefinitions = [] | [{
9223
9238
  allowDefinitions?: string[];
@@ -9574,10 +9589,17 @@ type NoRestrictedExports = [] | [({
9574
9589
  };
9575
9590
  })];
9576
9591
  // ----- no-restricted-globals -----
9577
- type NoRestrictedGlobals = (string | {
9592
+ type NoRestrictedGlobals = ((string | {
9578
9593
  name: string;
9579
9594
  message?: string;
9580
- })[];
9595
+ })[] | [] | [{
9596
+ globals: (string | {
9597
+ name: string;
9598
+ message?: string;
9599
+ })[];
9600
+ checkGlobalObject?: boolean;
9601
+ globalObjects?: string[];
9602
+ }]);
9581
9603
  // ----- no-restricted-imports -----
9582
9604
  type NoRestrictedImports = ((string | {
9583
9605
  name: string;
@@ -9706,6 +9728,7 @@ type NoUnusedVars = [] | [(("all" | "local") | {
9706
9728
  caughtErrorsIgnorePattern?: string;
9707
9729
  destructuredArrayIgnorePattern?: string;
9708
9730
  ignoreClassWithStaticInitBlock?: boolean;
9731
+ ignoreUsingDeclarations?: boolean;
9709
9732
  reportUsedIgnorePattern?: boolean;
9710
9733
  })];
9711
9734
  // ----- no-use-before-define -----
@@ -10071,6 +10094,8 @@ type OneVar = [] | [(("always" | "never" | "consecutive") | {
10071
10094
  var?: ("always" | "never" | "consecutive");
10072
10095
  let?: ("always" | "never" | "consecutive");
10073
10096
  const?: ("always" | "never" | "consecutive");
10097
+ using?: ("always" | "never" | "consecutive");
10098
+ awaitUsing?: ("always" | "never" | "consecutive");
10074
10099
  } | {
10075
10100
  initialized?: ("always" | "never" | "consecutive");
10076
10101
  uninitialized?: ("always" | "never" | "consecutive");
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{FlatConfigComposer as e,renamePluginsInConfigs as t,renamePluginsInRules as n}from"eslint-flat-config-utils";import{findUp as r}from"find-up";import{isPackageExists as i}from"local-pkg";import a from"eslint-plugin-antfu";import o from"eslint-plugin-de-morgan";import s from"@eslint-community/eslint-plugin-eslint-comments";import c from"@eslint-community/eslint-plugin-eslint-comments/configs";import l from"@eslint/css";import{tailwind3 as u}from"tailwind-csstree";import{fixupPluginRules as d}from"@eslint/compat";import f from"eslint-plugin-github-action";import p from"yaml-eslint-parser";import m from"eslint-config-flat-gitignore";import ee from"@eslint/js";import h from"@stylistic/eslint-plugin";import g from"globals";import te from"eslint-plugin-jsdoc";import ne,{configs as _}from"eslint-plugin-jsonc";import re from"jsonc-eslint-parser";import v from"@eslint/markdown";import{mergeProcessors as y,processorPassThrough as b}from"eslint-merge-processors";import x from"eslint-plugin-n";import S from"eslint-plugin-regexp";import ie from"eslint-plugin-sonarjs";import C from"eslint-plugin-unicorn";import ae from"eslint-plugin-yml";const w=`**/*.?([cm])[jt]s?(x)`,T=`**/*.?([cm])ts`,E=`**/*.?([cm])tsx`,oe=`**/*.stories.tsx`,se=`**/*.json`,ce=`**/*.json5`,D=`**/*.jsonc`,O=`**/*.css`,k=`**/*.y?(a)ml`,A=`.github/workflows/*.y?(a)ml`,j=`**/*.md`,M=`**/*.md/*.md`,N=`${j}/${w}`,P=`**/node_modules,**/dist,**/package-lock.json,**/yarn.lock,**/pnpm-lock.yaml,**/bun.lockb,**/bun.lock,**/output,**/coverage,**/temp,**/.temp,**/tmp,**/.tmp,**/.history,**/.vitepress/cache,**/.nuxt,**/.next,**/.vercel,**/.changeset,**/.idea,**/.cache,**/.output,**/.vite-inspect,**/.yarn,**/CHANGELOG*.md,**/*.min.*,**/LICENSE*,**/__snapshots__,**/auto-import?(s).d.ts,**/components.d.ts`.split(`,`);function F(){return[{files:[w],name:`2digits:antfu`,plugins:{antfu:a},rules:{"antfu/if-newline":`error`,"antfu/top-level-function":`error`}}]}function I(){return[{files:[w],name:`2digits:boolean`,plugins:{boolean:o},rules:{...o.configs.recommended.rules}}]}const L={"@next/next":`next`,"@eslint-react/naming-convention":`react-naming-convention`,"@eslint-react/hooks-extra":`react-hooks-extra`,"@eslint-react/dom":`react-dom`,"@eslint-react/web-api":`react-web-api`,"@eslint-react":`react-extra`,"react-hooks":`react-hooks`,"react-compiler":`react-compiler`,"@stylistic/eslint-plugin":`stylistic`,"@typescript-eslint":`ts`,node:`node`,"@eslint-community/eslint-comments":`comments`,storybook:`storybook`,turbo:`turbo`,jsdoc:`jsdoc`,unicorn:`unicorn`,tailwindcss:`tailwindcss`,"@tanstack/query":`tanstack`,"@2digits":`@2digits`,"@graphql-eslint":`gql`,sonarjs:`sonar`,drizzle:`drizzle`,"de-morgan":`boolean`},R=n(c.recommended.rules,L);function z(){return[{files:[w],name:`2digits:comments`,plugins:{comments:s},rules:{...R,"comments/no-unused-disable":`error`,"comments/disable-enable-pair":[`error`,{allowWholeFile:!0}]}}]}function B(){return[{name:`2digits:css`,files:[O],language:`css/css`,plugins:{css:l},languageOptions:{tolerant:!0,customSyntax:u},rules:{...l.configs.recommended.rules}}]}async function V(e){let t=await e;return t.default||t}async function H(e={}){let{overrides:t={},drizzleObjectName:n=[`drizzle`,`db`]}=e,r=await V(import(`eslint-plugin-drizzle`));return[{files:[w],name:`2digits:drizzle`,plugins:{drizzle:d(r)},rules:{"drizzle/enforce-update-with-where":[`error`,{drizzleObjectName:n}],"drizzle/enforce-delete-with-where":[`error`,{drizzleObjectName:n}],...t}}]}const U=Object.fromEntries(f.configs.recommended.flatMap(({rules:e})=>Object.entries({...e})));function W(){return[{name:`2digits:github-actions/setup`,plugins:{"github-action":f}},{name:`2digits:github-actions/recommended`,files:[A],ignores:[`!**/${A}`],languageOptions:{parser:p},rules:{...U}}]}async function G(e={}){let{overrides:t={},files:r=[`**/*.graphql`,`**/*.gql`]}=e,[i,a]=await Promise.all([V(import(`@graphql-eslint/eslint-plugin`)),import(`graphql-config`).then(({loadConfig:e})=>e({throwOnEmpty:!1,throwOnMissing:!1}).then(e=>e?.getDefault().schema))]),o=i.configs[`flat/operations-recommended`].rules,s={};if(a)s=o;else for(let e of Object.keys(o)){let t=e.replace(`@graphql-eslint/`,``);if(t in i.rules&&(i.rules[t].meta.docs?.requiresSchema||i.rules[t].meta.docs?.requiresSiblings))continue;s[e]=o[e]}let c=n(s,L);return[{name:`2digits:graphql`,plugins:{gql:i},languageOptions:{parser:i.parser},files:r,rules:{...c,"gql/naming-convention":[`error`,{allowLeadingUnderscore:!0}],...t}}]}function le(e={}){let{gitIgnore:t,ignores:n=[]}=e;return[{ignores:[P,n].flat(),name:`2digits:ignores`},m({strict:!1,...t,name:`2digits:gitignore`})]}function ue(e={}){let{overrides:t={}}=e;return[{files:[w],name:`2digits:javascript`,plugins:{stylistic:h},languageOptions:{ecmaVersion:2022,globals:{...g.browser,...g.es2021,...g.node,document:`readonly`,navigator:`readonly`,window:`readonly`},parserOptions:{ecmaFeatures:{jsx:!0},ecmaVersion:2022,sourceType:`module`},sourceType:`module`},linterOptions:{reportUnusedDisableDirectives:!0},rules:{...ee.configs.recommended.rules,"accessor-pairs":[`error`,{enforceForClassMembers:!0,setWithoutGet:!0}],"array-callback-return":`error`,"block-scoped-var":`error`,"constructor-super":`error`,"default-case-last":`error`,"dot-notation":[`error`,{allowKeywords:!0}],eqeqeq:[`error`,`smart`],"new-cap":[`error`,{capIsNew:!1,newIsCap:!0,properties:!0}],"no-alert":`error`,"no-array-constructor":`error`,"no-async-promise-executor":`error`,"no-caller":`error`,"no-case-declarations":`error`,"no-class-assign":`error`,"no-compare-neg-zero":`error`,"no-cond-assign":[`error`,`always`],"no-const-assign":`error`,"no-control-regex":`error`,"no-debugger":`error`,"no-delete-var":`error`,"no-dupe-args":`error`,"no-dupe-class-members":`error`,"no-dupe-keys":`error`,"no-duplicate-case":`error`,"no-empty":[`error`,{allowEmptyCatch:!0}],"no-empty-character-class":`error`,"no-empty-pattern":`error`,"no-eval":`error`,"no-ex-assign":`error`,"no-extend-native":`error`,"no-extra-bind":`error`,"no-extra-boolean-cast":`error`,"no-fallthrough":`error`,"no-func-assign":`error`,"no-global-assign":`error`,"no-implied-eval":`error`,"no-import-assign":`error`,"no-invalid-regexp":`error`,"no-irregular-whitespace":`error`,"no-iterator":`error`,"no-labels":[`error`,{allowLoop:!1,allowSwitch:!1}],"no-lone-blocks":`error`,"no-loss-of-precision":`error`,"no-misleading-character-class":`error`,"no-multi-str":`error`,"no-new":`error`,"no-new-func":`error`,"no-new-native-nonconstructor":`error`,"no-new-wrappers":`error`,"no-obj-calls":`error`,"no-octal":`error`,"no-octal-escape":`error`,"no-proto":`error`,"no-prototype-builtins":`error`,"no-redeclare":[`error`,{builtinGlobals:!1}],"no-regex-spaces":`error`,"no-restricted-globals":[`error`,{message:"Use `globalThis` instead.",name:`global`},{message:"Use `globalThis` instead.",name:`self`}],"no-restricted-properties":[`error`,{message:"Use `Object.getPrototypeOf` or `Object.setPrototypeOf` instead.",property:`__proto__`},{message:"Use `Object.defineProperty` instead.",property:`__defineGetter__`},{message:"Use `Object.defineProperty` instead.",property:`__defineSetter__`},{message:"Use `Object.getOwnPropertyDescriptor` instead.",property:`__lookupGetter__`},{message:"Use `Object.getOwnPropertyDescriptor` instead.",property:`__lookupSetter__`}],"no-restricted-syntax":[`error`,`DebuggerStatement`,`LabeledStatement`,`WithStatement`,`TSEnumDeclaration`,`TSExportAssignment`],"no-self-assign":[`error`,{props:!0}],"no-self-compare":`error`,"no-sequences":`error`,"no-shadow-restricted-names":`error`,"no-sparse-arrays":`error`,"no-template-curly-in-string":`error`,"no-this-before-super":`error`,"no-throw-literal":`error`,"no-undef":`error`,"no-undef-init":`error`,"no-unexpected-multiline":`error`,"no-unmodified-loop-condition":`error`,"no-unneeded-ternary":[`error`,{defaultAssignment:!1}],"no-unreachable":`error`,"no-unreachable-loop":`error`,"no-unsafe-finally":`error`,"no-unsafe-negation":`error`,"no-unused-expressions":[`error`,{allowShortCircuit:!0,allowTaggedTemplates:!0,allowTernary:!0}],"no-unused-vars":[`error`,{args:`none`,caughtErrors:`none`,ignoreRestSiblings:!0,vars:`all`}],"no-useless-backreference":`error`,"no-useless-call":`error`,"no-useless-catch":`error`,"no-useless-computed-key":`error`,"no-useless-constructor":`error`,"no-useless-rename":`error`,"no-var":`error`,"no-with":`error`,"object-shorthand":[`error`,`always`,{avoidQuotes:!0,ignoreConstructors:!1}],"one-var":[`error`,{initialized:`never`}],"prefer-arrow-callback":[`error`,{allowNamedFunctions:!0,allowUnboundThis:!0}],"prefer-const":[`error`,{destructuring:`all`,ignoreReadBeforeAssign:!0}],"prefer-exponentiation-operator":`error`,"prefer-promise-reject-errors":`error`,"prefer-regex-literals":[`error`,{disallowRedundantWrapping:!0}],"prefer-rest-params":`error`,"prefer-spread":`error`,"prefer-template":`error`,"symbol-description":`error`,"unicode-bom":[`error`,`never`],"use-isnan":[`error`,{enforceForIndexOf:!0,enforceForSwitchCase:!0}],"valid-typeof":[`error`,{requireStringLiterals:!0}],"vars-on-top":`error`,yoda:[`error`,`never`],"stylistic/padding-line-between-statements":[`error`,{blankLine:`always`,prev:[`const`,`let`],next:`*`},{blankLine:`any`,prev:[`const`,`let`],next:[`const`,`let`]},{blankLine:`always`,prev:`*`,next:`return`}],...t}}]}function de(){return[{files:[w],name:`2digits:jsdoc`,plugins:{jsdoc:te},rules:{"jsdoc/check-access":`error`,"jsdoc/check-param-names":`error`,"jsdoc/check-property-names":`error`,"jsdoc/check-types":`error`,"jsdoc/empty-tags":`error`,"jsdoc/implements-on-classes":`error`,"jsdoc/no-defaults":`error`,"jsdoc/no-multi-asterisks":`error`,"jsdoc/require-param-name":`error`,"jsdoc/require-property":`error`,"jsdoc/require-property-description":`error`,"jsdoc/require-property-name":`error`,"jsdoc/require-returns-check":`error`,"jsdoc/require-returns-description":`error`,"jsdoc/require-yields-check":`error`}}]}function fe(){return[..._[`flat/base`].map(e=>({...e,name:`2digits:jsonc/base`})),{name:`2digits:jsonc/json`,files:[se],...K,rules:{...q(_[`flat/recommended-with-json`])}},{name:`2digits:jsonc/jsonc`,files:[D],...K,rules:{...q(_[`flat/recommended-with-jsonc`])}},{name:`2digits:jsonc/json5`,files:[ce],...K,rules:{...q(_[`flat/recommended-with-json5`])}},{name:`2digits:jsonc/package.json`,...K,files:[`**/package.json`],rules:{"jsonc/sort-array-values":[`error`,{order:{type:`asc`},pathPattern:`^files$`}],"jsonc/sort-keys":[`error`,{order:`$schema.publisher.name.displayName.version.private.description.funding.homepage.repository.bugs.categories.type.main.module.types.typesVersions.bin.files.exports.icon.unpkg.jsdelivr.sideEffects.activationEvents.contributes.scripts.keywords.author.license.workspaces.dependencies.devDependencies.peerDependencies.peerDependenciesMeta.optionalDependencies.packageManager.engines.pnpm.overrides.resolutions.husky.simple-git-hooks.lint-staged.eslintConfig.prettier`.split(`.`),pathPattern:`^$`},{order:{type:`asc`},pathPattern:`^(?:dev|peer|optional|bundled)?[Dd]ependencies(Meta)?$`},{order:[`types`,`import`,`module`,`require`,`default`],pathPattern:`^exports.*$`}]}},{name:`2digits:jsonc/tsconfig.json`,...K,files:[`**/tsconfig.json`,`**/tsconfig.*.json`,`**/tsconfig-*.json`,`**/jsconfig.json`,`**/jsconfig.*.json`,`**/jsconfig-*.json`],rules:{"jsonc/sort-keys":[`error`,{order:[`$schema`,`extends`,`compilerOptions`,`references`,`files`,`include`,`exclude`],pathPattern:`^$`},{order:`incremental.composite.tsBuildInfoFile.disableSourceOfProjectReferenceRedirect.disableSolutionSearching.disableReferencedProjectLoad.target.lib.jsx.experimentalDecorators.emitDecoratorMetadata.jsxFactory.jsxFragmentFactory.jsxImportSource.reactNamespace.noLib.useDefineForClassFields.moduleDetection.module.rootDir.moduleResolution.baseUrl.paths.rootDirs.typeRoots.types.allowUmdGlobalAccess.moduleSuffixes.allowImportingTsExtensions.resolvePackageJsonExports.resolvePackageJsonImports.customConditions.resolveJsonModule.allowArbitraryExtensions.noResolve.allowJs.checkJs.maxNodeModuleJsDepth.declaration.declarationMap.emitDeclarationOnly.sourceMap.inlineSourceMap.outFile.outDir.removeComments.noEmit.importHelpers.importsNotUsedAsValues.downlevelIteration.sourceRoot.mapRoot.inlineSources.emitBOM.newLine.stripInternal.noEmitHelpers.noEmitOnError.preserveConstEnums.declarationDir.preserveValueImports.isolatedModules.verbatimModuleSyntax.allowSyntheticDefaultImports.esModuleInterop.preserveSymlinks.forceConsistentCasingInFileNames.strict.strictBindCallApply.strictFunctionTypes.strictNullChecks.strictPropertyInitialization.allowUnreachableCode.allowUnusedLabels.alwaysStrict.exactOptionalPropertyTypes.noFallthroughCasesInSwitch.noImplicitAny.noImplicitOverride.noImplicitReturns.noImplicitThis.noPropertyAccessFromIndexSignature.noUncheckedIndexedAccess.noUnusedLocals.noUnusedParameters.useUnknownInCatchVariables.skipDefaultLibCheck.skipLibCheck`.split(`.`),pathPattern:`^compilerOptions$`}]}},..._[`flat/prettier`].map(e=>({...e,name:`2digits:jsonc/prettier`}))]}const K={languageOptions:{parser:re},plugins:{jsonc:ne}};function q(e){return Object.fromEntries(e.flatMap(({rules:e})=>Object.entries(e??{})))}const J=[j];function pe(){return[{name:`2digits:markdown/setup`,plugins:{markdown:v}},{name:`2digits:markdown/processor`,files:J,language:`markdown/gfm`,ignores:[M],processor:y([v.processors.markdown,b])},{name:`2digits:markdown/parser`,files:J,language:`markdown/gfm`,languageOptions:{parser:me}},{name:`2digits:markdown/rules`,files:J,language:`markdown/gfm`,rules:{"markdown/fenced-code-language":`error`,"markdown/heading-increment":`error`,"markdown/no-empty-links":`error`,"markdown/no-invalid-label-refs":`error`,"markdown/no-missing-label-refs":`error`}},{name:`2digits:markdown/disables`,files:[N],languageOptions:{parserOptions:{ecmaFeatures:{impliedStrict:!0}}},rules:{"no-alert":`off`,"no-console":`off`,"no-labels":`off`,"no-lone-blocks":`off`,"no-restricted-syntax":`off`,"no-undef":`off`,"no-unused-expressions":`off`,"no-unused-labels":`off`,"no-unused-vars":`off`,"node/prefer-global/process":`off`,"ts/consistent-type-imports":`off`,"ts/explicit-function-return-type":`off`,"ts/no-namespace":`off`,"ts/no-redeclare":`off`,"ts/no-require-imports":`off`,"ts/no-unused-expressions":`off`,"ts/no-unused-vars":`off`,"ts/no-use-before-define":`off`,"unicode-bom":`off`}}]}const me={meta:{name:`parser-plain`},parseForESLint:e=>({ast:{body:[],comments:[],loc:{end:e.length,start:0},range:[0,e.length],tokens:[],type:`Program`},scopeManager:null,services:{isPlain:!0},visitorKeys:{Program:[]}})};async function he(e={}){let{files:t=[T,E],overrides:r={},parserOptions:i}=e,[a,o]=await Promise.all([V(import(`@next/eslint-plugin-next`)),V(import(`@typescript-eslint/parser`))]),s=n({...a.configs.recommended.rules,...a.configs[`core-web-vitals`].rules},L);return[{name:`2digits:next/setup`,plugins:{next:d(a)}},{name:`2digits:next/rules`,files:t,languageOptions:{parser:o,parserOptions:{ecmaFeatures:{jsx:!0},projectService:!0,...i},sourceType:`module`},rules:{...s,"next/no-html-link-for-pages":`off`,...r}}]}function ge(){return[{files:[w],name:`2digits:node`,settings:{node:{version:`>= 22.0.0`}},plugins:{node:x},rules:{"node/handle-callback-err":[`error`,`^(err|error)$`],"node/no-deprecated-api":`error`,"node/no-exports-assign":`error`,"node/no-new-require":`error`,"node/no-path-concat":`error`,"node/no-unsupported-features/node-builtins":[`error`,{allowExperimental:!0}],"node/prefer-global/buffer":`error`,"node/prefer-global/process":`error`,"node/prefer-global/text-encoder":`error`,"node/prefer-global/url":`error`,"node/prefer-global/console":`error`,"node/prefer-global/url-search-params":`error`,"node/prefer-global/text-decoder":`error`,"node/process-exit-as-throw":`error`}}]}async function _e(){let e=await V(import(`eslint-plugin-pnpm`));return[{name:`2digits:pnpm/package-json`,files:[`**/package.json`],languageOptions:{parser:await V(import(`jsonc-eslint-parser`))},plugins:{pnpm:e},rules:{"pnpm/json-enforce-catalog":`error`,"pnpm/json-prefer-workspace-settings":`error`,"pnpm/json-valid-catalog":`error`}},{name:`2digits:pnpm/pnpm-workspace-yaml`,files:[`pnpm-workspace.yaml`],languageOptions:{parser:await V(import(`yaml-eslint-parser`))},plugins:{pnpm:e},rules:{"pnpm/yaml-no-duplicate-catalog-item":`error`,"pnpm/yaml-no-unused-catalog-item":`error`}}]}async function ve(){let[e,t]=await Promise.all([V(import(`eslint-config-prettier`)),V(import(`@stylistic/eslint-plugin`))]);return[{name:`2digits:prettier`,plugins:{stylistic:t},rules:{...e.rules,"tailwindcss/classnames-order":`off`,"stylistic/jsx-newline":[`error`,{prevent:!1}]}}]}async function ye(e={}){let{files:t=[T,E],overrides:r={},parserOptions:i,tsconfigRootDir:a,reactCompiler:o=!0}=e,[s,c,l,u,d]=await Promise.all([V(import(`@eslint-react/eslint-plugin`)),V(import(`eslint-plugin-react-hooks`)),V(import(`@typescript-eslint/parser`)),o?V(import(`eslint-plugin-react-compiler`)):void 0,V(import(`@stylistic/eslint-plugin`))]),f=s.configs.all.plugins,p=n({...c.configs[`recommended-latest`].rules,...s.configs[`recommended-type-checked`].rules},L);return[{name:`2digits:react/setup`,plugins:{stylistic:d,"react-dom":f[`@eslint-react/dom`],"react-web-api":f[`@eslint-react/web-api`],"react-extra":f[`@eslint-react`],"react-hooks":c,"react-hooks-extra":f[`@eslint-react/hooks-extra`],"react-naming-convention":f[`@eslint-react/naming-convention`],...o?{"react-compiler":u}:{}},settings:{react:{version:`detect`}}},{name:`2digits:react/rules`,files:t,languageOptions:{parser:l,parserOptions:{ecmaFeatures:{jsx:!0},tsconfigRootDir:a,projectService:!0,...i},sourceType:`module`},rules:{...p,...o?{"react-compiler/react-compiler":`error`}:{},"react-hooks-extra/no-unnecessary-use-callback":`error`,"react-hooks-extra/prefer-use-state-lazy-initialization":`error`,"react-hooks-extra/no-redundant-custom-hook":`error`,"react-hooks-extra/no-unnecessary-use-memo":`error`,"react-extra/no-useless-fragment":`off`,"react-extra/prefer-read-only-props":`off`,"react-extra/prefer-shorthand-boolean":`error`,"react-extra/prefer-shorthand-fragment":`error`,"react-extra/prefer-react-namespace-import":`error`,"react-naming-convention/use-state":`error`,"stylistic/jsx-curly-newline":`off`,"stylistic/jsx-newline":[`error`,{prevent:!1}],"stylistic/jsx-self-closing-comp":`error`,...r}}]}function be(){return[{files:[w],name:`2digits:regexp`,plugins:{regexp:S},rules:{...S.configs[`flat/recommended`].rules}}]}function xe(){return[{files:[w],name:`2digits:sonar`,plugins:{sonar:ie},rules:{"sonar/code-eval":`error`,"sonar/cognitive-complexity":`error`,"sonar/comma-or-logical-or-case":`error`,"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/max-switch-cases":`error`,"sonar/no-all-duplicated-branches":`error`,"sonar/no-collapsible-if":`error`,"sonar/no-collection-size-mischeck":`error`,"sonar/no-duplicate-string":[`error`,{threshold:5}],"sonar/no-duplicated-branches":`error`,"sonar/no-element-overwrite":`error`,"sonar/no-empty-collection":`error`,"sonar/no-extra-arguments":`error`,"sonar/no-for-in-iterable":`error`,"sonar/no-gratuitous-expressions":`error`,"sonar/no-identical-conditions":`error`,"sonar/no-identical-expressions":`error`,"sonar/no-identical-functions":`error`,"sonar/no-ignored-return":`error`,"sonar/no-inverted-boolean-check":`error`,"sonar/no-nested-switch":`error`,"sonar/no-nested-template-literals":`error`,"sonar/no-one-iteration-loop":`error`,"sonar/no-redundant-boolean":`error`,"sonar/no-same-line-conditional":`error`,"sonar/no-small-switch":`error`,"sonar/no-unused-collection":`error`,"sonar/no-use-of-empty-return-value":`error`,"sonar/no-useless-catch":`error`,"sonar/non-existent-operator":`error`,"sonar/prefer-immediate-return":`error`,"sonar/prefer-object-literal":`error`,"sonar/prefer-single-boolean-return":`error`,"sonar/prefer-while":`error`,"sonar/elseif-without-else":`off`,"sonar/no-redundant-jump":`off`}}]}async function Se(e={}){let{files:t=[oe],overrides:n={},parserOptions:r,storybookDirectory:i=`.storybook`}=e,[a,o]=await Promise.all([V(import(`eslint-plugin-storybook`)),V(import(`@typescript-eslint/parser`))]),s={parser:o,parserOptions:{ecmaFeatures:{jsx:!0},projectService:!0,...r},sourceType:`module`};return[{name:`2digits:storybook/setup`,plugins:{storybook:d(a)}},{name:`2digits:storybook/rules`,files:t,languageOptions:s,rules:{"storybook/await-interactions":`error`,"storybook/context-in-play-function":`error`,"storybook/csf-component":`error`,"storybook/default-exports":`error`,"storybook/hierarchy-separator":`error`,"storybook/meta-inline-properties":`error`,"storybook/no-redundant-story-name":`error`,"storybook/no-stories-of":`error`,"storybook/no-title-property-in-meta":`error`,"storybook/no-uninstalled-addons":`error`,"storybook/prefer-pascal-case":`error`,"storybook/story-exports":`error`,"storybook/use-storybook-expect":`error`,"storybook/use-storybook-testing-library":`error`,"storybook/meta-satisfies-type":`error`,...n}},{name:`2digits:storybook/disables`,files:t,rules:{"react-hooks/rules-of-hooks":`off`,"react/display-name":`off`,"sonar/no-duplicate-string":`off`}},{name:`2digits:storybook/config`,files:[`${i}/main.@(js|cjs|mjs|ts)`],languageOptions:s,rules:{"storybook/no-uninstalled-addons":`error`}}]}async function Ce(e={}){let{overrides:t={}}=e,[n,{tailwindFunctions:i},a]=await Promise.all([V(import(`eslint-plugin-tailwindcss`)),V(import(`@2digits/constants`)),r([`tailwind.config.ts`,`tailwind.config.js`])]);return[{files:[w],name:`2digits:tailwind`,plugins:{tailwindcss:n},settings:{tailwindcss:{callees:i,config:a}},rules:{...n.configs.recommended.rules,...t}}]}async function we(e={}){let{overrides:t={}}=e,r=await V(import(`@tanstack/eslint-plugin-query`)),i=n(r.configs[`flat/recommended`].at(0)?.rules??{},L);return[{files:[w],name:`2digits:tanstack`,plugins:{tanstack:r},rules:{...i,...t}}]}async function Y(e={}){let{overrides:t={}}=e,n=await V(import(`eslint-plugin-turbo`));return[{files:[w],name:`2digits:turbo`,plugins:{turbo:n},rules:{"turbo/no-undeclared-env-vars":`error`,...t}}]}async function Te(e={}){let{overrides:n={},parserOptions:r={}}=e,[{plugin:i,configs:a,parser:o},s]=await Promise.all([V(import(`typescript-eslint`)),V(import(`@2digits/eslint-plugin`))]),c=t(a.strictTypeChecked,L),l=Object.fromEntries(c.flatMap(({rules:e})=>Object.entries(e??{})));return[{name:`2digits:typescript/setup`,plugins:{ts:i,"@2digits":s}},{name:`2digits:typescript/rules`,files:[w],ignores:[N],languageOptions:{parser:o,parserOptions:{tsconfigRootDir:process.cwd(),projectService:!0,warnOnUnsupportedTypeScriptVersion:!1,...r},sourceType:`module`},rules:{...l,"ts/array-type":[`error`,{default:`generic`,readonly:`generic`}],"ts/restrict-template-expressions":[`error`,{allowNumber:!0}],"ts/ban-ts-comment":[`error`,{"ts-ignore":`allow-with-description`}],"ts/consistent-type-exports":[`error`],"ts/consistent-type-imports":[`error`,{prefer:`type-imports`,disallowTypeAnnotations:!1,fixStyle:`inline-type-imports`}],"ts/no-empty-object-type":[`error`,{allowInterfaces:`with-single-extends`,allowObjectTypes:`never`}],"ts/no-explicit-any":[`error`],"ts/no-import-type-side-effects":[`error`],"ts/no-misused-promises":`off`,"ts/no-confusing-void-expression":`off`,"ts/no-unused-vars":[`error`,{ignoreRestSiblings:!0,argsIgnorePattern:`^_`,varsIgnorePattern:`^_`}],"ts/unbound-method":`off`,...s.configs.recommended.rules,...n}},{name:`2digits:typescript/disables/dts`,files:[`**/*.d.ts`],ignores:[N],rules:{"unicorn/no-abusive-eslint-disable":`off`,"no-duplicate-imports":`off`,"no-restricted-syntax":`off`,"ts/no-unused-vars":`off`}},{name:`2digits:typescript/disables/test`,files:[`**/*.{test,spec}.ts?(x)`],ignores:[N],rules:{"no-unused-expressions":`off`}},{name:`2digits:typescript/disables/cjs`,files:[`**/*.js`,`**/*.cjs`,`**/*.cts`],ignores:[N],rules:{"ts/no-require-imports":`off`,"ts/no-var-requires":`off`}}]}function Ee(){return[{files:[w],name:`2digits:unicorn`,plugins:{unicorn:C},rules:{...C.configs.recommended.rules,"unicorn/filename-case":[`off`],"unicorn/prefer-module":[`off`],"unicorn/prevent-abbreviations":[`off`],"unicorn/prefer-ternary":[`error`,`only-single-line`],"unicorn/no-useless-undefined":[`error`,{checkArguments:!1,checkArrowFunctionBody:!1}],"unicorn/prefer-top-level-await":[`off`]}}]}function De(){return[{name:`2digits:yaml/setup`,plugins:{yml:ae}},{name:`2digits:yaml/base`,...X,rules:{"no-irregular-whitespace":`off`,"no-unused-vars":`off`,"spaced-comment":`off`}},{name:`2digits:yaml/recommended`,...X,rules:{"yml/no-empty-document":`error`,"yml/no-empty-key":`error`,"yml/no-empty-mapping-value":`error`,"yml/no-empty-sequence-entry":`error`,"yml/no-irregular-whitespace":`error`,"yml/no-tab-indent":`error`,"yml/vue-custom-block/no-parsing-error":`error`}},{name:`2digits:yaml/standard`,...X,rules:{"yml/block-mapping":`error`,"yml/block-sequence":`error`,"yml/plain-scalar":`error`,"yml/spaced-comment":`error`}},{name:`2digits:yaml/prettier`,...X,rules:{"yml/block-mapping-colon-indicator-newline":`off`,"yml/block-mapping-question-indicator-newline":`off`,"yml/block-sequence-hyphen-indicator-newline":`off`,"yml/flow-mapping-curly-newline":`off`,"yml/flow-mapping-curly-spacing":`off`,"yml/flow-sequence-bracket-newline":`off`,"yml/flow-sequence-bracket-spacing":`off`,"yml/indent":`off`,"yml/key-spacing":`off`,"yml/no-multiple-empty-lines":`off`,"yml/no-trailing-zeros":`off`,"yml/quotes":`off`}}]}const X={files:[k],languageOptions:{parser:p}};function Z(e,t){return typeof e==`boolean`?e:e?.enable??t??!1}function Q(e){if(typeof e==`boolean`||e===void 0)return{};let{enable:t,...n}=e;return n}async function $(t={},...n){let a;t.pnpm===void 0&&(a=r(`pnpm-workspace.yaml`));let o=new e(le(t.ignores),ue(t.js),I(),ge(),z(),de(),Ee(),xe(),be(),F(),fe(),B(),De(),pe(),W());Z(t.turbo,i(`turbo`))&&(o=o.append(Y(Q(t.turbo))));let{overrides:s,...c}=Q(t.ts);return Z(t.ts,i(`typescript`))&&(o=o.append(Te(Q(t.ts)))),Z(t.react,i(`react`))&&(o=o.append(ye({...Q(t.react),...c}))),Z(t.next,i(`next`))&&(o=o.append(he({...Q(t.next),...c}))),Z(t.storybook,i(`storybook`))&&(o=o.append(Se({...Q(t.storybook),...c}))),Z(t.tailwind,i(`tailwindcss`))&&(o=o.append(Ce(Q(t.tailwind)))),Z(t.tanstack,i(`react-query`)||i(`@tanstack/react-query`)||i(`@tanstack/react-query-devtools`))&&(o=o.append(we(Q(t.tanstack)))),Z(t.drizzle,i(`drizzle-kit`)||i(`drizzle-orm`))&&(o=o.append(H(Q(t.drizzle)))),Z(t.graphql,i(`graphql`))&&(o=o.append(G(Q(t.graphql)))),Z(t.pnpm,!!await a)&&(o=o.append(_e())),o=o.append(...n),i(`prettier`)&&(o=o.append(ve())),o.renamePlugins(L).toConfigs()}export{$ as default,$ as twoDigits};
1
+ import{FlatConfigComposer as e,renamePluginsInConfigs as t,renamePluginsInRules as n}from"eslint-flat-config-utils";import{findUp as r}from"find-up";import{isPackageExists as i}from"local-pkg";import a from"eslint-plugin-antfu";import o from"eslint-plugin-de-morgan";import s from"@eslint-community/eslint-plugin-eslint-comments";import c from"@eslint-community/eslint-plugin-eslint-comments/configs";import l from"@eslint/css";import{tailwind3 as u}from"tailwind-csstree";import{fixupPluginRules as d}from"@eslint/compat";import f from"eslint-plugin-github-action";import p from"yaml-eslint-parser";import m from"eslint-config-flat-gitignore";import ee from"@eslint/js";import te from"@stylistic/eslint-plugin";import h from"globals";import g from"eslint-plugin-jsdoc";import ne,{configs as _}from"eslint-plugin-jsonc";import re from"jsonc-eslint-parser";import v from"@eslint/markdown";import{mergeProcessors as ie,processorPassThrough as ae}from"eslint-merge-processors";import y from"eslint-plugin-n";import b from"eslint-plugin-regexp";import x from"eslint-plugin-sonarjs";import S from"eslint-plugin-unicorn";import C from"eslint-plugin-yml";const w=`**/*.?([cm])[jt]s?(x)`,T=`**/*.?([cm])ts`,E=`**/*.?([cm])tsx`,D=`.github/workflows/*.y?(a)ml`,O=`**/*.md`,k=`${O}/${w}`,A=`**/node_modules,**/dist,**/package-lock.json,**/yarn.lock,**/pnpm-lock.yaml,**/bun.lockb,**/bun.lock,**/output,**/coverage,**/temp,**/.temp,**/tmp,**/.tmp,**/.history,**/.vitepress/cache,**/.nuxt,**/.next,**/.vercel,**/.changeset,**/.idea,**/.cache,**/.output,**/.vite-inspect,**/.yarn,**/CHANGELOG*.md,**/*.min.*,**/LICENSE*,**/__snapshots__,**/auto-import?(s).d.ts,**/components.d.ts`.split(`,`);function j(){return[{files:[w],name:`2digits:antfu`,plugins:{antfu:a},rules:{"antfu/if-newline":`error`,"antfu/top-level-function":`error`}}]}function M(){return[{files:[w],name:`2digits:boolean`,plugins:{boolean:o},rules:{...o.configs.recommended.rules}}]}const N={"@next/next":`next`,"@eslint-react/naming-convention":`react-naming-convention`,"@eslint-react/hooks-extra":`react-hooks-extra`,"@eslint-react/dom":`react-dom`,"@eslint-react/web-api":`react-web-api`,"@eslint-react":`react-extra`,"react-hooks":`react-hooks`,"react-compiler":`react-compiler`,"@stylistic/eslint-plugin":`stylistic`,"@typescript-eslint":`ts`,node:`node`,"@eslint-community/eslint-comments":`comments`,storybook:`storybook`,turbo:`turbo`,jsdoc:`jsdoc`,unicorn:`unicorn`,tailwindcss:`tailwindcss`,"@tanstack/query":`tanstack`,"@2digits":`@2digits`,"@graphql-eslint":`gql`,sonarjs:`sonar`,drizzle:`drizzle`,"de-morgan":`boolean`},P=n(c.recommended.rules,N);function F(){return[{files:[w],name:`2digits:comments`,plugins:{comments:s},rules:{...P,"comments/no-unused-disable":`error`,"comments/disable-enable-pair":[`error`,{allowWholeFile:!0}]}}]}function I(){return[{name:`2digits:css`,files:[`**/*.css`],language:`css/css`,plugins:{css:l},languageOptions:{tolerant:!0,customSyntax:u},rules:{...l.configs.recommended.rules}}]}async function L(e){let t=await e;return t.default||t}async function R(e={}){let{overrides:t={},drizzleObjectName:n=[`drizzle`,`db`]}=e,r=await L(import(`eslint-plugin-drizzle`));return[{files:[w],name:`2digits:drizzle`,plugins:{drizzle:d(r)},rules:{"drizzle/enforce-update-with-where":[`error`,{drizzleObjectName:n}],"drizzle/enforce-delete-with-where":[`error`,{drizzleObjectName:n}],...t}}]}const z=Object.fromEntries(f.configs.recommended.flatMap(({rules:e})=>Object.entries({...e})));function B(){return[{name:`2digits:github-actions/setup`,plugins:{"github-action":f}},{name:`2digits:github-actions/recommended`,files:[D],ignores:[`!**/${D}`],languageOptions:{parser:p},rules:{...z}}]}async function V(e={}){let{overrides:t={},files:r=[`**/*.graphql`,`**/*.gql`]}=e,[i,a]=await Promise.all([L(import(`@graphql-eslint/eslint-plugin`)),import(`graphql-config`).then(({loadConfig:e})=>e({throwOnEmpty:!1,throwOnMissing:!1}).then(e=>e?.getDefault().schema))]),o=i.configs[`flat/operations-recommended`].rules,s={};if(a)s=o;else for(let e of Object.keys(o)){let t=e.replace(`@graphql-eslint/`,``);if(t in i.rules&&(i.rules[t].meta.docs?.requiresSchema||i.rules[t].meta.docs?.requiresSiblings))continue;s[e]=o[e]}let c=n(s,N);return[{name:`2digits:graphql`,plugins:{gql:i},languageOptions:{parser:i.parser},files:r,rules:{...c,"gql/naming-convention":[`error`,{allowLeadingUnderscore:!0}],...t}}]}function H(e={}){let{gitIgnore:t,ignores:n=[]}=e;return[{ignores:[A,n].flat(),name:`2digits:ignores`},m({strict:!1,...t,name:`2digits:gitignore`})]}function U(e={}){let{overrides:t={}}=e;return[{files:[w],name:`2digits:javascript`,plugins:{stylistic:te},languageOptions:{ecmaVersion:2022,globals:{...h.browser,...h.es2021,...h.node,document:`readonly`,navigator:`readonly`,window:`readonly`},parserOptions:{ecmaFeatures:{jsx:!0},ecmaVersion:2022,sourceType:`module`},sourceType:`module`},linterOptions:{reportUnusedDisableDirectives:!0},rules:{...ee.configs.recommended.rules,"accessor-pairs":[`error`,{enforceForClassMembers:!0,setWithoutGet:!0}],"array-callback-return":`error`,"block-scoped-var":`error`,"constructor-super":`error`,"default-case-last":`error`,"dot-notation":[`error`,{allowKeywords:!0}],eqeqeq:[`error`,`smart`],"new-cap":[`error`,{capIsNew:!1,newIsCap:!0,properties:!0}],"no-alert":`error`,"no-array-constructor":`error`,"no-async-promise-executor":`error`,"no-caller":`error`,"no-case-declarations":`error`,"no-class-assign":`error`,"no-compare-neg-zero":`error`,"no-cond-assign":[`error`,`always`],"no-const-assign":`error`,"no-control-regex":`error`,"no-debugger":`error`,"no-delete-var":`error`,"no-dupe-args":`error`,"no-dupe-class-members":`error`,"no-dupe-keys":`error`,"no-duplicate-case":`error`,"no-empty":[`error`,{allowEmptyCatch:!0}],"no-empty-character-class":`error`,"no-empty-pattern":`error`,"no-eval":`error`,"no-ex-assign":`error`,"no-extend-native":`error`,"no-extra-bind":`error`,"no-extra-boolean-cast":`error`,"no-fallthrough":`error`,"no-func-assign":`error`,"no-global-assign":`error`,"no-implied-eval":`error`,"no-import-assign":`error`,"no-invalid-regexp":`error`,"no-irregular-whitespace":`error`,"no-iterator":`error`,"no-labels":[`error`,{allowLoop:!1,allowSwitch:!1}],"no-lone-blocks":`error`,"no-loss-of-precision":`error`,"no-misleading-character-class":`error`,"no-multi-str":`error`,"no-new":`error`,"no-new-func":`error`,"no-new-native-nonconstructor":`error`,"no-new-wrappers":`error`,"no-obj-calls":`error`,"no-octal":`error`,"no-octal-escape":`error`,"no-proto":`error`,"no-prototype-builtins":`error`,"no-redeclare":[`error`,{builtinGlobals:!1}],"no-regex-spaces":`error`,"no-restricted-globals":[`error`,{message:"Use `globalThis` instead.",name:`global`},{message:"Use `globalThis` instead.",name:`self`}],"no-restricted-properties":[`error`,{message:"Use `Object.getPrototypeOf` or `Object.setPrototypeOf` instead.",property:`__proto__`},{message:"Use `Object.defineProperty` instead.",property:`__defineGetter__`},{message:"Use `Object.defineProperty` instead.",property:`__defineSetter__`},{message:"Use `Object.getOwnPropertyDescriptor` instead.",property:`__lookupGetter__`},{message:"Use `Object.getOwnPropertyDescriptor` instead.",property:`__lookupSetter__`}],"no-restricted-syntax":[`error`,`DebuggerStatement`,`LabeledStatement`,`WithStatement`,`TSEnumDeclaration`,`TSExportAssignment`],"no-self-assign":[`error`,{props:!0}],"no-self-compare":`error`,"no-sequences":`error`,"no-shadow-restricted-names":`error`,"no-sparse-arrays":`error`,"no-template-curly-in-string":`error`,"no-this-before-super":`error`,"no-throw-literal":`error`,"no-undef":`error`,"no-undef-init":`error`,"no-unexpected-multiline":`error`,"no-unmodified-loop-condition":`error`,"no-unneeded-ternary":[`error`,{defaultAssignment:!1}],"no-unreachable":`error`,"no-unreachable-loop":`error`,"no-unsafe-finally":`error`,"no-unsafe-negation":`error`,"no-unused-expressions":[`error`,{allowShortCircuit:!0,allowTaggedTemplates:!0,allowTernary:!0}],"no-unused-vars":[`error`,{args:`none`,caughtErrors:`none`,ignoreRestSiblings:!0,vars:`all`}],"no-useless-backreference":`error`,"no-useless-call":`error`,"no-useless-catch":`error`,"no-useless-computed-key":`error`,"no-useless-constructor":`error`,"no-useless-rename":`error`,"no-var":`error`,"no-with":`error`,"object-shorthand":[`error`,`always`,{avoidQuotes:!0,ignoreConstructors:!1}],"one-var":[`error`,{initialized:`never`}],"prefer-arrow-callback":[`error`,{allowNamedFunctions:!0,allowUnboundThis:!0}],"prefer-const":[`error`,{destructuring:`all`,ignoreReadBeforeAssign:!0}],"prefer-exponentiation-operator":`error`,"prefer-promise-reject-errors":`error`,"prefer-regex-literals":[`error`,{disallowRedundantWrapping:!0}],"prefer-rest-params":`error`,"prefer-spread":`error`,"prefer-template":`error`,"symbol-description":`error`,"unicode-bom":[`error`,`never`],"use-isnan":[`error`,{enforceForIndexOf:!0,enforceForSwitchCase:!0}],"valid-typeof":[`error`,{requireStringLiterals:!0}],"vars-on-top":`error`,yoda:[`error`,`never`],"stylistic/padding-line-between-statements":[`error`,{blankLine:`always`,prev:[`const`,`let`],next:`*`},{blankLine:`any`,prev:[`const`,`let`],next:[`const`,`let`]},{blankLine:`always`,prev:`*`,next:`return`}],...t}}]}function W(){return[{files:[w],name:`2digits:jsdoc`,plugins:{jsdoc:g},rules:{"jsdoc/check-access":`error`,"jsdoc/check-param-names":`error`,"jsdoc/check-property-names":`error`,"jsdoc/check-types":`error`,"jsdoc/empty-tags":`error`,"jsdoc/implements-on-classes":`error`,"jsdoc/no-defaults":`error`,"jsdoc/no-multi-asterisks":`error`,"jsdoc/require-param-name":`error`,"jsdoc/require-property":`error`,"jsdoc/require-property-description":`error`,"jsdoc/require-property-name":`error`,"jsdoc/require-returns-check":`error`,"jsdoc/require-returns-description":`error`,"jsdoc/require-yields-check":`error`}}]}function G(){return[..._[`flat/base`].map(e=>({...e,name:`2digits:jsonc/base`})),{name:`2digits:jsonc/json`,files:[`**/*.json`],...K,rules:{...q(_[`flat/recommended-with-json`])}},{name:`2digits:jsonc/jsonc`,files:[`**/*.jsonc`],...K,rules:{...q(_[`flat/recommended-with-jsonc`])}},{name:`2digits:jsonc/json5`,files:[`**/*.json5`],...K,rules:{...q(_[`flat/recommended-with-json5`])}},{name:`2digits:jsonc/package.json`,...K,files:[`**/package.json`],rules:{"jsonc/sort-array-values":[`error`,{order:{type:`asc`},pathPattern:`^files$`}],"jsonc/sort-keys":[`error`,{order:`$schema.publisher.name.displayName.version.private.description.funding.homepage.repository.bugs.categories.type.main.module.types.typesVersions.bin.files.exports.icon.unpkg.jsdelivr.sideEffects.activationEvents.contributes.scripts.keywords.author.license.workspaces.dependencies.devDependencies.peerDependencies.peerDependenciesMeta.optionalDependencies.packageManager.engines.pnpm.overrides.resolutions.husky.simple-git-hooks.lint-staged.eslintConfig.prettier`.split(`.`),pathPattern:`^$`},{order:{type:`asc`},pathPattern:`^(?:dev|peer|optional|bundled)?[Dd]ependencies(Meta)?$`},{order:[`types`,`import`,`module`,`require`,`default`],pathPattern:`^exports.*$`}]}},{name:`2digits:jsonc/tsconfig.json`,...K,files:[`**/tsconfig.json`,`**/tsconfig.*.json`,`**/tsconfig-*.json`,`**/jsconfig.json`,`**/jsconfig.*.json`,`**/jsconfig-*.json`],rules:{"jsonc/sort-keys":[`error`,{order:[`$schema`,`extends`,`compilerOptions`,`references`,`files`,`include`,`exclude`],pathPattern:`^$`},{order:`incremental.composite.tsBuildInfoFile.disableSourceOfProjectReferenceRedirect.disableSolutionSearching.disableReferencedProjectLoad.target.lib.jsx.experimentalDecorators.emitDecoratorMetadata.jsxFactory.jsxFragmentFactory.jsxImportSource.reactNamespace.noLib.useDefineForClassFields.moduleDetection.module.rootDir.moduleResolution.baseUrl.paths.rootDirs.typeRoots.types.allowUmdGlobalAccess.moduleSuffixes.allowImportingTsExtensions.resolvePackageJsonExports.resolvePackageJsonImports.customConditions.resolveJsonModule.allowArbitraryExtensions.noResolve.allowJs.checkJs.maxNodeModuleJsDepth.declaration.declarationMap.emitDeclarationOnly.sourceMap.inlineSourceMap.outFile.outDir.removeComments.noEmit.importHelpers.importsNotUsedAsValues.downlevelIteration.sourceRoot.mapRoot.inlineSources.emitBOM.newLine.stripInternal.noEmitHelpers.noEmitOnError.preserveConstEnums.declarationDir.preserveValueImports.isolatedModules.verbatimModuleSyntax.allowSyntheticDefaultImports.esModuleInterop.preserveSymlinks.forceConsistentCasingInFileNames.strict.strictBindCallApply.strictFunctionTypes.strictNullChecks.strictPropertyInitialization.allowUnreachableCode.allowUnusedLabels.alwaysStrict.exactOptionalPropertyTypes.noFallthroughCasesInSwitch.noImplicitAny.noImplicitOverride.noImplicitReturns.noImplicitThis.noPropertyAccessFromIndexSignature.noUncheckedIndexedAccess.noUnusedLocals.noUnusedParameters.useUnknownInCatchVariables.skipDefaultLibCheck.skipLibCheck`.split(`.`),pathPattern:`^compilerOptions$`}]}},..._[`flat/prettier`].map(e=>({...e,name:`2digits:jsonc/prettier`}))]}const K={languageOptions:{parser:re},plugins:{jsonc:ne}};function q(e){return Object.fromEntries(e.flatMap(({rules:e})=>Object.entries(e??{})))}const J=[O];function oe(){return[{name:`2digits:markdown/setup`,plugins:{markdown:v}},{name:`2digits:markdown/processor`,files:J,language:`markdown/gfm`,ignores:[`**/*.md/*.md`],processor:ie([v.processors.markdown,ae])},{name:`2digits:markdown/parser`,files:J,language:`markdown/gfm`,languageOptions:{parser:se}},{name:`2digits:markdown/rules`,files:J,language:`markdown/gfm`,rules:{"markdown/fenced-code-language":`error`,"markdown/heading-increment":`error`,"markdown/no-empty-links":`error`,"markdown/no-invalid-label-refs":`error`,"markdown/no-missing-label-refs":`error`}},{name:`2digits:markdown/disables`,files:[k],languageOptions:{parserOptions:{ecmaFeatures:{impliedStrict:!0}}},rules:{"no-alert":`off`,"no-console":`off`,"no-labels":`off`,"no-lone-blocks":`off`,"no-restricted-syntax":`off`,"no-undef":`off`,"no-unused-expressions":`off`,"no-unused-labels":`off`,"no-unused-vars":`off`,"node/prefer-global/process":`off`,"ts/consistent-type-imports":`off`,"ts/explicit-function-return-type":`off`,"ts/no-namespace":`off`,"ts/no-redeclare":`off`,"ts/no-require-imports":`off`,"ts/no-unused-expressions":`off`,"ts/no-unused-vars":`off`,"ts/no-use-before-define":`off`,"unicode-bom":`off`}}]}const se={meta:{name:`parser-plain`},parseForESLint:e=>({ast:{body:[],comments:[],loc:{end:e.length,start:0},range:[0,e.length],tokens:[],type:`Program`},scopeManager:null,services:{isPlain:!0},visitorKeys:{Program:[]}})};async function ce(e={}){let{files:t=[T,E],overrides:r={},parserOptions:i}=e,[a,o]=await Promise.all([L(import(`@next/eslint-plugin-next`)),L(import(`@typescript-eslint/parser`))]),s=n({...a.configs.recommended.rules,...a.configs[`core-web-vitals`].rules},N);return[{name:`2digits:next/setup`,plugins:{next:d(a)}},{name:`2digits:next/rules`,files:t,languageOptions:{parser:o,parserOptions:{ecmaFeatures:{jsx:!0},projectService:!0,...i},sourceType:`module`},rules:{...s,"next/no-html-link-for-pages":`off`,...r}}]}function le(){return[{files:[w],name:`2digits:node`,settings:{node:{version:`>= 22.0.0`}},plugins:{node:y},rules:{"node/handle-callback-err":[`error`,`^(err|error)$`],"node/no-deprecated-api":`error`,"node/no-exports-assign":`error`,"node/no-new-require":`error`,"node/no-path-concat":`error`,"node/no-unsupported-features/node-builtins":[`error`,{allowExperimental:!0}],"node/prefer-global/buffer":`error`,"node/prefer-global/process":`error`,"node/prefer-global/text-encoder":`error`,"node/prefer-global/url":`error`,"node/prefer-global/console":`error`,"node/prefer-global/url-search-params":`error`,"node/prefer-global/text-decoder":`error`,"node/process-exit-as-throw":`error`}}]}async function ue(){let e=await L(import(`eslint-plugin-pnpm`));return[{name:`2digits:pnpm/package-json`,files:[`**/package.json`],languageOptions:{parser:await L(import(`jsonc-eslint-parser`))},plugins:{pnpm:e},rules:{"pnpm/json-enforce-catalog":`error`,"pnpm/json-prefer-workspace-settings":`error`,"pnpm/json-valid-catalog":`error`}},{name:`2digits:pnpm/pnpm-workspace-yaml`,files:[`pnpm-workspace.yaml`],languageOptions:{parser:await L(import(`yaml-eslint-parser`))},plugins:{pnpm:e},rules:{"pnpm/yaml-no-duplicate-catalog-item":`error`,"pnpm/yaml-no-unused-catalog-item":`error`}}]}async function de(){let[e,t]=await Promise.all([L(import(`eslint-config-prettier`)),L(import(`@stylistic/eslint-plugin`))]);return[{name:`2digits:prettier`,plugins:{stylistic:t},rules:{...e.rules,"tailwindcss/classnames-order":`off`,"stylistic/jsx-newline":[`error`,{prevent:!1}]}}]}async function fe(e={}){let{files:t=[T,E],overrides:r={},parserOptions:i,tsconfigRootDir:a,reactCompiler:o=!0}=e,[s,c,l,u,d]=await Promise.all([L(import(`@eslint-react/eslint-plugin`)),L(import(`eslint-plugin-react-hooks`)),L(import(`@typescript-eslint/parser`)),o?L(import(`eslint-plugin-react-compiler`)):void 0,L(import(`@stylistic/eslint-plugin`))]),f=s.configs.all.plugins,p=n({...c.configs[`recommended-latest`].rules,...s.configs[`recommended-type-checked`].rules},N);return[{name:`2digits:react/setup`,plugins:{stylistic:d,"react-dom":f[`@eslint-react/dom`],"react-web-api":f[`@eslint-react/web-api`],"react-extra":f[`@eslint-react`],"react-hooks":c,"react-hooks-extra":f[`@eslint-react/hooks-extra`],"react-naming-convention":f[`@eslint-react/naming-convention`],...o?{"react-compiler":u}:{}},settings:{react:{version:`detect`}}},{name:`2digits:react/rules`,files:t,languageOptions:{parser:l,parserOptions:{ecmaFeatures:{jsx:!0},tsconfigRootDir:a,projectService:!0,...i},sourceType:`module`},rules:{...p,...o?{"react-compiler/react-compiler":`error`}:{},"react-hooks-extra/no-unnecessary-use-callback":`error`,"react-hooks-extra/prefer-use-state-lazy-initialization":`error`,"react-hooks-extra/no-redundant-custom-hook":`error`,"react-hooks-extra/no-unnecessary-use-memo":`error`,"react-extra/no-useless-fragment":`off`,"react-extra/prefer-read-only-props":`off`,"react-extra/prefer-shorthand-boolean":`error`,"react-extra/prefer-shorthand-fragment":`error`,"react-extra/prefer-react-namespace-import":`error`,"react-naming-convention/use-state":`error`,"stylistic/jsx-curly-newline":`off`,"stylistic/jsx-newline":[`error`,{prevent:!1}],"stylistic/jsx-self-closing-comp":`error`,...r}}]}function pe(){return[{files:[w],name:`2digits:regexp`,plugins:{regexp:b},rules:{...b.configs[`flat/recommended`].rules}}]}function me(){return[{files:[w],name:`2digits:sonar`,plugins:{sonar:x},rules:{"sonar/code-eval":`error`,"sonar/cognitive-complexity":`error`,"sonar/comma-or-logical-or-case":`error`,"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/max-switch-cases":`error`,"sonar/no-all-duplicated-branches":`error`,"sonar/no-collapsible-if":`error`,"sonar/no-collection-size-mischeck":`error`,"sonar/no-duplicate-string":[`error`,{threshold:5}],"sonar/no-duplicated-branches":`error`,"sonar/no-element-overwrite":`error`,"sonar/no-empty-collection":`error`,"sonar/no-extra-arguments":`error`,"sonar/no-for-in-iterable":`error`,"sonar/no-gratuitous-expressions":`error`,"sonar/no-identical-conditions":`error`,"sonar/no-identical-expressions":`error`,"sonar/no-identical-functions":`error`,"sonar/no-ignored-return":`error`,"sonar/no-inverted-boolean-check":`error`,"sonar/no-nested-switch":`error`,"sonar/no-nested-template-literals":`error`,"sonar/no-redundant-boolean":`error`,"sonar/no-same-line-conditional":`error`,"sonar/no-small-switch":`error`,"sonar/no-unused-collection":`error`,"sonar/no-use-of-empty-return-value":`error`,"sonar/no-useless-catch":`error`,"sonar/non-existent-operator":`error`,"sonar/prefer-immediate-return":`error`,"sonar/prefer-object-literal":`error`,"sonar/prefer-single-boolean-return":`error`,"sonar/prefer-while":`error`,"sonar/elseif-without-else":`off`,"sonar/no-redundant-jump":`off`}}]}async function he(e={}){let{files:t=[`**/*.stories.tsx`],overrides:n={},parserOptions:r,storybookDirectory:i=`.storybook`}=e,[a,o]=await Promise.all([L(import(`eslint-plugin-storybook`)),L(import(`@typescript-eslint/parser`))]),s={parser:o,parserOptions:{ecmaFeatures:{jsx:!0},projectService:!0,...r},sourceType:`module`};return[{name:`2digits:storybook/setup`,plugins:{storybook:d(a)}},{name:`2digits:storybook/rules`,files:t,languageOptions:s,rules:{"storybook/await-interactions":`error`,"storybook/context-in-play-function":`error`,"storybook/csf-component":`error`,"storybook/default-exports":`error`,"storybook/hierarchy-separator":`error`,"storybook/meta-inline-properties":`error`,"storybook/no-redundant-story-name":`error`,"storybook/no-stories-of":`error`,"storybook/no-title-property-in-meta":`error`,"storybook/no-uninstalled-addons":`error`,"storybook/prefer-pascal-case":`error`,"storybook/story-exports":`error`,"storybook/use-storybook-expect":`error`,"storybook/use-storybook-testing-library":`error`,"storybook/meta-satisfies-type":`error`,...n}},{name:`2digits:storybook/disables`,files:t,rules:{"react-hooks/rules-of-hooks":`off`,"react/display-name":`off`,"sonar/no-duplicate-string":`off`}},{name:`2digits:storybook/config`,files:[`${i}/main.@(js|cjs|mjs|ts)`],languageOptions:s,rules:{"storybook/no-uninstalled-addons":`error`}}]}async function ge(e={}){let{overrides:t={}}=e,[n,{tailwindFunctions:i},a]=await Promise.all([L(import(`eslint-plugin-tailwindcss`)),L(import(`@2digits/constants`)),r([`tailwind.config.ts`,`tailwind.config.js`])]);return[{files:[w],name:`2digits:tailwind`,plugins:{tailwindcss:n},settings:{tailwindcss:{callees:i,config:a}},rules:{...n.configs.recommended.rules,...t}}]}async function _e(e={}){let{overrides:t={}}=e,r=await L(import(`@tanstack/eslint-plugin-query`)),i=n(r.configs[`flat/recommended`].at(0)?.rules??{},N);return[{files:[w],name:`2digits:tanstack`,plugins:{tanstack:r},rules:{...i,...t}}]}async function Y(e={}){let{overrides:t={}}=e,n=await L(import(`eslint-plugin-turbo`));return[{files:[w],name:`2digits:turbo`,plugins:{turbo:n},rules:{"turbo/no-undeclared-env-vars":`error`,...t}}]}async function ve(e={}){let{overrides:n={},parserOptions:r={}}=e,[{plugin:i,configs:a,parser:o},s]=await Promise.all([L(import(`typescript-eslint`)),L(import(`@2digits/eslint-plugin`))]),c=t(a.strictTypeChecked,N),l=Object.fromEntries(c.flatMap(({rules:e})=>Object.entries(e??{})));return[{name:`2digits:typescript/setup`,plugins:{ts:i,"@2digits":s}},{name:`2digits:typescript/rules`,files:[w],ignores:[k],languageOptions:{parser:o,parserOptions:{tsconfigRootDir:process.cwd(),projectService:!0,warnOnUnsupportedTypeScriptVersion:!1,...r},sourceType:`module`},rules:{...l,"ts/array-type":[`error`,{default:`generic`,readonly:`generic`}],"ts/restrict-template-expressions":[`error`,{allowNumber:!0}],"ts/ban-ts-comment":[`error`,{"ts-ignore":`allow-with-description`}],"ts/consistent-type-exports":[`error`],"ts/consistent-type-imports":[`error`,{prefer:`type-imports`,disallowTypeAnnotations:!1,fixStyle:`inline-type-imports`}],"ts/no-empty-object-type":[`error`,{allowInterfaces:`with-single-extends`,allowObjectTypes:`never`}],"ts/no-explicit-any":[`error`],"ts/no-import-type-side-effects":[`error`],"ts/no-misused-promises":`off`,"ts/no-confusing-void-expression":`off`,"ts/no-unused-vars":[`error`,{ignoreRestSiblings:!0,argsIgnorePattern:`^_`,varsIgnorePattern:`^_`}],"ts/unbound-method":`off`,...s.configs.recommended.rules,...n}},{name:`2digits:typescript/disables/dts`,files:[`**/*.d.ts`],ignores:[k],rules:{"unicorn/no-abusive-eslint-disable":`off`,"no-duplicate-imports":`off`,"no-restricted-syntax":`off`,"ts/no-unused-vars":`off`}},{name:`2digits:typescript/disables/test`,files:[`**/*.{test,spec}.ts?(x)`],ignores:[k],rules:{"no-unused-expressions":`off`}},{name:`2digits:typescript/disables/cjs`,files:[`**/*.js`,`**/*.cjs`,`**/*.cts`],ignores:[k],rules:{"ts/no-require-imports":`off`,"ts/no-var-requires":`off`}}]}function ye(){return[{files:[w],name:`2digits:unicorn`,plugins:{unicorn:S},rules:{...S.configs.recommended.rules,"unicorn/filename-case":[`off`],"unicorn/prefer-module":[`off`],"unicorn/prevent-abbreviations":[`off`],"unicorn/prefer-ternary":[`error`,`only-single-line`],"unicorn/no-useless-undefined":[`error`,{checkArguments:!1,checkArrowFunctionBody:!1}],"unicorn/prefer-top-level-await":[`off`]}}]}function be(){return[{name:`2digits:yaml/setup`,plugins:{yml:C}},{name:`2digits:yaml/base`,...X,rules:{"no-irregular-whitespace":`off`,"no-unused-vars":`off`,"spaced-comment":`off`}},{name:`2digits:yaml/recommended`,...X,rules:{"yml/no-empty-document":`error`,"yml/no-empty-key":`error`,"yml/no-empty-mapping-value":`error`,"yml/no-empty-sequence-entry":`error`,"yml/no-irregular-whitespace":`error`,"yml/no-tab-indent":`error`,"yml/vue-custom-block/no-parsing-error":`error`}},{name:`2digits:yaml/standard`,...X,rules:{"yml/block-mapping":`error`,"yml/block-sequence":`error`,"yml/plain-scalar":`error`,"yml/spaced-comment":`error`}},{name:`2digits:yaml/prettier`,...X,rules:{"yml/block-mapping-colon-indicator-newline":`off`,"yml/block-mapping-question-indicator-newline":`off`,"yml/block-sequence-hyphen-indicator-newline":`off`,"yml/flow-mapping-curly-newline":`off`,"yml/flow-mapping-curly-spacing":`off`,"yml/flow-sequence-bracket-newline":`off`,"yml/flow-sequence-bracket-spacing":`off`,"yml/indent":`off`,"yml/key-spacing":`off`,"yml/no-multiple-empty-lines":`off`,"yml/no-trailing-zeros":`off`,"yml/quotes":`off`}}]}const X={files:[`**/*.y?(a)ml`],languageOptions:{parser:p}};function Z(e,t){return typeof e==`boolean`?e:e?.enable??t??!1}function Q(e){if(typeof e==`boolean`||e===void 0)return{};let{enable:t,...n}=e;return n}async function $(t={},...n){let a;t.pnpm===void 0&&(a=r(`pnpm-workspace.yaml`));let o=new e(H(t.ignores),U(t.js),M(),le(),F(),W(),ye(),me(),pe(),j(),G(),I(),be(),oe(),B());Z(t.turbo,i(`turbo`))&&(o=o.append(Y(Q(t.turbo))));let{overrides:s,...c}=Q(t.ts);return Z(t.ts,i(`typescript`))&&(o=o.append(ve(Q(t.ts)))),Z(t.react,i(`react`))&&(o=o.append(fe({...Q(t.react),...c}))),Z(t.next,i(`next`))&&(o=o.append(ce({...Q(t.next),...c}))),Z(t.storybook,i(`storybook`))&&(o=o.append(he({...Q(t.storybook),...c}))),Z(t.tailwind,i(`tailwindcss`))&&(o=o.append(ge(Q(t.tailwind)))),Z(t.tanstack,i(`react-query`)||i(`@tanstack/react-query`)||i(`@tanstack/react-query-devtools`))&&(o=o.append(_e(Q(t.tanstack)))),Z(t.drizzle,i(`drizzle-kit`)||i(`drizzle-orm`))&&(o=o.append(R(Q(t.drizzle)))),Z(t.graphql,i(`graphql`))&&(o=o.append(V(Q(t.graphql)))),Z(t.pnpm,!!await a)&&(o=o.append(ue())),o=o.append(...n),i(`prettier`)&&(o=o.append(de())),o.renamePlugins(N).toConfigs()}export{$ as default,$ as twoDigits};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@2digits/eslint-config",
3
- "version": "4.7.3",
3
+ "version": "4.7.6",
4
4
  "description": "Effortlessly enforce best practices and catch errors with this comprehensive ESLint configuration for TypeScript, featuring popular plugins like @typescript-eslint, eslint-plugin-react, and eslint-plugin-unicorn.",
5
5
  "homepage": "https://2d-configs.vercel.app/",
6
6
  "repository": {
@@ -27,62 +27,62 @@
27
27
  "public": true,
28
28
  "dependencies": {
29
29
  "@eslint-community/eslint-plugin-eslint-comments": "4.5.0",
30
- "@eslint-react/eslint-plugin": "1.52.3",
31
- "@eslint/compat": "1.3.1",
30
+ "@eslint-react/eslint-plugin": "1.52.6",
31
+ "@eslint/compat": "1.3.2",
32
32
  "@eslint/css": "0.10.0",
33
- "@eslint/js": "9.31.0",
34
- "@eslint/markdown": "7.1.0",
33
+ "@eslint/js": "9.34.0",
34
+ "@eslint/markdown": "7.2.0",
35
35
  "@graphql-eslint/eslint-plugin": "4.4.0",
36
- "@next/eslint-plugin-next": "15.4.3",
37
- "@stylistic/eslint-plugin": "5.2.2",
38
- "@tanstack/eslint-plugin-query": "5.81.2",
39
- "@typescript-eslint/parser": "8.38.0",
40
- "@typescript-eslint/utils": "8.38.0",
36
+ "@next/eslint-plugin-next": "15.5.2",
37
+ "@stylistic/eslint-plugin": "5.2.3",
38
+ "@tanstack/eslint-plugin-query": "5.83.1",
39
+ "@typescript-eslint/parser": "8.41.0",
40
+ "@typescript-eslint/utils": "8.41.0",
41
41
  "eslint-config-flat-gitignore": "2.1.0",
42
42
  "eslint-config-prettier": "10.1.8",
43
- "eslint-flat-config-utils": "2.1.0",
43
+ "eslint-flat-config-utils": "2.1.1",
44
44
  "eslint-merge-processors": "2.0.0",
45
45
  "eslint-plugin-antfu": "3.1.1",
46
- "eslint-plugin-de-morgan": "1.3.0",
46
+ "eslint-plugin-de-morgan": "1.3.1",
47
47
  "eslint-plugin-drizzle": "0.2.3",
48
48
  "eslint-plugin-github-action": "0.0.16",
49
- "eslint-plugin-jsdoc": "51.4.1",
49
+ "eslint-plugin-jsdoc": "54.1.1",
50
50
  "eslint-plugin-jsonc": "2.20.1",
51
- "eslint-plugin-n": "17.21.0",
52
- "eslint-plugin-pnpm": "1.1.0",
51
+ "eslint-plugin-n": "17.21.3",
52
+ "eslint-plugin-pnpm": "1.1.1",
53
53
  "eslint-plugin-react-compiler": "19.1.0-rc.2",
54
54
  "eslint-plugin-react-hooks": "5.2.0",
55
- "eslint-plugin-regexp": "2.9.0",
56
- "eslint-plugin-sonarjs": "3.0.4",
57
- "eslint-plugin-storybook": "9.0.18",
55
+ "eslint-plugin-regexp": "2.10.0",
56
+ "eslint-plugin-sonarjs": "3.0.5",
57
+ "eslint-plugin-storybook": "9.1.3",
58
58
  "eslint-plugin-tailwindcss": "3.18.2",
59
- "eslint-plugin-turbo": "2.5.5",
59
+ "eslint-plugin-turbo": "2.5.6",
60
60
  "eslint-plugin-unicorn": "60.0.0",
61
61
  "eslint-plugin-yml": "1.18.0",
62
62
  "find-up": "7.0.0",
63
63
  "globals": "16.3.0",
64
64
  "graphql-config": "5.1.5",
65
65
  "jsonc-eslint-parser": "2.4.0",
66
- "local-pkg": "1.1.1",
67
- "tailwind-csstree": "0.1.1",
68
- "typescript-eslint": "8.38.0",
66
+ "local-pkg": "1.1.2",
67
+ "tailwind-csstree": "0.1.3",
68
+ "typescript-eslint": "8.41.0",
69
69
  "yaml-eslint-parser": "1.3.0",
70
- "@2digits/constants": "1.1.4",
71
- "@2digits/eslint-plugin": "3.1.12"
70
+ "@2digits/constants": "1.1.7",
71
+ "@2digits/eslint-plugin": "3.1.15"
72
72
  },
73
73
  "devDependencies": {
74
- "@eslint/config-inspector": "1.1.0",
75
- "@types/react": "19.1.8",
74
+ "@eslint/config-inspector": "1.2.0",
75
+ "@types/react": "19.1.12",
76
76
  "dedent": "1.6.0",
77
- "eslint": "9.31.0",
78
- "eslint-typegen": "2.2.1",
77
+ "eslint": "9.34.0",
78
+ "eslint-typegen": "2.3.0",
79
79
  "execa": "9.6.0",
80
- "react": "19.1.0",
80
+ "react": "19.1.1",
81
81
  "tinyglobby": "0.2.14",
82
- "tsdown": "0.13.0",
83
- "typescript": "5.8.3",
82
+ "tsdown": "0.14.2",
83
+ "typescript": "5.9.2",
84
84
  "vitest": "3.2.4",
85
- "@2digits/tsconfig": "0.8.0"
85
+ "@2digits/tsconfig": "0.8.2"
86
86
  },
87
87
  "scripts": {
88
88
  "build": "tsdown --minify",