@2digits/eslint-config 4.3.7 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5780,6 +5780,11 @@ Backward pagination arguments
5780
5780
  * @see https://tanstack.com/query/latest/docs/eslint/no-unstable-deps
5781
5781
  */
5782
5782
  'tanstack/no-unstable-deps'?: Linter.RuleEntry<[]>
5783
+ /**
5784
+ * Ensures queryFn returns a non-undefined value
5785
+ * @see https://tanstack.com/query/latest/docs/eslint/no-void-query-fn
5786
+ */
5787
+ 'tanstack/no-void-query-fn'?: Linter.RuleEntry<[]>
5783
5788
  /**
5784
5789
  * Makes sure that QueryClient is stable
5785
5790
  * @see https://tanstack.com/query/latest/docs/eslint/stable-query-client
@@ -13367,56 +13372,6 @@ interface OptionsWithIgnores {
13367
13372
  ignores?: string[];
13368
13373
  }
13369
13374
 
13370
- declare function antfu(): TypedFlatConfigItem[];
13371
-
13372
- declare function boolean(): TypedFlatConfigItem[];
13373
-
13374
- declare function comments(): TypedFlatConfigItem[];
13375
-
13376
- declare function css(): TypedFlatConfigItem[];
13377
-
13378
- declare function drizzle(options?: OptionsWithDrizzle): Promise<TypedFlatConfigItem[]>;
13379
-
13380
- declare function graphql(options?: OptionsWithFiles): Promise<TypedFlatConfigItem[]>;
13381
-
13382
- declare function ignores(options?: OptionsWithIgnores): Promise<TypedFlatConfigItem[]>;
13383
-
13384
- declare function javascript(options?: OptionsOverrides): TypedFlatConfigItem[];
13385
-
13386
- declare function jsdoc(): Promise<TypedFlatConfigItem[]>;
13387
-
13388
- declare function jsonc(): TypedFlatConfigItem[];
13389
-
13390
- declare function markdown(): TypedFlatConfigItem[];
13391
-
13392
- declare function next(options?: OptionsWithFiles & OptionsTypeScriptWithTypes): Promise<TypedFlatConfigItem[]>;
13393
-
13394
- declare function node(): TypedFlatConfigItem[];
13395
-
13396
- declare function pnpm(): Promise<TypedFlatConfigItem[]>;
13397
-
13398
- declare function prettier(): Promise<TypedFlatConfigItem[]>;
13399
-
13400
- declare function react(options?: OptionsWithReact & OptionsTypeScriptWithTypes): Promise<TypedFlatConfigItem[]>;
13401
-
13402
- declare function regexp(): TypedFlatConfigItem[];
13403
-
13404
- declare function sonar(): TypedFlatConfigItem[];
13405
-
13406
- declare function storybook(options?: OptionsWithStorybook & OptionsTypeScriptWithTypes): Promise<TypedFlatConfigItem[]>;
13407
-
13408
- declare function tailwind(options?: OptionsOverrides): Promise<TypedFlatConfigItem[]>;
13409
-
13410
- declare function tanstack(options?: OptionsOverrides): Promise<TypedFlatConfigItem[]>;
13411
-
13412
- declare function turbo(options?: OptionsOverrides): Promise<TypedFlatConfigItem[]>;
13413
-
13414
- declare function typescript(options?: OptionsTypeScriptWithTypes): Promise<TypedFlatConfigItem[]>;
13415
-
13416
- declare function unicorn(): TypedFlatConfigItem[];
13417
-
13418
- declare function yaml(): TypedFlatConfigItem[];
13419
-
13420
13375
  type SharedOptions<T = unknown> = T & {
13421
13376
  enable?: boolean;
13422
13377
  };
@@ -13436,4 +13391,5 @@ interface ESLint2DigitsOptions {
13436
13391
  }
13437
13392
  declare function twoDigits(options?: ESLint2DigitsOptions, ...userConfig: TypedFlatConfigItem[]): Promise<TypedFlatConfigItem[]>;
13438
13393
 
13439
- export { type ConfigNames, type OptionsOverrides, type OptionsTypeScriptWithTypes, type OptionsWithDrizzle, type OptionsWithFiles, type OptionsWithIgnores, type OptionsWithReact, type OptionsWithStorybook, type Rules, type TypedFlatConfigItem, antfu, boolean, comments, css, twoDigits as default, drizzle, graphql, ignores, javascript, jsdoc, jsonc, markdown, next, node, pnpm, prettier, react, regexp, sonar, storybook, tailwind, tanstack, turbo, twoDigits, typescript, unicorn, yaml };
13394
+ export { twoDigits as default, twoDigits };
13395
+ export type { ConfigNames, OptionsOverrides, OptionsTypeScriptWithTypes, OptionsWithDrizzle, OptionsWithFiles, OptionsWithIgnores, OptionsWithReact, OptionsWithStorybook, Rules, TypedFlatConfigItem };
package/dist/index.d.ts CHANGED
@@ -5780,6 +5780,11 @@ Backward pagination arguments
5780
5780
  * @see https://tanstack.com/query/latest/docs/eslint/no-unstable-deps
5781
5781
  */
5782
5782
  'tanstack/no-unstable-deps'?: Linter.RuleEntry<[]>
5783
+ /**
5784
+ * Ensures queryFn returns a non-undefined value
5785
+ * @see https://tanstack.com/query/latest/docs/eslint/no-void-query-fn
5786
+ */
5787
+ 'tanstack/no-void-query-fn'?: Linter.RuleEntry<[]>
5783
5788
  /**
5784
5789
  * Makes sure that QueryClient is stable
5785
5790
  * @see https://tanstack.com/query/latest/docs/eslint/stable-query-client
@@ -13367,56 +13372,6 @@ interface OptionsWithIgnores {
13367
13372
  ignores?: string[];
13368
13373
  }
13369
13374
 
13370
- declare function antfu(): TypedFlatConfigItem[];
13371
-
13372
- declare function boolean(): TypedFlatConfigItem[];
13373
-
13374
- declare function comments(): TypedFlatConfigItem[];
13375
-
13376
- declare function css(): TypedFlatConfigItem[];
13377
-
13378
- declare function drizzle(options?: OptionsWithDrizzle): Promise<TypedFlatConfigItem[]>;
13379
-
13380
- declare function graphql(options?: OptionsWithFiles): Promise<TypedFlatConfigItem[]>;
13381
-
13382
- declare function ignores(options?: OptionsWithIgnores): Promise<TypedFlatConfigItem[]>;
13383
-
13384
- declare function javascript(options?: OptionsOverrides): TypedFlatConfigItem[];
13385
-
13386
- declare function jsdoc(): Promise<TypedFlatConfigItem[]>;
13387
-
13388
- declare function jsonc(): TypedFlatConfigItem[];
13389
-
13390
- declare function markdown(): TypedFlatConfigItem[];
13391
-
13392
- declare function next(options?: OptionsWithFiles & OptionsTypeScriptWithTypes): Promise<TypedFlatConfigItem[]>;
13393
-
13394
- declare function node(): TypedFlatConfigItem[];
13395
-
13396
- declare function pnpm(): Promise<TypedFlatConfigItem[]>;
13397
-
13398
- declare function prettier(): Promise<TypedFlatConfigItem[]>;
13399
-
13400
- declare function react(options?: OptionsWithReact & OptionsTypeScriptWithTypes): Promise<TypedFlatConfigItem[]>;
13401
-
13402
- declare function regexp(): TypedFlatConfigItem[];
13403
-
13404
- declare function sonar(): TypedFlatConfigItem[];
13405
-
13406
- declare function storybook(options?: OptionsWithStorybook & OptionsTypeScriptWithTypes): Promise<TypedFlatConfigItem[]>;
13407
-
13408
- declare function tailwind(options?: OptionsOverrides): Promise<TypedFlatConfigItem[]>;
13409
-
13410
- declare function tanstack(options?: OptionsOverrides): Promise<TypedFlatConfigItem[]>;
13411
-
13412
- declare function turbo(options?: OptionsOverrides): Promise<TypedFlatConfigItem[]>;
13413
-
13414
- declare function typescript(options?: OptionsTypeScriptWithTypes): Promise<TypedFlatConfigItem[]>;
13415
-
13416
- declare function unicorn(): TypedFlatConfigItem[];
13417
-
13418
- declare function yaml(): TypedFlatConfigItem[];
13419
-
13420
13375
  type SharedOptions<T = unknown> = T & {
13421
13376
  enable?: boolean;
13422
13377
  };
@@ -13436,4 +13391,5 @@ interface ESLint2DigitsOptions {
13436
13391
  }
13437
13392
  declare function twoDigits(options?: ESLint2DigitsOptions, ...userConfig: TypedFlatConfigItem[]): Promise<TypedFlatConfigItem[]>;
13438
13393
 
13439
- export { type ConfigNames, type OptionsOverrides, type OptionsTypeScriptWithTypes, type OptionsWithDrizzle, type OptionsWithFiles, type OptionsWithIgnores, type OptionsWithReact, type OptionsWithStorybook, type Rules, type TypedFlatConfigItem, antfu, boolean, comments, css, twoDigits as default, drizzle, graphql, ignores, javascript, jsdoc, jsonc, markdown, next, node, pnpm, prettier, react, regexp, sonar, storybook, tailwind, tanstack, turbo, twoDigits, typescript, unicorn, yaml };
13394
+ export { twoDigits as default, twoDigits };
13395
+ export type { ConfigNames, OptionsOverrides, OptionsTypeScriptWithTypes, OptionsWithDrizzle, OptionsWithFiles, OptionsWithIgnores, OptionsWithReact, OptionsWithStorybook, Rules, TypedFlatConfigItem };
package/dist/index.mjs ADDED
@@ -0,0 +1 @@
1
+ import{renamePluginsInRules as x,renamePluginsInConfigs as N,FlatConfigComposer as R}from"eslint-flat-config-utils";import{findUp as $}from"find-up";import{isPackageExists as c}from"local-pkg";import M from"eslint-config-flat-gitignore";import B from"@eslint/js";import U from"@stylistic/eslint-plugin";import j from"globals";import D from"eslint-plugin-de-morgan";import A from"eslint-plugin-n";import G from"@eslint-community/eslint-plugin-eslint-comments";import J from"@eslint-community/eslint-plugin-eslint-comments/configs";import V from"eslint-plugin-jsdoc";import P from"eslint-plugin-unicorn";import W from"eslint-plugin-sonarjs";import _ from"eslint-plugin-regexp";import K from"eslint-plugin-antfu";import H,{configs as b}from"eslint-plugin-jsonc";import X from"jsonc-eslint-parser";import q from"@eslint/css";import{tailwindSyntax as Q}from"@eslint/css/syntax";import Y from"eslint-plugin-yml";import Z from"yaml-eslint-parser";import z from"@eslint/markdown";import{mergeProcessors as ee,processorPassThrough as re}from"eslint-merge-processors";import{fixupPluginRules as S}from"@eslint/compat";const i="**/*.?([cm])[jt]s?(x)",L="**/*.?([cm])ts",I="**/*.?([cm])tsx",oe="**/*.stories.tsx",ne="**/*.json",se="**/*.json5",te="**/*.jsonc",ie="**/*.css",ae="**/*.y?(a)ml",E="**/*.md",le="**/*.md/*.md",h=`${E}/${i}`,ce=["**/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"];function pe(){return[{files:[i],name:"2digits:antfu",plugins:{antfu:K},rules:{"antfu/if-newline":"error","antfu/top-level-function":"error"}}]}function ue(){return[{files:[i],name:"2digits:boolean",plugins:{boolean:D},rules:{...D.configs.recommended.rules}}]}const g={"@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"},me=x(J.recommended.rules,g);function de(){return[{files:[i],name:"2digits:comments",plugins:{comments:G},rules:{...me,"comments/no-unused-disable":"error","comments/disable-enable-pair":["error",{allowWholeFile:!0}]}}]}function fe(){return[{name:"2digits:css",files:[ie],language:"css/css",plugins:{css:q},languageOptions:{tolerant:!0,customSyntax:Q},rules:{...q.configs.recommended.rules}}]}async function s(e){const o=await e;return o.default||o}async function ge(e={}){const{overrides:o={},drizzleObjectName:n=["drizzle","db"]}=e,r=await s(import("eslint-plugin-drizzle"));return[{files:[i],name:"2digits:drizzle",plugins:{drizzle:S(r)},rules:{"drizzle/enforce-update-with-where":["error",{drizzleObjectName:n}],"drizzle/enforce-delete-with-where":["error",{drizzleObjectName:n}],...o}}]}async function ye(e={}){const{overrides:o={},files:n=["**/*.graphql","**/*.gql"]}=e,[r,a]=await Promise.all([s(import("@graphql-eslint/eslint-plugin")),import("graphql-config").then(({loadConfig:d})=>d({throwOnEmpty:!1,throwOnMissing:!1}).then(f=>f?.getDefault().schema))]),t=r.configs["flat/operations-recommended"].rules;let l={};if(a)l=t;else for(const d of Object.keys(t)){const f=d.replace("@graphql-eslint/","");f in r.rules&&(r.rules[f].meta.docs?.requiresSchema||r.rules[f].meta.docs?.requiresSiblings)||(l[d]=t[d])}const m=x(l,g);return[{name:"2digits:graphql",plugins:{gql:r},languageOptions:{parser:r.parser},files:n,rules:{...m,"gql/naming-convention":["error",{allowLeadingUnderscore:!0}],...o}}]}function be(e={}){const{gitIgnore:o,ignores:n=[]}=e;return[{ignores:[ce,n].flat(),name:"2digits:ignores"},M({strict:!1,...o,name:"2digits:gitignore"})]}function we(e={}){const{overrides:o={}}=e;return[{files:[i],name:"2digits:javascript",plugins:{stylistic:U},languageOptions:{ecmaVersion:2022,globals:{...j.browser,...j.es2021,...j.node,document:"readonly",navigator:"readonly",window:"readonly"},parserOptions:{ecmaFeatures:{jsx:!0},ecmaVersion:2022,sourceType:"module"},sourceType:"module"},linterOptions:{reportUnusedDisableDirectives:!0},rules:{...B.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"}],...o}}]}function ke(){return[{files:[i],name:"2digits:jsdoc",plugins:{jsdoc:V},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 he(){return[...b["flat/base"].map(e=>({...e,name:"2digits:jsonc/base"})),{name:"2digits:jsonc/json",files:[ne],...w,rules:{...v(b["flat/recommended-with-json"])}},{name:"2digits:jsonc/jsonc",files:[te],...w,rules:{...v(b["flat/recommended-with-jsonc"])}},{name:"2digits:jsonc/json5",files:[se],...w,rules:{...v(b["flat/recommended-with-json5"])}},{name:"2digits:jsonc/package.json",...w,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"],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",...w,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"],pathPattern:"^compilerOptions$"}]}},...b["flat/prettier"].map(e=>({...e,name:"2digits:jsonc/prettier"}))]}const w={languageOptions:{parser:X},plugins:{jsonc:H}};function v(e){return Object.fromEntries(e.flatMap(({rules:o})=>Object.entries(o??{})))}const O=[E];function xe(){return[{name:"2digits:markdown/setup",plugins:{markdown:z}},{name:"2digits:markdown/processor",files:O,language:"markdown/gfm",ignores:[le],processor:ee([z.processors.markdown,re])},{name:"2digits:markdown/parser",files:O,language:"markdown/gfm",languageOptions:{parser:je}},{name:"2digits:markdown/rules",files:O,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:[h],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 je={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 ve(e={}){const{files:o=[L,I],overrides:n={},parserOptions:r}=e,[a,t]=await Promise.all([s(import("@next/eslint-plugin-next")),s(import("@typescript-eslint/parser"))]),l=x({...a.configs.recommended.rules,...a.configs["core-web-vitals"].rules},g);return[{name:"2digits:next/setup",plugins:{next:S(a)}},{name:"2digits:next/rules",files:o,languageOptions:{parser:t,parserOptions:{ecmaFeatures:{jsx:!0},projectService:!0,...r},sourceType:"module"},rules:{...l,"next/no-html-link-for-pages":"off",...n}}]}function Oe(){return[{files:[i],name:"2digits:node",settings:{node:{version:">= 22.0.0"}},plugins:{node:A},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 Se(){const e=await s(import("eslint-plugin-pnpm"));return[{name:"2digits:pnpm/package-json",files:["**/package.json"],languageOptions:{parser:await s(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 s(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(){const[e,o]=await Promise.all([s(import("eslint-config-prettier")),s(import("@stylistic/eslint-plugin"))]);return[{name:"2digits:prettier",plugins:{stylistic:o},rules:{...e.rules,"tailwindcss/classnames-order":"off","stylistic/jsx-newline":["error",{prevent:!1}]}}]}async function Pe(e={}){const{files:o=[L,I],overrides:n={},parserOptions:r,tsconfigRootDir:a,reactCompiler:t=!0}=e,[l,m,d,f,F]=await Promise.all([s(import("@eslint-react/eslint-plugin")),s(import("eslint-plugin-react-hooks")),s(import("@typescript-eslint/parser")),t?s(import("eslint-plugin-react-compiler")):void 0,s(import("@stylistic/eslint-plugin"))]),y=l.configs.all.plugins,T=x({...m.configs["recommended-latest"].rules,...l.configs["recommended-type-checked"].rules},g);return[{name:"2digits:react/setup",plugins:{stylistic:F,"react-dom":y["@eslint-react/dom"],"react-web-api":y["@eslint-react/web-api"],"react-extra":y["@eslint-react"],"react-hooks":m,"react-hooks-extra":y["@eslint-react/hooks-extra"],"react-naming-convention":y["@eslint-react/naming-convention"],...t?{"react-compiler":f}:{}},settings:{react:{version:"detect"}}},{name:"2digits:react/rules",files:o,languageOptions:{parser:d,parserOptions:{ecmaFeatures:{jsx:!0},tsconfigRootDir:a,projectService:!0,...r},sourceType:"module"},rules:{...T,...t?{"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",...n}}]}function _e(){return[{files:[i],name:"2digits:regexp",plugins:{regexp:_},rules:{..._.configs["flat/recommended"].rules}}]}function qe(){return[{files:[i],name:"2digits:sonar",plugins:{sonar:W},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 ze(e={}){const{files:o=[oe],overrides:n={},parserOptions:r,storybookDirectory:a=".storybook"}=e,[t,l]=await Promise.all([s(import("eslint-plugin-storybook")),s(import("@typescript-eslint/parser"))]),m={parser:l,parserOptions:{ecmaFeatures:{jsx:!0},projectService:!0,...r},sourceType:"module"};return[{name:"2digits:storybook/setup",plugins:{storybook:S(t)}},{name:"2digits:storybook/rules",files:o,languageOptions:m,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:o,rules:{"react-hooks/rules-of-hooks":"off","react/display-name":"off","sonar/no-duplicate-string":"off"}},{name:"2digits:storybook/config",files:[`${a}/main.@(js|cjs|mjs|ts)`],languageOptions:m,rules:{"storybook/no-uninstalled-addons":"error"}}]}async function Ce(e={}){const{overrides:o={}}=e,[n,{tailwindFunctions:r},a]=await Promise.all([s(import("eslint-plugin-tailwindcss")),s(import("@2digits/constants")),$(["tailwind.config.ts","tailwind.config.js"])]);return[{files:[i],name:"2digits:tailwind",plugins:{tailwindcss:n},settings:{tailwindcss:{callees:r,config:a}},rules:{...n.configs.recommended.rules,...o}}]}async function $e(e={}){const{overrides:o={}}=e,n=await s(import("@tanstack/eslint-plugin-query")),r=x(n.configs["flat/recommended"].at(0)?.rules??{},g);return[{files:[i],name:"2digits:tanstack",plugins:{tanstack:n},rules:{...r,...o}}]}async function Le(e={}){const{overrides:o={}}=e,n=await s(import("eslint-plugin-turbo"));return[{files:[i],name:"2digits:turbo",plugins:{turbo:n},rules:{"turbo/no-undeclared-env-vars":"error",...o}}]}async function Ie(e={}){const{overrides:o={},parserOptions:n={}}=e,[{plugin:r,configs:a,parser:t},l]=await Promise.all([s(import("typescript-eslint")),s(import("@2digits/eslint-plugin"))]),m=N(a.strictTypeChecked,g),d=Object.fromEntries(m.flatMap(({rules:f})=>Object.entries(f??{})));return[{name:"2digits:typescript/setup",plugins:{ts:r,"@2digits":l}},{name:"2digits:typescript/rules",files:[i],ignores:[h],languageOptions:{parser:t,parserOptions:{tsconfigRootDir:process.cwd(),projectService:!0,warnOnUnsupportedTypeScriptVersion:!1,...n},sourceType:"module"},rules:{...d,"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",...l.configs.recommended.rules,...o}},{name:"2digits:typescript/disables/dts",files:["**/*.d.ts"],ignores:[h],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:[h],rules:{"no-unused-expressions":"off"}},{name:"2digits:typescript/disables/cjs",files:["**/*.js","**/*.cjs","**/*.cts"],ignores:[h],rules:{"ts/no-require-imports":"off","ts/no-var-requires":"off"}}]}function Ee(){return[{files:[i],name:"2digits:unicorn",plugins:{unicorn:P},rules:{...P.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 Fe(){return[{name:"2digits:yaml/setup",plugins:{yml:Y}},{name:"2digits:yaml/base",...k,rules:{"no-irregular-whitespace":"off","no-unused-vars":"off","spaced-comment":"off"}},{name:"2digits:yaml/recommended",...k,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",...k,rules:{"yml/block-mapping":"error","yml/block-sequence":"error","yml/plain-scalar":"error","yml/spaced-comment":"error"}},{name:"2digits:yaml/pnpm-workspace",...k,files:["pnpm-workspace.yaml"],rules:{"yml/sort-keys":["error",{order:["packages","overrides","patchedDependencies","hoistPattern","catalog","catalogs","allowedDeprecatedVersions","allowNonAppliedPatches","configDependencies","ignoredBuiltDependencies","ignoredOptionalDependencies","neverBuiltDependencies","onlyBuiltDependencies","onlyBuiltDependenciesFile","packageExtensions","peerDependencyRules","supportedArchitectures"],pathPattern:"^$"},{order:{type:"asc"},pathPattern:".*"}]}},{name:"2digits:yaml/prettier",...k,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 k={files:[ae],languageOptions:{parser:Z}};function p(e,o){return typeof e=="boolean"?e:e?.enable??o??!1}function u(e){if(typeof e=="boolean"||e===void 0)return{};const{enable:o,...n}=e;return n}async function C(e={},...o){let n;e.pnpm===void 0&&(n=$("pnpm-workspace.yaml"));let r=new R(be(e.ignores),we(e.js),ue(),Oe(),de(),ke(),Ee(),qe(),_e(),pe(),he(),fe(),Fe(),xe());p(e.turbo,c("turbo"))&&(r=r.append(Le(u(e.turbo))));const{overrides:a,...t}=u(e.ts);return p(e.ts,c("typescript"))&&(r=r.append(Ie(u(e.ts)))),p(e.react,c("react"))&&(r=r.append(Pe({...u(e.react),...t}))),p(e.next,c("next"))&&(r=r.append(ve({...u(e.next),...t}))),p(e.storybook,c("storybook"))&&(r=r.append(ze({...u(e.storybook),...t}))),p(e.tailwind,c("tailwindcss"))&&(r=r.append(Ce(u(e.tailwind)))),p(e.tanstack,c("react-query")||c("@tanstack/react-query")||c("@tanstack/react-query-devtools"))&&(r=r.append($e(u(e.tanstack)))),p(e.drizzle,c("drizzle-kit")||c("drizzle-orm"))&&(r=r.append(ge(u(e.drizzle)))),p(e.graphql,c("graphql"))&&(r=r.append(ye(u(e.graphql)))),p(e.pnpm,!!await n)&&(r=r.append(Se())),r=r.append(...o),c("prettier")&&(r=r.append(De())),r.renamePlugins(g).toConfigs()}export{C as default,C as twoDigits};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@2digits/eslint-config",
3
- "version": "4.3.7",
3
+ "version": "4.4.0",
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": {
@@ -9,22 +9,16 @@
9
9
  "directory": "packages/eslint-config"
10
10
  },
11
11
  "type": "module",
12
- "main": "./dist/index.js",
13
- "types": "./dist/index.d.ts",
12
+ "main": "./dist/index.mjs",
13
+ "types": "./dist/index.d.mts",
14
14
  "files": [
15
15
  "dist"
16
16
  ],
17
17
  "exports": {
18
18
  "./package.json": "./package.json",
19
19
  ".": {
20
- "import": {
21
- "types": "./dist/index.d.ts",
22
- "default": "./dist/index.js"
23
- },
24
- "require": {
25
- "types": "./dist/index.d.cts",
26
- "default": "./dist/index.cjs"
27
- }
20
+ "types": "./dist/index.d.mts",
21
+ "default": "./dist/index.mjs"
28
22
  }
29
23
  },
30
24
  "sideEffects": false,
@@ -35,7 +29,7 @@
35
29
  "public": true,
36
30
  "dependencies": {
37
31
  "@eslint-community/eslint-plugin-eslint-comments": "4.4.1",
38
- "@eslint-react/eslint-plugin": "1.40.4",
32
+ "@eslint-react/eslint-plugin": "1.41.0",
39
33
  "@eslint/compat": "1.2.8",
40
34
  "@eslint/css": "0.6.0",
41
35
  "@eslint/js": "9.24.0",
@@ -43,8 +37,9 @@
43
37
  "@graphql-eslint/eslint-plugin": "4.4.0",
44
38
  "@next/eslint-plugin-next": "15.2.4",
45
39
  "@stylistic/eslint-plugin": "4.2.0",
46
- "@tanstack/eslint-plugin-query": "5.71.5",
47
- "@typescript-eslint/parser": "8.29.0",
40
+ "@tanstack/eslint-plugin-query": "5.72.0",
41
+ "@typescript-eslint/parser": "8.29.1",
42
+ "@typescript-eslint/utils": "8.29.1",
48
43
  "eslint-config-flat-gitignore": "2.1.0",
49
44
  "eslint-config-prettier": "10.1.1",
50
45
  "eslint-flat-config-utils": "2.0.1",
@@ -56,7 +51,7 @@
56
51
  "eslint-plugin-jsonc": "2.20.0",
57
52
  "eslint-plugin-n": "17.17.0",
58
53
  "eslint-plugin-pnpm": "0.3.1",
59
- "eslint-plugin-react-compiler": "19.0.0-beta-e993439-20250328",
54
+ "eslint-plugin-react-compiler": "19.0.0-beta-e993439-20250405",
60
55
  "eslint-plugin-react-hooks": "5.2.0",
61
56
  "eslint-plugin-regexp": "2.7.0",
62
57
  "eslint-plugin-sonarjs": "3.0.2",
@@ -70,30 +65,29 @@
70
65
  "graphql-config": "5.1.3",
71
66
  "jsonc-eslint-parser": "2.4.0",
72
67
  "local-pkg": "1.1.1",
73
- "typescript-eslint": "8.29.0",
68
+ "typescript-eslint": "8.29.1",
74
69
  "yaml-eslint-parser": "1.3.0",
75
70
  "@2digits/constants": "0.3.8",
76
- "@2digits/eslint-plugin": "2.3.48"
71
+ "@2digits/eslint-plugin": "2.3.49"
77
72
  },
78
73
  "devDependencies": {
79
74
  "@eslint/config-inspector": "1.0.2",
80
75
  "@types/node": "22.14.0",
81
76
  "@types/react": "19.1.0",
82
- "@typescript-eslint/utils": "8.29.0",
83
77
  "dedent": "1.5.3",
84
78
  "eslint": "9.24.0",
85
79
  "eslint-typegen": "2.1.0",
86
80
  "execa": "9.5.2",
87
81
  "react": "19.1.0",
88
82
  "tinyglobby": "0.2.12",
89
- "tsup": "8.4.0",
90
83
  "typescript": "5.8.3",
84
+ "unbuild": "3.5.0",
91
85
  "vitest": "3.1.1",
92
86
  "@2digits/tsconfig": "0.7.1"
93
87
  },
94
88
  "scripts": {
95
- "build": "tsup",
96
- "dev": "tsup --watch",
89
+ "build": "unbuild",
90
+ "dev": "unbuild --watch",
97
91
  "types": "tsc --noEmit",
98
92
  "docs": "eslint-config-inspector build",
99
93
  "docs:dev": "eslint-config-inspector",
package/dist/index.cjs DELETED
@@ -1,2 +0,0 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var ge=require('eslint-plugin-antfu'),N=require('eslint-plugin-de-morgan'),ye=require('@eslint-community/eslint-plugin-eslint-comments'),be=require('@eslint-community/eslint-plugin-eslint-comments/configs'),eslintFlatConfigUtils=require('eslint-flat-config-utils'),E=require('@eslint/css'),syntax=require('@eslint/css/syntax'),compat=require('@eslint/compat'),graphqlConfig=require('graphql-config'),Ce=require('@eslint/js'),je=require('@stylistic/eslint-plugin'),C=require('globals'),Se=require('eslint-plugin-jsonc'),Ie=require('jsonc-eslint-parser'),H=require('@eslint/markdown'),eslintMergeProcessors=require('eslint-merge-processors'),I=require('eslint-plugin-unicorn'),Q=require('eslint-plugin-n'),Z=require('eslint-plugin-sonarjs'),Be=require('yaml-eslint-parser'),ne=require('eslint-plugin-regexp'),findUp=require('find-up'),Me=require('eslint-plugin-yml'),localPkg=require('local-pkg');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var ge__default=/*#__PURE__*/_interopDefault(ge);var N__default=/*#__PURE__*/_interopDefault(N);var ye__default=/*#__PURE__*/_interopDefault(ye);var be__default=/*#__PURE__*/_interopDefault(be);var E__default=/*#__PURE__*/_interopDefault(E);var Ce__default=/*#__PURE__*/_interopDefault(Ce);var je__default=/*#__PURE__*/_interopDefault(je);var C__default=/*#__PURE__*/_interopDefault(C);var Se__default=/*#__PURE__*/_interopDefault(Se);var Ie__default=/*#__PURE__*/_interopDefault(Ie);var H__default=/*#__PURE__*/_interopDefault(H);var I__default=/*#__PURE__*/_interopDefault(I);var Q__default=/*#__PURE__*/_interopDefault(Q);var Z__default=/*#__PURE__*/_interopDefault(Z);var Be__default=/*#__PURE__*/_interopDefault(Be);var ne__default=/*#__PURE__*/_interopDefault(ne);var Me__default=/*#__PURE__*/_interopDefault(Me);var s="**/*.?([cm])[jt]s?(x)",w="**/*.?([cm])ts",v="**/*.?([cm])tsx",F="**/*.stories.tsx",P="**/*.json",_="**/*.json5",D="**/*.jsonc",L="**/*.css",R="**/*.y?(a)ml",T="**/*.md",B="**/*.md/*.md",b=`${T}/${s}`,G=["**/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"];function z(){return [{files:[s],name:"2digits:antfu",plugins:{antfu:ge__default.default},rules:{"antfu/if-newline":"error","antfu/top-level-function":"error"}}]}function q(){return [{files:[s],name:"2digits:boolean",plugins:{boolean:N__default.default},rules:{...N__default.default.configs.recommended.rules}}]}var 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"};var he=eslintFlatConfigUtils.renamePluginsInRules(be__default.default.recommended.rules,l);function W(){return [{files:[s],name:"2digits:comments",plugins:{comments:ye__default.default},rules:{...he,"comments/no-unused-disable":"error","comments/disable-enable-pair":["error",{allowWholeFile:true}]}}]}function M(){return [{name:"2digits:css",files:[L],language:"css/css",plugins:{css:E__default.default},languageOptions:{tolerant:true,customSyntax:syntax.tailwindSyntax},rules:{...E__default.default.configs.recommended.rules}}]}async function t(e){let o=await e;return o.default||o}async function A(e={}){let{overrides:o={},drizzleObjectName:i=["drizzle","db"]}=e,r=await t(import('eslint-plugin-drizzle'));return [{files:[s],name:"2digits:drizzle",plugins:{drizzle:compat.fixupPluginRules(r)},rules:{"drizzle/enforce-update-with-where":["error",{drizzleObjectName:i}],"drizzle/enforce-delete-with-where":["error",{drizzleObjectName:i}],...o}}]}async function U(e={}){let{overrides:o={},files:i=["**/*.graphql","**/*.gql"]}=e,[r,p]=await Promise.all([t(import('@graphql-eslint/eslint-plugin')),graphqlConfig.loadConfig({throwOnEmpty:false,throwOnMissing:false}).then(g=>g?.getDefault().schema)]),a=r.configs["flat/operations-recommended"].rules,c={};if(p)c=a;else for(let g of Object.keys(a)){let y=g.replace("@graphql-eslint/","");y in r.rules&&(r.rules[y].meta.docs?.requiresSchema||r.rules[y].meta.docs?.requiresSiblings)||(c[g]=a[g]);}let u=eslintFlatConfigUtils.renamePluginsInRules(c,l);return [{name:"2digits:graphql",plugins:{gql:r},languageOptions:{parser:r.parser},files:i,rules:{...u,"gql/naming-convention":["error",{allowLeadingUnderscore:true}],...o}}]}async function $(e={}){let{gitIgnore:o,ignores:i=[]}=e;return eslintFlatConfigUtils.composer({ignores:[G,i].flat(),name:"2digits:ignores"},t(import('eslint-config-flat-gitignore')).then(r=>r({strict:false,...o,name:"2digits:gitignore"})))}function J(e={}){let{overrides:o={}}=e;return [{files:[s],name:"2digits:javascript",plugins:{stylistic:je__default.default},languageOptions:{ecmaVersion:2022,globals:{...C__default.default.browser,...C__default.default.es2021,...C__default.default.node,document:"readonly",navigator:"readonly",window:"readonly"},parserOptions:{ecmaFeatures:{jsx:true},ecmaVersion:2022,sourceType:"module"},sourceType:"module"},linterOptions:{reportUnusedDisableDirectives:true},rules:{...Ce__default.default.configs.recommended.rules,"accessor-pairs":["error",{enforceForClassMembers:true,setWithoutGet:true}],"array-callback-return":"error","block-scoped-var":"error","constructor-super":"error","default-case-last":"error","dot-notation":["error",{allowKeywords:true}],eqeqeq:["error","smart"],"new-cap":["error",{capIsNew:false,newIsCap:true,properties:true}],"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:true}],"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:false,allowSwitch:false}],"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:false}],"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:true}],"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:false}],"no-unreachable":"error","no-unreachable-loop":"error","no-unsafe-finally":"error","no-unsafe-negation":"error","no-unused-expressions":["error",{allowShortCircuit:true,allowTaggedTemplates:true,allowTernary:true}],"no-unused-vars":["error",{args:"none",caughtErrors:"none",ignoreRestSiblings:true,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:true,ignoreConstructors:false}],"one-var":["error",{initialized:"never"}],"prefer-arrow-callback":["error",{allowNamedFunctions:true,allowUnboundThis:true}],"prefer-const":["error",{destructuring:"all",ignoreReadBeforeAssign:true}],"prefer-exponentiation-operator":"error","prefer-promise-reject-errors":"error","prefer-regex-literals":["error",{disallowRedundantWrapping:true}],"prefer-rest-params":"error","prefer-spread":"error","prefer-template":"error","symbol-description":"error","unicode-bom":["error","never"],"use-isnan":["error",{enforceForIndexOf:true,enforceForSwitchCase:true}],"valid-typeof":["error",{requireStringLiterals:true}],"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"}],...o}}]}async function K(){return [{files:[s],name:"2digits:jsdoc",plugins:{jsdoc:await t(import('eslint-plugin-jsdoc'))},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 V(){return [...Se.configs["flat/base"].map(e=>({...e,name:"2digits:jsonc/base"})),{name:"2digits:jsonc/json",files:[P],...k,rules:{...j(Se.configs["flat/recommended-with-json"])}},{name:"2digits:jsonc/jsonc",files:[D],...k,rules:{...j(Se.configs["flat/recommended-with-jsonc"])}},{name:"2digits:jsonc/json5",files:[_],...k,rules:{...j(Se.configs["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"],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"],pathPattern:"^compilerOptions$"}]}},...Se.configs["flat/prettier"].map(e=>({...e,name:"2digits:jsonc/prettier"}))]}var k={languageOptions:{parser:Ie__default.default},plugins:{jsonc:Se__default.default}};function j(e){return Object.fromEntries(e.flatMap(({rules:o})=>Object.entries(o??{})))}var S=[T];function X(){return [{name:"2digits:markdown/setup",plugins:{markdown:H__default.default}},{name:"2digits:markdown/processor",files:S,language:"markdown/gfm",ignores:[B],processor:eslintMergeProcessors.mergeProcessors([H__default.default.processors.markdown,eslintMergeProcessors.processorPassThrough])},{name:"2digits:markdown/parser",files:S,language:"markdown/gfm",languageOptions:{parser:_e}},{name:"2digits:markdown/rules",files:S,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:[b],languageOptions:{parserOptions:{ecmaFeatures:{impliedStrict:true}}},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"}}]}var _e={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:true},visitorKeys:{Program:[]}})};async function Y(e={}){let{files:o=[w,v],overrides:i={},parserOptions:r}=e,[p,a]=await Promise.all([t(import('@next/eslint-plugin-next')),t(import('@typescript-eslint/parser'))]),c=eslintFlatConfigUtils.renamePluginsInRules({...p.configs.recommended.rules,...p.configs["core-web-vitals"].rules},l);return [{name:"2digits:next/setup",plugins:{next:compat.fixupPluginRules(p)}},{name:"2digits:next/rules",files:o,languageOptions:{parser:a,parserOptions:{ecmaFeatures:{jsx:true},projectService:true,...r},sourceType:"module"},rules:{...c,"next/no-html-link-for-pages":"off",...i}}]}function ee(){return [{files:[s],name:"2digits:node",settings:{node:{version:">= 22.0.0"}},plugins:{node:Q__default.default},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:true}],"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 re(){let e=await t(import('eslint-plugin-pnpm'));return [{name:"2digits:pnpm/package-json",files:["**/package.json"],languageOptions:{parser:Ie__default.default},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:Be__default.default},plugins:{pnpm:e},rules:{"pnpm/yaml-no-duplicate-catalog-item":"error","pnpm/yaml-no-unused-catalog-item":"error"}}]}async function oe(){let[e,o]=await Promise.all([t(import('eslint-config-prettier')),t(import('@stylistic/eslint-plugin'))]);return [{name:"2digits:prettier",plugins:{stylistic:o},rules:{...e.rules,"tailwindcss/classnames-order":"off","stylistic/jsx-newline":["error",{prevent:false}]}}]}async function te(e={}){let{files:o=[w,v],overrides:i={},parserOptions:r,tsconfigRootDir:p,reactCompiler:a=true}=e,[c,u,g,y]=await Promise.all([t(import('@eslint-react/eslint-plugin')),t(import('eslint-plugin-react-hooks')),t(import('@typescript-eslint/parser')),a?t(import('eslint-plugin-react-compiler')):void 0]),O=c.configs.all.plugins,ue=eslintFlatConfigUtils.renamePluginsInRules({...u.configs["recommended-latest"].rules,...c.configs["recommended-type-checked"].rules},l);return [{name:"2digits:react/setup",plugins:{stylistic:je__default.default,"react-dom":O["@eslint-react/dom"],"react-web-api":O["@eslint-react/web-api"],"react-extra":O["@eslint-react"],"react-hooks":u,"react-hooks-extra":O["@eslint-react/hooks-extra"],"react-naming-convention":O["@eslint-react/naming-convention"],...a?{"react-compiler":y}:{}},settings:{react:{version:"detect"}}},{name:"2digits:react/rules",files:o,languageOptions:{parser:g,parserOptions:{ecmaFeatures:{jsx:true},tsconfigRootDir:p,projectService:true,...r},sourceType:"module"},rules:{...ue,...a?{"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:false}],"stylistic/jsx-self-closing-comp":"error",...i}}]}function se(){return [{files:[s],name:"2digits:regexp",plugins:{regexp:ne__default.default},rules:{...ne__default.default.configs["flat/recommended"].rules}}]}function ie(){return [{files:[s],name:"2digits:sonar",plugins:{sonar:Z__default.default},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 ae(e={}){let{files:o=[F],overrides:i={},parserOptions:r,storybookDirectory:p=".storybook"}=e,[a,c]=await Promise.all([t(import('eslint-plugin-storybook')),t(import('@typescript-eslint/parser'))]),u={parser:c,parserOptions:{ecmaFeatures:{jsx:true},projectService:true,...r},sourceType:"module"};return [{name:"2digits:storybook/setup",plugins:{storybook:compat.fixupPluginRules(a)}},{name:"2digits:storybook/rules",files:o,languageOptions:u,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",...i}},{name:"2digits:storybook/disables",files:o,rules:{"react-hooks/rules-of-hooks":"off","react/display-name":"off","sonar/no-duplicate-string":"off"}},{name:"2digits:storybook/config",files:[`${p}/main.@(js|cjs|mjs|ts)`],languageOptions:u,rules:{"storybook/no-uninstalled-addons":"error"}}]}async function pe(e={}){let{overrides:o={}}=e,[i,{tailwindFunctions:r},p]=await Promise.all([t(import('eslint-plugin-tailwindcss')),t(import('@2digits/constants')),findUp.findUp(["tailwind.config.ts","tailwind.config.js"])]);return [{files:[s],name:"2digits:tailwind",plugins:{tailwindcss:i},settings:{tailwindcss:{callees:r,config:p}},rules:{...i.configs.recommended.rules,...o}}]}async function le(e={}){let{overrides:o={}}=e,i=await t(import('@tanstack/eslint-plugin-query')),r=eslintFlatConfigUtils.renamePluginsInRules(i.configs["flat/recommended"].at(0)?.rules??{},l);return [{files:[s],name:"2digits:tanstack",plugins:{tanstack:i},rules:{...r,...o}}]}async function ce(e={}){let{overrides:o={}}=e,i=await t(import('eslint-plugin-turbo'));return [{files:[s],name:"2digits:turbo",plugins:{turbo:i},rules:{"turbo/no-undeclared-env-vars":"error",...o}}]}async function me(e={}){let{overrides:o={},parserOptions:i={}}=e,[{plugin:r,configs:p,parser:a},c]=await Promise.all([t(import('typescript-eslint')),t(import('@2digits/eslint-plugin'))]),u=eslintFlatConfigUtils.renamePluginsInConfigs(p.strictTypeChecked,l),g=Object.fromEntries(u.flatMap(({rules:y})=>Object.entries(y??{})));return [{name:"2digits:typescript/setup",plugins:{ts:r,"@2digits":c}},{name:"2digits:typescript/rules",files:[s],ignores:[b],languageOptions:{parser:a,parserOptions:{tsconfigRootDir:process.cwd(),projectService:true,warnOnUnsupportedTypeScriptVersion:false,...i},sourceType:"module"},rules:{...g,"ts/restrict-template-expressions":["error",{allowNumber:true}],"ts/ban-ts-comment":["error",{"ts-ignore":"allow-with-description"}],"ts/consistent-type-exports":["error"],"ts/consistent-type-imports":["error",{prefer:"type-imports",disallowTypeAnnotations:false,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:true,argsIgnorePattern:"^_",varsIgnorePattern:"^_"}],"ts/unbound-method":"off",...c.configs.recommended.rules,...o}},{name:"2digits:typescript/disables/dts",files:["**/*.d.ts"],ignores:[b],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:[b],rules:{"no-unused-expressions":"off"}},{name:"2digits:typescript/disables/cjs",files:["**/*.js","**/*.cjs","**/*.cts"],ignores:[b],rules:{"ts/no-require-imports":"off","ts/no-var-requires":"off"}}]}function de(){return [{files:[s],name:"2digits:unicorn",plugins:{unicorn:I__default.default},rules:{...I__default.default.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:false,checkArrowFunctionBody:false}],"unicorn/prefer-top-level-await":["off"]}}]}function fe(){return [{name:"2digits:yaml/setup",plugins:{yml:Me__default.default}},{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/pnpm-workspace",...x,files:["pnpm-workspace.yaml"],rules:{"yml/sort-keys":["error",{order:["packages","overrides","patchedDependencies","hoistPattern","catalog","catalogs","allowedDeprecatedVersions","allowNonAppliedPatches","configDependencies","ignoredBuiltDependencies","ignoredOptionalDependencies","neverBuiltDependencies","onlyBuiltDependencies","onlyBuiltDependenciesFile","packageExtensions","peerDependencyRules","supportedArchitectures"],pathPattern:"^$"},{order:{type:"asc"},pathPattern:".*"}]}},{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"}}]}var x={files:[R],languageOptions:{parser:Be__default.default}};function d(e,o){return typeof e=="boolean"?e:e?.enable??o??false}function f(e){if(typeof e=="boolean"||e===void 0)return {};let{enable:o,...i}=e;return i}async function Je(e={},...o){let i;e.pnpm===void 0&&(i=findUp.findUp("pnpm-workspace.yaml"));let r=new eslintFlatConfigUtils.FlatConfigComposer($(e.ignores),J(e.js),q(),ee(),W(),K(),de(),ie(),se(),z(),V(),M(),fe(),X());d(e.turbo,localPkg.isPackageExists("turbo"))&&(r=r.append(ce(f(e.turbo))));let{overrides:p,...a}=f(e.ts);return d(e.ts,localPkg.isPackageExists("typescript"))&&(r=r.append(me(f(e.ts)))),d(e.react,localPkg.isPackageExists("react"))&&(r=r.append(te({...f(e.react),...a}))),d(e.next,localPkg.isPackageExists("next"))&&(r=r.append(Y({...f(e.next),...a}))),d(e.storybook,localPkg.isPackageExists("storybook"))&&(r=r.append(ae({...f(e.storybook),...a}))),d(e.tailwind,localPkg.isPackageExists("tailwindcss"))&&(r=r.append(pe(f(e.tailwind)))),d(e.tanstack,localPkg.isPackageExists("react-query")||localPkg.isPackageExists("@tanstack/react-query")||localPkg.isPackageExists("@tanstack/react-query-devtools"))&&(r=r.append(le(f(e.tanstack)))),d(e.drizzle,localPkg.isPackageExists("drizzle-kit")||localPkg.isPackageExists("drizzle-orm"))&&(r=r.append(A(f(e.drizzle)))),d(e.graphql,localPkg.isPackageExists("graphql"))&&(r=r.append(U(f(e.graphql)))),d(e.pnpm,!!await i)&&(r=r.append(re())),r=r.append(...o),localPkg.isPackageExists("prettier")&&(r=r.append(oe())),r.renamePlugins(l).toConfigs()}exports.antfu=z;exports.boolean=q;exports.comments=W;exports.css=M;exports.default=Je;exports.drizzle=A;exports.graphql=U;exports.ignores=$;exports.javascript=J;exports.jsdoc=K;exports.jsonc=V;exports.markdown=X;exports.next=Y;exports.node=ee;exports.pnpm=re;exports.prettier=oe;exports.react=te;exports.regexp=se;exports.sonar=ie;exports.storybook=ae;exports.tailwind=pe;exports.tanstack=le;exports.turbo=ce;exports.twoDigits=Je;exports.typescript=me;exports.unicorn=de;exports.yaml=fe;//# sourceMappingURL=index.cjs.map
2
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/globs.ts","../src/configs/antfu.ts","../src/configs/boolean.ts","../src/constants.ts","../src/configs/comments.ts","../src/configs/css.ts","../src/utils.ts","../src/configs/drizzle.ts","../src/configs/graphql.ts","../src/configs/ignores.ts","../src/configs/javascript.ts","../src/configs/jsdoc.ts","../src/configs/jsonc.ts","../src/configs/markdown.ts","../src/configs/next.ts","../src/configs/node.ts","../src/configs/pnpm.ts","../src/configs/prettier.ts","../src/configs/react.ts","../src/configs/regexp.ts","../src/configs/sonar.ts","../src/configs/storybook.ts","../src/configs/tailwind.ts","../src/configs/tanstack.ts","../src/configs/turbo.ts","../src/configs/typescript.ts","../src/configs/unicorn.ts","../src/configs/yaml.ts","../src/factory.ts"],"names":["GLOB_SRC","GLOB_TS","GLOB_TSX","GLOB_STORIES","GLOB_JSON","GLOB_JSON5","GLOB_JSONC","GLOB_CSS","GLOB_YAML","GLOB_MARKDOWN","GLOB_MARKDOWN_IN_MARKDOWN","GLOB_MARKDOWN_CODE","GLOB_EXCLUDE","antfu","pluginAntfu","boolean","pluginDeMorgan","PluginNameMap","recommended","renamePluginsInRules","configs","comments","pluginComments","css","plugin","tailwindSyntax","interopDefault","m","resolved","drizzle","options","overrides","drizzleObjectName","fixupPluginRules","graphql","files","gql","gqlSchema","loadConfig","flatRecommended","rules","rule","ruleName","ignores","gitIgnore","composer","javascript","stylistic","globals","eslint","jsdoc","jsonc","config","SHARED_OPTIONS","collectRules","parser","markdown","mergeProcessors","processorPassThrough","parserPlain","code","next","parserOptions","node","default","pnpm","jsoncParser","yamlParser","prettier","react","tsconfigRootDir","reactCompiler","pluginReact","pluginReactHooks","pluginReactCompiler","plugins","regexp","pluginRegexp","sonar","storybook","storybookDirectory","languageOptions","tailwind","tailwindcss","tailwindFunctions","findUp","tanstack","turbo","typescript","twoDigits","strictConfig","renamePluginsInConfigs","unicorn","yaml","yml","enabled","defaults","enable","rest","userConfig","pnpmPromise","FlatConfigComposer","isPackageExists","typescriptOptions"],"mappings":"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","file":"index.cjs","sourcesContent":["export const GLOB_SRC = '**/*.?([cm])[jt]s?(x)';\n\nexport const GLOB_TS = '**/*.?([cm])ts';\nexport const GLOB_TSX = '**/*.?([cm])tsx';\n\nexport const GLOB_STORIES = '**/*.stories.tsx';\n\nexport const GLOB_JSON = '**/*.json';\nexport const GLOB_JSON5 = '**/*.json5';\nexport const GLOB_JSONC = '**/*.jsonc';\n\nexport const GLOB_CSS = '**/*.css';\n\nexport const GLOB_YAML = '**/*.y?(a)ml';\n\nexport const GLOB_MARKDOWN = '**/*.md';\nexport const GLOB_MARKDOWN_IN_MARKDOWN = '**/*.md/*.md';\nexport const GLOB_MARKDOWN_CODE = `${GLOB_MARKDOWN}/${GLOB_SRC}`;\n\nexport const GLOB_EXCLUDE = [\n '**/node_modules',\n '**/dist',\n '**/package-lock.json',\n '**/yarn.lock',\n '**/pnpm-lock.yaml',\n '**/bun.lockb',\n '**/bun.lock',\n\n '**/output',\n '**/coverage',\n '**/temp',\n '**/.temp',\n '**/tmp',\n '**/.tmp',\n '**/.history',\n '**/.vitepress/cache',\n '**/.nuxt',\n '**/.next',\n '**/.vercel',\n '**/.changeset',\n '**/.idea',\n '**/.cache',\n '**/.output',\n '**/.vite-inspect',\n '**/.yarn',\n\n '**/CHANGELOG*.md',\n '**/*.min.*',\n '**/LICENSE*',\n '**/__snapshots__',\n '**/auto-import?(s).d.ts',\n '**/components.d.ts',\n] as const;\n","import pluginAntfu from 'eslint-plugin-antfu';\n\nimport { GLOB_SRC } from '../globs';\nimport type { TypedFlatConfigItem } from '../types';\n\nexport function antfu(): TypedFlatConfigItem[] {\n return [\n {\n files: [GLOB_SRC],\n name: '2digits:antfu',\n plugins: {\n antfu: pluginAntfu,\n },\n rules: {\n 'antfu/if-newline': 'error',\n 'antfu/top-level-function': 'error',\n },\n },\n ];\n}\n","import pluginDeMorgan from 'eslint-plugin-de-morgan';\n\nimport { GLOB_SRC } from '../globs';\nimport type { TypedFlatConfigItem } from '../types';\n\nexport function boolean(): TypedFlatConfigItem[] {\n return [\n {\n files: [GLOB_SRC],\n name: '2digits:boolean',\n plugins: {\n boolean: pluginDeMorgan,\n },\n rules: {\n ...pluginDeMorgan.configs.recommended.rules,\n },\n },\n ];\n}\n","export const PluginNameMap = {\n '@next/next': 'next',\n '@eslint-react/naming-convention': 'react-naming-convention',\n '@eslint-react/hooks-extra': 'react-hooks-extra',\n '@eslint-react/dom': 'react-dom',\n '@eslint-react/web-api': 'react-web-api',\n '@eslint-react': 'react-extra',\n 'react-hooks': 'react-hooks',\n 'react-compiler': 'react-compiler',\n '@stylistic/eslint-plugin': 'stylistic',\n '@typescript-eslint': 'ts',\n node: 'node',\n '@eslint-community/eslint-comments': 'comments',\n storybook: 'storybook',\n turbo: 'turbo',\n jsdoc: 'jsdoc',\n unicorn: 'unicorn',\n tailwindcss: 'tailwindcss',\n '@tanstack/query': 'tanstack',\n '@2digits': '@2digits',\n '@graphql-eslint': 'gql',\n sonarjs: 'sonar',\n drizzle: 'drizzle',\n 'de-morgan': 'boolean',\n} as const;\n","import pluginComments from '@eslint-community/eslint-plugin-eslint-comments';\nimport configs from '@eslint-community/eslint-plugin-eslint-comments/configs';\nimport { renamePluginsInRules } from 'eslint-flat-config-utils';\n\nimport { PluginNameMap } from '../constants';\nimport { GLOB_SRC } from '../globs';\nimport type { TypedFlatConfigItem } from '../types';\n\nconst recommended = renamePluginsInRules(configs.recommended.rules as never, PluginNameMap);\n\nexport function comments(): TypedFlatConfigItem[] {\n return [\n {\n files: [GLOB_SRC],\n name: '2digits:comments',\n plugins: {\n comments: pluginComments,\n },\n rules: {\n ...recommended,\n\n 'comments/no-unused-disable': 'error',\n 'comments/disable-enable-pair': ['error', { allowWholeFile: true }],\n },\n },\n ];\n}\n","import plugin from '@eslint/css';\nimport { tailwindSyntax } from '@eslint/css/syntax';\n\nimport { GLOB_CSS } from '../globs';\nimport type { TypedFlatConfigItem } from '../types';\n\nexport function css(): TypedFlatConfigItem[] {\n return [\n {\n name: '2digits:css',\n files: [GLOB_CSS],\n language: 'css/css',\n plugins: {\n css: plugin,\n },\n languageOptions: {\n tolerant: true,\n customSyntax: tailwindSyntax,\n },\n rules: {\n ...plugin.configs.recommended.rules,\n },\n },\n ];\n}\n","import type { Awaitable } from 'eslint-flat-config-utils';\n\nexport async function interopDefault<T>(m: Awaitable<T>): Promise<T extends { default: infer U } ? U : T> {\n const resolved = await m;\n\n return ((resolved as Record<string, unknown>).default || resolved) as never;\n}\n","import { fixupPluginRules } from '@eslint/compat';\n\nimport { GLOB_SRC } from '../globs';\nimport type { OptionsWithDrizzle, TypedFlatConfigItem } from '../types';\nimport { interopDefault } from '../utils';\n\nexport async function drizzle(options: OptionsWithDrizzle = {}): Promise<TypedFlatConfigItem[]> {\n const { overrides = {}, drizzleObjectName = ['drizzle', 'db'] } = options;\n\n const drizzle = await interopDefault(import('eslint-plugin-drizzle'));\n\n return [\n {\n files: [GLOB_SRC],\n name: '2digits:drizzle',\n plugins: {\n drizzle: fixupPluginRules(drizzle as never),\n },\n rules: {\n 'drizzle/enforce-update-with-where': ['error', { drizzleObjectName }],\n 'drizzle/enforce-delete-with-where': ['error', { drizzleObjectName }],\n\n ...overrides,\n },\n },\n ];\n}\n","import { renamePluginsInRules } from 'eslint-flat-config-utils';\nimport { loadConfig } from 'graphql-config';\n\nimport { PluginNameMap } from '../constants';\nimport type { OptionsWithFiles, TypedFlatConfigItem } from '../types';\nimport { interopDefault } from '../utils';\n\nexport async function graphql(options: OptionsWithFiles = {}): Promise<TypedFlatConfigItem[]> {\n const { overrides = {}, files = ['**/*.graphql', '**/*.gql'] } = options;\n\n const [gql, gqlSchema] = await Promise.all([\n interopDefault(import('@graphql-eslint/eslint-plugin')),\n loadConfig({ throwOnEmpty: false, throwOnMissing: false }).then((g) => g?.getDefault().schema),\n ]);\n\n const flatRecommended = gql.configs['flat/operations-recommended'].rules;\n\n let rules = {} as typeof flatRecommended;\n\n if (gqlSchema) {\n rules = flatRecommended;\n } else {\n for (const rule of Object.keys(flatRecommended) as Array<keyof typeof rules>) {\n const ruleName = rule.replace('@graphql-eslint/', '') as keyof typeof gql.rules;\n\n if (\n ruleName in gql.rules\n && (gql.rules[ruleName].meta.docs?.requiresSchema || gql.rules[ruleName].meta.docs?.requiresSiblings)\n ) {\n continue;\n }\n rules[rule] = flatRecommended[rule] as never;\n }\n }\n\n const recommended = renamePluginsInRules(rules, PluginNameMap);\n\n return [\n {\n name: '2digits:graphql',\n plugins: {\n gql,\n },\n languageOptions: {\n parser: gql.parser,\n },\n files,\n rules: {\n ...recommended,\n\n 'gql/naming-convention': ['error', { allowLeadingUnderscore: true } as never],\n\n ...overrides,\n },\n },\n ];\n}\n","import { composer } from 'eslint-flat-config-utils';\n\nimport { GLOB_EXCLUDE } from '../globs';\nimport type { OptionsWithIgnores, TypedFlatConfigItem } from '../types';\nimport { interopDefault } from '../utils';\n\nexport async function ignores(options: OptionsWithIgnores = {}): Promise<TypedFlatConfigItem[]> {\n const { gitIgnore, ignores = [] } = options;\n\n return composer(\n {\n ignores: [GLOB_EXCLUDE, ignores].flat(),\n name: '2digits:ignores',\n },\n interopDefault(import('eslint-config-flat-gitignore')).then((m) =>\n m({ strict: false, ...gitIgnore, name: '2digits:gitignore' }),\n ),\n );\n}\n","import eslint from '@eslint/js';\nimport stylistic from '@stylistic/eslint-plugin';\nimport globals from 'globals';\n\nimport { GLOB_SRC } from '../globs';\nimport type { OptionsOverrides, TypedFlatConfigItem } from '../types';\n\nexport function javascript(options: OptionsOverrides = {}): TypedFlatConfigItem[] {\n const { overrides = {} } = options;\n\n return [\n {\n files: [GLOB_SRC],\n name: '2digits:javascript',\n plugins: {\n stylistic,\n },\n languageOptions: {\n ecmaVersion: 2022,\n globals: {\n ...globals.browser,\n ...globals.es2021,\n ...globals.node,\n document: 'readonly',\n navigator: 'readonly',\n window: 'readonly',\n },\n parserOptions: {\n ecmaFeatures: {\n jsx: true,\n },\n ecmaVersion: 2022,\n sourceType: 'module',\n },\n sourceType: 'module',\n },\n linterOptions: {\n reportUnusedDisableDirectives: true,\n },\n rules: {\n ...eslint.configs.recommended.rules,\n\n 'accessor-pairs': ['error', { enforceForClassMembers: true, setWithoutGet: true }],\n 'array-callback-return': 'error',\n 'block-scoped-var': 'error',\n 'constructor-super': 'error',\n 'default-case-last': 'error',\n 'dot-notation': ['error', { allowKeywords: true }],\n eqeqeq: ['error', 'smart'],\n 'new-cap': ['error', { capIsNew: false, newIsCap: true, properties: true }],\n 'no-alert': 'error',\n 'no-array-constructor': 'error',\n 'no-async-promise-executor': 'error',\n 'no-caller': 'error',\n 'no-case-declarations': 'error',\n 'no-class-assign': 'error',\n 'no-compare-neg-zero': 'error',\n 'no-cond-assign': ['error', 'always'],\n 'no-const-assign': 'error',\n 'no-control-regex': 'error',\n 'no-debugger': 'error',\n 'no-delete-var': 'error',\n 'no-dupe-args': 'error',\n 'no-dupe-class-members': 'error',\n 'no-dupe-keys': 'error',\n 'no-duplicate-case': 'error',\n 'no-empty': ['error', { allowEmptyCatch: true }],\n 'no-empty-character-class': 'error',\n 'no-empty-pattern': 'error',\n 'no-eval': 'error',\n 'no-ex-assign': 'error',\n 'no-extend-native': 'error',\n 'no-extra-bind': 'error',\n 'no-extra-boolean-cast': 'error',\n 'no-fallthrough': 'error',\n 'no-func-assign': 'error',\n 'no-global-assign': 'error',\n 'no-implied-eval': 'error',\n 'no-import-assign': 'error',\n 'no-invalid-regexp': 'error',\n 'no-irregular-whitespace': 'error',\n 'no-iterator': 'error',\n 'no-labels': ['error', { allowLoop: false, allowSwitch: false }],\n 'no-lone-blocks': 'error',\n 'no-loss-of-precision': 'error',\n 'no-misleading-character-class': 'error',\n 'no-multi-str': 'error',\n 'no-new': 'error',\n 'no-new-func': 'error',\n 'no-new-native-nonconstructor': 'error',\n 'no-new-wrappers': 'error',\n 'no-obj-calls': 'error',\n 'no-octal': 'error',\n 'no-octal-escape': 'error',\n 'no-proto': 'error',\n 'no-prototype-builtins': 'error',\n 'no-redeclare': ['error', { builtinGlobals: false }],\n 'no-regex-spaces': 'error',\n 'no-restricted-globals': [\n 'error',\n { message: 'Use `globalThis` instead.', name: 'global' },\n { message: 'Use `globalThis` instead.', name: 'self' },\n ],\n 'no-restricted-properties': [\n 'error',\n {\n message: 'Use `Object.getPrototypeOf` or `Object.setPrototypeOf` instead.',\n property: '__proto__',\n },\n {\n message: 'Use `Object.defineProperty` instead.',\n property: '__defineGetter__',\n },\n {\n message: 'Use `Object.defineProperty` instead.',\n property: '__defineSetter__',\n },\n {\n message: 'Use `Object.getOwnPropertyDescriptor` instead.',\n property: '__lookupGetter__',\n },\n {\n message: 'Use `Object.getOwnPropertyDescriptor` instead.',\n property: '__lookupSetter__',\n },\n ],\n 'no-restricted-syntax': [\n 'error',\n 'DebuggerStatement',\n 'LabeledStatement',\n 'WithStatement',\n 'TSEnumDeclaration',\n 'TSExportAssignment',\n ],\n 'no-self-assign': ['error', { props: true }],\n 'no-self-compare': 'error',\n 'no-sequences': 'error',\n 'no-shadow-restricted-names': 'error',\n 'no-sparse-arrays': 'error',\n 'no-template-curly-in-string': 'error',\n 'no-this-before-super': 'error',\n 'no-throw-literal': 'error',\n 'no-undef': 'error',\n 'no-undef-init': 'error',\n 'no-unexpected-multiline': 'error',\n 'no-unmodified-loop-condition': 'error',\n 'no-unneeded-ternary': ['error', { defaultAssignment: false }],\n 'no-unreachable': 'error',\n 'no-unreachable-loop': 'error',\n 'no-unsafe-finally': 'error',\n 'no-unsafe-negation': 'error',\n 'no-unused-expressions': [\n 'error',\n {\n allowShortCircuit: true,\n allowTaggedTemplates: true,\n allowTernary: true,\n },\n ],\n 'no-unused-vars': [\n 'error',\n {\n args: 'none',\n caughtErrors: 'none',\n ignoreRestSiblings: true,\n vars: 'all',\n },\n ],\n 'no-useless-backreference': 'error',\n 'no-useless-call': 'error',\n 'no-useless-catch': 'error',\n 'no-useless-computed-key': 'error',\n 'no-useless-constructor': 'error',\n 'no-useless-rename': 'error',\n 'no-var': 'error',\n 'no-with': 'error',\n 'object-shorthand': [\n 'error',\n 'always',\n {\n avoidQuotes: true,\n ignoreConstructors: false,\n },\n ],\n 'one-var': ['error', { initialized: 'never' }],\n 'prefer-arrow-callback': [\n 'error',\n {\n allowNamedFunctions: true,\n allowUnboundThis: true,\n },\n ],\n 'prefer-const': [\n 'error',\n {\n destructuring: 'all',\n ignoreReadBeforeAssign: true,\n },\n ],\n 'prefer-exponentiation-operator': 'error',\n 'prefer-promise-reject-errors': 'error',\n 'prefer-regex-literals': ['error', { disallowRedundantWrapping: true }],\n 'prefer-rest-params': 'error',\n 'prefer-spread': 'error',\n 'prefer-template': 'error',\n 'symbol-description': 'error',\n 'unicode-bom': ['error', 'never'],\n 'use-isnan': ['error', { enforceForIndexOf: true, enforceForSwitchCase: true }],\n 'valid-typeof': ['error', { requireStringLiterals: true }],\n 'vars-on-top': 'error',\n yoda: ['error', 'never'],\n\n 'stylistic/padding-line-between-statements': [\n 'error',\n { blankLine: 'always', prev: ['const', 'let'], next: '*' },\n {\n blankLine: 'any',\n prev: ['const', 'let'],\n next: ['const', 'let'],\n },\n { blankLine: 'always', prev: '*', next: 'return' },\n ],\n\n ...overrides,\n },\n },\n ];\n}\n","import { GLOB_SRC } from '../globs';\nimport type { TypedFlatConfigItem } from '../types';\nimport { interopDefault } from '../utils';\n\nexport async function jsdoc(): Promise<TypedFlatConfigItem[]> {\n return [\n {\n files: [GLOB_SRC],\n name: '2digits:jsdoc',\n plugins: {\n jsdoc: await interopDefault(import('eslint-plugin-jsdoc')),\n },\n rules: {\n 'jsdoc/check-access': 'error',\n 'jsdoc/check-param-names': 'error',\n 'jsdoc/check-property-names': 'error',\n 'jsdoc/check-types': 'error',\n 'jsdoc/empty-tags': 'error',\n 'jsdoc/implements-on-classes': 'error',\n 'jsdoc/no-defaults': 'error',\n 'jsdoc/no-multi-asterisks': 'error',\n 'jsdoc/require-param-name': 'error',\n 'jsdoc/require-property': 'error',\n 'jsdoc/require-property-description': 'error',\n 'jsdoc/require-property-name': 'error',\n 'jsdoc/require-returns-check': 'error',\n 'jsdoc/require-returns-description': 'error',\n 'jsdoc/require-yields-check': 'error',\n },\n },\n ];\n}\n","import plugin, { configs } from 'eslint-plugin-jsonc';\nimport parser from 'jsonc-eslint-parser';\n\nimport { GLOB_JSON, GLOB_JSON5, GLOB_JSONC } from '../globs';\nimport type { TypedFlatConfigItem } from '../types';\n\nexport function jsonc(): TypedFlatConfigItem[] {\n return [\n ...configs['flat/base'].map((config) => ({ ...config, name: '2digits:jsonc/base' })),\n\n {\n name: '2digits:jsonc/json',\n files: [GLOB_JSON],\n ...SHARED_OPTIONS,\n rules: {\n ...collectRules(configs['flat/recommended-with-json']),\n },\n },\n {\n name: '2digits:jsonc/jsonc',\n files: [GLOB_JSONC],\n ...SHARED_OPTIONS,\n rules: {\n ...collectRules(configs['flat/recommended-with-jsonc']),\n },\n },\n {\n name: '2digits:jsonc/json5',\n files: [GLOB_JSON5],\n ...SHARED_OPTIONS,\n rules: {\n ...collectRules(configs['flat/recommended-with-json5']),\n },\n },\n\n {\n name: '2digits:jsonc/package.json',\n ...SHARED_OPTIONS,\n files: ['**/package.json'],\n rules: {\n 'jsonc/sort-array-values': [\n 'error',\n {\n order: { type: 'asc' },\n pathPattern: '^files$',\n },\n ],\n 'jsonc/sort-keys': [\n 'error',\n {\n order: [\n '$schema',\n 'publisher',\n 'name',\n 'displayName',\n 'version',\n 'private',\n 'description',\n 'funding',\n 'homepage',\n 'repository',\n 'bugs',\n 'categories',\n 'type',\n 'main',\n 'module',\n 'types',\n 'typesVersions',\n 'bin',\n 'files',\n 'exports',\n 'icon',\n 'unpkg',\n 'jsdelivr',\n 'sideEffects',\n 'activationEvents',\n 'contributes',\n 'scripts',\n 'keywords',\n 'author',\n 'license',\n 'workspaces',\n 'dependencies',\n 'devDependencies',\n 'peerDependencies',\n 'peerDependenciesMeta',\n 'optionalDependencies',\n 'packageManager',\n 'engines',\n 'pnpm',\n 'overrides',\n 'resolutions',\n 'husky',\n 'simple-git-hooks',\n 'lint-staged',\n 'eslintConfig',\n 'prettier',\n ],\n pathPattern: '^$',\n },\n {\n order: { type: 'asc' },\n pathPattern: '^(?:dev|peer|optional|bundled)?[Dd]ependencies(Meta)?$',\n },\n {\n order: ['types', 'import', 'module', 'require', 'default'],\n pathPattern: '^exports.*$',\n },\n ],\n },\n },\n\n {\n name: '2digits:jsonc/tsconfig.json',\n ...SHARED_OPTIONS,\n files: [\n '**/tsconfig.json',\n '**/tsconfig.*.json',\n '**/tsconfig-*.json',\n '**/jsconfig.json',\n '**/jsconfig.*.json',\n '**/jsconfig-*.json',\n ],\n rules: {\n 'jsonc/sort-keys': [\n 'error',\n {\n order: ['$schema', 'extends', 'compilerOptions', 'references', 'files', 'include', 'exclude'],\n pathPattern: '^$',\n },\n {\n order: [\n /* Projects */\n 'incremental',\n 'composite',\n 'tsBuildInfoFile',\n 'disableSourceOfProjectReferenceRedirect',\n 'disableSolutionSearching',\n 'disableReferencedProjectLoad',\n /* Language and Environment */\n 'target',\n 'lib',\n 'jsx',\n 'experimentalDecorators',\n 'emitDecoratorMetadata',\n 'jsxFactory',\n 'jsxFragmentFactory',\n 'jsxImportSource',\n 'reactNamespace',\n 'noLib',\n 'useDefineForClassFields',\n 'moduleDetection',\n /* Modules */\n 'module',\n 'rootDir',\n 'moduleResolution',\n 'baseUrl',\n 'paths',\n 'rootDirs',\n 'typeRoots',\n 'types',\n 'allowUmdGlobalAccess',\n 'moduleSuffixes',\n 'allowImportingTsExtensions',\n 'resolvePackageJsonExports',\n 'resolvePackageJsonImports',\n 'customConditions',\n 'resolveJsonModule',\n 'allowArbitraryExtensions',\n 'noResolve',\n /* JavaScript Support */\n 'allowJs',\n 'checkJs',\n 'maxNodeModuleJsDepth',\n /* Emit */\n 'declaration',\n 'declarationMap',\n 'emitDeclarationOnly',\n 'sourceMap',\n 'inlineSourceMap',\n 'outFile',\n 'outDir',\n 'removeComments',\n 'noEmit',\n 'importHelpers',\n 'importsNotUsedAsValues',\n 'downlevelIteration',\n 'sourceRoot',\n 'mapRoot',\n 'inlineSources',\n 'emitBOM',\n 'newLine',\n 'stripInternal',\n 'noEmitHelpers',\n 'noEmitOnError',\n 'preserveConstEnums',\n 'declarationDir',\n 'preserveValueImports',\n /* Interop Constraints */\n 'isolatedModules',\n 'verbatimModuleSyntax',\n 'allowSyntheticDefaultImports',\n 'esModuleInterop',\n 'preserveSymlinks',\n 'forceConsistentCasingInFileNames',\n /* Type Checking */\n 'strict',\n 'strictBindCallApply',\n 'strictFunctionTypes',\n 'strictNullChecks',\n 'strictPropertyInitialization',\n 'allowUnreachableCode',\n 'allowUnusedLabels',\n 'alwaysStrict',\n 'exactOptionalPropertyTypes',\n 'noFallthroughCasesInSwitch',\n 'noImplicitAny',\n 'noImplicitOverride',\n 'noImplicitReturns',\n 'noImplicitThis',\n 'noPropertyAccessFromIndexSignature',\n 'noUncheckedIndexedAccess',\n 'noUnusedLocals',\n 'noUnusedParameters',\n 'useUnknownInCatchVariables',\n /* Completeness */\n 'skipDefaultLibCheck',\n 'skipLibCheck',\n ],\n pathPattern: '^compilerOptions$',\n },\n ],\n },\n },\n\n ...configs['flat/prettier'].map((config) => ({ ...config, name: '2digits:jsonc/prettier' })),\n ];\n}\n\nconst SHARED_OPTIONS = {\n languageOptions: {\n parser,\n },\n plugins: {\n jsonc: plugin,\n },\n} satisfies Pick<TypedFlatConfigItem, 'plugins' | 'languageOptions'>;\n\ntype FlatConfigName = Extract<keyof typeof configs, `flat/${string}`>;\n\nfunction collectRules(config: (typeof configs)[FlatConfigName]) {\n return Object.fromEntries(config.flatMap(({ rules }) => Object.entries(rules ?? {})));\n}\n","import plugin from '@eslint/markdown';\nimport { mergeProcessors, processorPassThrough } from 'eslint-merge-processors';\n\nimport { GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN } from '../globs';\nimport type { TypedFlatConfigItem } from '../types';\n\nconst files = [GLOB_MARKDOWN];\n\nexport function markdown(): TypedFlatConfigItem[] {\n return [\n {\n name: '2digits:markdown/setup',\n plugins: {\n markdown: plugin,\n },\n },\n {\n name: '2digits:markdown/processor',\n files,\n language: 'markdown/gfm',\n ignores: [GLOB_MARKDOWN_IN_MARKDOWN],\n /**\n * `eslint-plugin-markdown` only creates virtual files for code blocks, but not the markdown file itself. We use\n * `eslint-merge-processors` to add a pass-through processor for the markdown file itself.\n */\n processor: mergeProcessors([plugin.processors.markdown, processorPassThrough]),\n },\n {\n name: '2digits:markdown/parser',\n files,\n language: 'markdown/gfm',\n languageOptions: {\n parser: parserPlain,\n },\n },\n {\n name: '2digits:markdown/rules',\n files,\n language: 'markdown/gfm',\n rules: {\n 'markdown/fenced-code-language': 'error',\n 'markdown/heading-increment': 'error',\n 'markdown/no-empty-links': 'error',\n 'markdown/no-invalid-label-refs': 'error',\n 'markdown/no-missing-label-refs': 'error',\n },\n },\n {\n name: '2digits:markdown/disables',\n files: [GLOB_MARKDOWN_CODE],\n languageOptions: {\n parserOptions: {\n ecmaFeatures: {\n impliedStrict: true,\n },\n },\n },\n rules: {\n 'no-alert': 'off',\n 'no-console': 'off',\n 'no-labels': 'off',\n 'no-lone-blocks': 'off',\n 'no-restricted-syntax': 'off',\n 'no-undef': 'off',\n 'no-unused-expressions': 'off',\n 'no-unused-labels': 'off',\n 'no-unused-vars': 'off',\n 'node/prefer-global/process': 'off',\n 'ts/consistent-type-imports': 'off',\n 'ts/explicit-function-return-type': 'off',\n 'ts/no-namespace': 'off',\n 'ts/no-redeclare': 'off',\n 'ts/no-require-imports': 'off',\n 'ts/no-unused-expressions': 'off',\n 'ts/no-unused-vars': 'off',\n 'ts/no-use-before-define': 'off',\n 'unicode-bom': 'off',\n },\n },\n ];\n}\n\nconst parserPlain = {\n meta: {\n name: 'parser-plain',\n },\n parseForESLint: (code: string) => ({\n ast: {\n body: [],\n comments: [],\n loc: { end: code.length, start: 0 },\n range: [0, code.length],\n tokens: [],\n type: 'Program',\n },\n // eslint-disable-next-line unicorn/no-null\n scopeManager: null,\n services: { isPlain: true },\n visitorKeys: {\n Program: [],\n },\n }),\n};\n","import { fixupPluginRules } from '@eslint/compat';\nimport { renamePluginsInRules } from 'eslint-flat-config-utils';\n\nimport { PluginNameMap } from '../constants';\nimport { GLOB_TS, GLOB_TSX } from '../globs';\nimport type { OptionsTypeScriptWithTypes, OptionsWithFiles, TypedFlatConfigItem } from '../types';\nimport { interopDefault } from '../utils';\n\nexport async function next(\n options: OptionsWithFiles & OptionsTypeScriptWithTypes = {},\n): Promise<TypedFlatConfigItem[]> {\n const { files = [GLOB_TS, GLOB_TSX], overrides = {}, parserOptions } = options;\n\n const [next, parser] = await Promise.all([\n interopDefault(import('@next/eslint-plugin-next')),\n interopDefault(import('@typescript-eslint/parser')),\n ]);\n\n const recommended = renamePluginsInRules(\n {\n ...next.configs.recommended.rules,\n ...next.configs['core-web-vitals'].rules,\n },\n PluginNameMap,\n );\n\n return [\n {\n name: '2digits:next/setup',\n plugins: {\n next: fixupPluginRules(next as never),\n },\n },\n {\n name: '2digits:next/rules',\n files,\n languageOptions: {\n parser,\n parserOptions: {\n ecmaFeatures: {\n jsx: true,\n },\n projectService: true,\n ...parserOptions,\n },\n sourceType: 'module',\n },\n rules: {\n ...recommended,\n\n 'next/no-html-link-for-pages': 'off',\n\n ...overrides,\n },\n },\n ];\n}\n","import { GLOB_SRC } from '../globs';\nimport { pluginNode } from '../plugins';\nimport type { TypedFlatConfigItem } from '../types';\n\nexport function node(): TypedFlatConfigItem[] {\n return [\n {\n files: [GLOB_SRC],\n name: '2digits:node',\n settings: {\n node: {\n version: '>= 22.0.0',\n },\n },\n plugins: {\n node: pluginNode,\n },\n rules: {\n 'node/handle-callback-err': ['error', '^(err|error)$'],\n 'node/no-deprecated-api': 'error',\n 'node/no-exports-assign': 'error',\n 'node/no-new-require': 'error',\n 'node/no-path-concat': 'error',\n 'node/no-unsupported-features/node-builtins': ['error', { allowExperimental: true }],\n 'node/prefer-global/buffer': 'error',\n 'node/prefer-global/process': 'error',\n 'node/prefer-global/text-encoder': 'error',\n 'node/prefer-global/url': 'error',\n 'node/prefer-global/console': 'error',\n 'node/prefer-global/url-search-params': 'error',\n 'node/prefer-global/text-decoder': 'error',\n 'node/process-exit-as-throw': 'error',\n },\n },\n ];\n}\n","import jsoncParser from 'jsonc-eslint-parser';\nimport yamlParser from 'yaml-eslint-parser';\n\nimport type { TypedFlatConfigItem } from '../types';\nimport { interopDefault } from '../utils';\n\nexport async function pnpm(): Promise<TypedFlatConfigItem[]> {\n const plugin = await interopDefault(import('eslint-plugin-pnpm'));\n\n return [\n {\n name: '2digits:pnpm/package-json',\n files: ['**/package.json'],\n languageOptions: {\n parser: jsoncParser,\n },\n plugins: {\n pnpm: plugin,\n },\n rules: {\n 'pnpm/json-enforce-catalog': 'error',\n 'pnpm/json-prefer-workspace-settings': 'error',\n 'pnpm/json-valid-catalog': 'error',\n },\n },\n {\n name: '2digits:pnpm/pnpm-workspace-yaml',\n files: ['pnpm-workspace.yaml'],\n languageOptions: {\n parser: yamlParser,\n },\n plugins: {\n pnpm: plugin,\n },\n rules: {\n 'pnpm/yaml-no-duplicate-catalog-item': 'error',\n 'pnpm/yaml-no-unused-catalog-item': 'error',\n },\n },\n ];\n}\n","import type { TypedFlatConfigItem } from '../types';\nimport { interopDefault } from '../utils';\n\nexport async function prettier(): Promise<TypedFlatConfigItem[]> {\n const [prettier, stylistic] = await Promise.all([\n interopDefault(import('eslint-config-prettier')),\n interopDefault(import('@stylistic/eslint-plugin')),\n ]);\n\n return [\n {\n name: '2digits:prettier',\n plugins: {\n stylistic,\n },\n rules: {\n ...prettier.rules,\n\n 'tailwindcss/classnames-order': 'off',\n 'stylistic/jsx-newline': ['error', { prevent: false }],\n },\n },\n ];\n}\n","import stylistic from '@stylistic/eslint-plugin';\nimport { renamePluginsInRules } from 'eslint-flat-config-utils';\n\nimport { PluginNameMap } from '../constants';\nimport { GLOB_TS, GLOB_TSX } from '../globs';\nimport type { OptionsTypeScriptWithTypes, OptionsWithReact, TypedFlatConfigItem } from '../types';\nimport { interopDefault } from '../utils';\n\nexport async function react(\n options: OptionsWithReact & OptionsTypeScriptWithTypes = {},\n): Promise<TypedFlatConfigItem[]> {\n const { files = [GLOB_TS, GLOB_TSX], overrides = {}, parserOptions, tsconfigRootDir, reactCompiler = true } = options;\n\n const [pluginReact, pluginReactHooks, parser, pluginReactCompiler] = await Promise.all([\n interopDefault(import('@eslint-react/eslint-plugin')),\n interopDefault(import('eslint-plugin-react-hooks')),\n interopDefault(import('@typescript-eslint/parser')),\n reactCompiler ? interopDefault(import('eslint-plugin-react-compiler')) : undefined,\n ]);\n\n const plugins = pluginReact.configs.all.plugins;\n\n const recommended = renamePluginsInRules(\n {\n ...pluginReactHooks.configs['recommended-latest'].rules,\n ...pluginReact.configs['recommended-type-checked'].rules,\n },\n PluginNameMap,\n );\n\n return [\n {\n name: '2digits:react/setup',\n plugins: {\n stylistic,\n 'react-dom': plugins['@eslint-react/dom'],\n 'react-web-api': plugins['@eslint-react/web-api'],\n 'react-extra': plugins['@eslint-react'],\n 'react-hooks': pluginReactHooks,\n 'react-hooks-extra': plugins['@eslint-react/hooks-extra'],\n 'react-naming-convention': plugins['@eslint-react/naming-convention'],\n ...(reactCompiler ? { 'react-compiler': pluginReactCompiler } : {}),\n },\n settings: {\n react: {\n version: 'detect',\n },\n },\n },\n {\n name: '2digits:react/rules',\n files,\n languageOptions: {\n parser,\n parserOptions: {\n ecmaFeatures: {\n jsx: true,\n },\n tsconfigRootDir,\n projectService: true,\n ...parserOptions,\n },\n sourceType: 'module',\n },\n rules: {\n ...recommended,\n\n ...(reactCompiler ? { 'react-compiler/react-compiler': 'error' } : {}),\n\n 'react-hooks-extra/no-unnecessary-use-callback': 'error',\n 'react-hooks-extra/prefer-use-state-lazy-initialization': 'error',\n 'react-hooks-extra/no-redundant-custom-hook': 'error',\n 'react-hooks-extra/no-unnecessary-use-memo': 'error',\n\n 'react-extra/no-useless-fragment': 'off',\n 'react-extra/prefer-read-only-props': 'off',\n 'react-extra/prefer-shorthand-boolean': 'error',\n 'react-extra/prefer-shorthand-fragment': 'error',\n 'react-extra/prefer-react-namespace-import': 'error',\n\n 'react-naming-convention/use-state': 'error',\n\n 'stylistic/jsx-curly-newline': 'off',\n 'stylistic/jsx-newline': ['error', { prevent: false }],\n 'stylistic/jsx-self-closing-comp': 'error',\n\n ...overrides,\n },\n },\n ];\n}\n","import pluginRegexp from 'eslint-plugin-regexp';\n\nimport { GLOB_SRC } from '../globs';\nimport type { TypedFlatConfigItem } from '../types';\n\nexport function regexp(): TypedFlatConfigItem[] {\n return [\n {\n files: [GLOB_SRC],\n name: '2digits:regexp',\n plugins: {\n regexp: pluginRegexp,\n },\n rules: {\n ...pluginRegexp.configs['flat/recommended'].rules,\n },\n },\n ];\n}\n","import { GLOB_SRC } from '../globs';\nimport { pluginSonar } from '../plugins';\nimport type { TypedFlatConfigItem } from '../types';\n\nexport function sonar(): TypedFlatConfigItem[] {\n return [\n {\n files: [GLOB_SRC],\n name: '2digits:sonar',\n plugins: {\n sonar: pluginSonar,\n },\n rules: {\n 'sonar/code-eval': 'error',\n 'sonar/cognitive-complexity': 'error',\n 'sonar/comma-or-logical-or-case': 'error',\n 'sonar/concise-regex': 'error',\n 'sonar/confidential-information-logging': 'error',\n 'sonar/constructor-for-side-effects': 'error',\n 'sonar/content-length': 'error',\n 'sonar/content-security-policy': 'error',\n 'sonar/cookie-no-httponly': 'error',\n 'sonar/cors': 'error',\n 'sonar/csrf': 'error',\n 'sonar/max-switch-cases': 'error',\n 'sonar/no-all-duplicated-branches': 'error',\n 'sonar/no-collapsible-if': 'error',\n 'sonar/no-collection-size-mischeck': 'error',\n 'sonar/no-duplicate-string': ['error', { threshold: 5 }],\n 'sonar/no-duplicated-branches': 'error',\n 'sonar/no-element-overwrite': 'error',\n 'sonar/no-empty-collection': 'error',\n 'sonar/no-extra-arguments': 'error',\n 'sonar/no-for-in-iterable': 'error',\n 'sonar/no-gratuitous-expressions': 'error',\n 'sonar/no-identical-conditions': 'error',\n 'sonar/no-identical-expressions': 'error',\n 'sonar/no-identical-functions': 'error',\n 'sonar/no-ignored-return': 'error',\n 'sonar/no-inverted-boolean-check': 'error',\n 'sonar/no-nested-switch': 'error',\n 'sonar/no-nested-template-literals': 'error',\n 'sonar/no-one-iteration-loop': 'error',\n 'sonar/no-redundant-boolean': 'error',\n 'sonar/no-same-line-conditional': 'error',\n 'sonar/no-small-switch': 'error',\n 'sonar/no-unused-collection': 'error',\n 'sonar/no-use-of-empty-return-value': 'error',\n 'sonar/no-useless-catch': 'error',\n 'sonar/non-existent-operator': 'error',\n 'sonar/prefer-immediate-return': 'error',\n 'sonar/prefer-object-literal': 'error',\n 'sonar/prefer-single-boolean-return': 'error',\n 'sonar/prefer-while': 'error',\n\n 'sonar/elseif-without-else': 'off',\n 'sonar/no-redundant-jump': 'off',\n },\n },\n ];\n}\n","import { fixupPluginRules } from '@eslint/compat';\nimport type { FlatConfig } from '@typescript-eslint/utils/ts-eslint';\n\nimport { GLOB_STORIES } from '../globs';\nimport type { OptionsTypeScriptWithTypes, OptionsWithStorybook, TypedFlatConfigItem } from '../types';\nimport { interopDefault } from '../utils';\n\nexport async function storybook(\n options: OptionsWithStorybook & OptionsTypeScriptWithTypes = {},\n): Promise<TypedFlatConfigItem[]> {\n const { files = [GLOB_STORIES], overrides = {}, parserOptions, storybookDirectory = '.storybook' } = options;\n\n const [storybook, parser] = await Promise.all([\n interopDefault(import('eslint-plugin-storybook')),\n interopDefault(import('@typescript-eslint/parser')),\n ]);\n\n const languageOptions = {\n parser,\n parserOptions: {\n ecmaFeatures: {\n jsx: true,\n },\n projectService: true,\n ...parserOptions,\n },\n sourceType: 'module',\n } satisfies FlatConfig.LanguageOptions;\n\n return [\n {\n name: '2digits:storybook/setup',\n plugins: {\n storybook: fixupPluginRules(storybook as never),\n },\n },\n {\n name: '2digits:storybook/rules',\n files,\n languageOptions,\n rules: {\n 'storybook/await-interactions': 'error',\n 'storybook/context-in-play-function': 'error',\n 'storybook/csf-component': 'error',\n 'storybook/default-exports': 'error',\n 'storybook/hierarchy-separator': 'error',\n 'storybook/meta-inline-properties': 'error',\n 'storybook/no-redundant-story-name': 'error',\n 'storybook/no-stories-of': 'error',\n 'storybook/no-title-property-in-meta': 'error',\n 'storybook/no-uninstalled-addons': 'error',\n 'storybook/prefer-pascal-case': 'error',\n 'storybook/story-exports': 'error',\n 'storybook/use-storybook-expect': 'error',\n 'storybook/use-storybook-testing-library': 'error',\n 'storybook/meta-satisfies-type': 'error',\n\n ...overrides,\n },\n },\n {\n name: '2digits:storybook/disables',\n files,\n rules: {\n 'react-hooks/rules-of-hooks': 'off',\n 'react/display-name': 'off',\n 'sonar/no-duplicate-string': 'off',\n },\n },\n {\n name: '2digits:storybook/config',\n files: [`${storybookDirectory}/main.@(js|cjs|mjs|ts)`],\n languageOptions,\n rules: {\n 'storybook/no-uninstalled-addons': 'error',\n },\n },\n ];\n}\n","import { findUp } from 'find-up';\n\nimport { GLOB_SRC } from '../globs';\nimport type { OptionsOverrides, TypedFlatConfigItem } from '../types';\nimport { interopDefault } from '../utils';\n\nexport async function tailwind(options: OptionsOverrides = {}): Promise<TypedFlatConfigItem[]> {\n const { overrides = {} } = options;\n\n const [tailwindcss, { tailwindFunctions }, config] = await Promise.all([\n interopDefault(import('eslint-plugin-tailwindcss')),\n interopDefault(import('@2digits/constants')),\n findUp(['tailwind.config.ts', 'tailwind.config.js']),\n ]);\n\n return [\n {\n files: [GLOB_SRC],\n name: '2digits:tailwind',\n plugins: {\n tailwindcss,\n },\n settings: {\n tailwindcss: {\n callees: tailwindFunctions,\n config,\n },\n },\n rules: {\n ...tailwindcss.configs.recommended.rules,\n\n ...overrides,\n },\n },\n ];\n}\n","import { renamePluginsInRules } from 'eslint-flat-config-utils';\n\nimport { PluginNameMap } from '../constants';\nimport { GLOB_SRC } from '../globs';\nimport type { OptionsOverrides, TypedFlatConfigItem } from '../types';\nimport { interopDefault } from '../utils';\n\nexport async function tanstack(options: OptionsOverrides = {}): Promise<TypedFlatConfigItem[]> {\n const { overrides = {} } = options;\n\n const tanstack = await interopDefault(import('@tanstack/eslint-plugin-query'));\n\n const recommended = renamePluginsInRules(tanstack.configs['flat/recommended'].at(0)?.rules ?? {}, PluginNameMap);\n\n return [\n {\n files: [GLOB_SRC],\n name: '2digits:tanstack',\n plugins: { tanstack },\n rules: {\n ...recommended,\n\n ...overrides,\n },\n },\n ];\n}\n","import { GLOB_SRC } from '../globs';\nimport type { OptionsOverrides, TypedFlatConfigItem } from '../types';\nimport { interopDefault } from '../utils';\n\nexport async function turbo(options: OptionsOverrides = {}): Promise<TypedFlatConfigItem[]> {\n const { overrides = {} } = options;\n\n const turbo = await interopDefault(import('eslint-plugin-turbo'));\n\n return [\n {\n files: [GLOB_SRC],\n name: '2digits:turbo',\n plugins: {\n turbo,\n },\n rules: {\n 'turbo/no-undeclared-env-vars': 'error',\n\n ...overrides,\n },\n },\n ];\n}\n","import { renamePluginsInConfigs } from 'eslint-flat-config-utils';\n\nimport { PluginNameMap } from '../constants';\nimport { GLOB_MARKDOWN_CODE, GLOB_SRC } from '../globs';\nimport type { OptionsTypeScriptWithTypes, TypedFlatConfigItem } from '../types';\nimport { interopDefault } from '../utils';\n\nexport async function typescript(options: OptionsTypeScriptWithTypes = {}): Promise<TypedFlatConfigItem[]> {\n const { overrides = {}, parserOptions = {} } = options;\n\n const [{ plugin, configs, parser }, twoDigits] = await Promise.all([\n interopDefault(import('typescript-eslint')),\n interopDefault(import('@2digits/eslint-plugin')),\n ]);\n\n const strictConfig = renamePluginsInConfigs(configs.strictTypeChecked as never, PluginNameMap);\n\n const rules = Object.fromEntries(strictConfig.flatMap(({ rules }) => Object.entries(rules ?? {})));\n\n return [\n {\n name: '2digits:typescript/setup',\n plugins: {\n ts: plugin,\n '@2digits': twoDigits,\n },\n },\n {\n name: '2digits:typescript/rules',\n files: [GLOB_SRC],\n ignores: [GLOB_MARKDOWN_CODE],\n languageOptions: {\n parser,\n parserOptions: {\n tsconfigRootDir: process.cwd(),\n projectService: true,\n warnOnUnsupportedTypeScriptVersion: false,\n ...parserOptions,\n },\n sourceType: 'module',\n },\n rules: {\n ...rules,\n 'ts/restrict-template-expressions': ['error', { allowNumber: true }],\n 'ts/ban-ts-comment': ['error', { 'ts-ignore': 'allow-with-description' }],\n 'ts/consistent-type-exports': ['error'],\n 'ts/consistent-type-imports': [\n 'error',\n {\n prefer: 'type-imports',\n disallowTypeAnnotations: false,\n fixStyle: 'inline-type-imports',\n },\n ],\n 'ts/no-empty-object-type': ['error', { allowInterfaces: 'with-single-extends', allowObjectTypes: 'never' }],\n 'ts/no-explicit-any': ['error'],\n 'ts/no-import-type-side-effects': ['error'],\n 'ts/no-misused-promises': 'off',\n 'ts/no-confusing-void-expression': 'off',\n 'ts/no-unused-vars': [\n 'error',\n {\n ignoreRestSiblings: true,\n argsIgnorePattern: '^_',\n varsIgnorePattern: '^_',\n },\n ],\n 'ts/unbound-method': 'off',\n\n ...twoDigits.configs.recommended.rules,\n\n ...overrides,\n },\n },\n {\n name: '2digits:typescript/disables/dts',\n files: ['**/*.d.ts'],\n ignores: [GLOB_MARKDOWN_CODE],\n rules: {\n 'unicorn/no-abusive-eslint-disable': 'off',\n 'no-duplicate-imports': 'off',\n 'no-restricted-syntax': 'off',\n 'ts/no-unused-vars': 'off',\n },\n },\n {\n name: '2digits:typescript/disables/test',\n files: ['**/*.{test,spec}.ts?(x)'],\n ignores: [GLOB_MARKDOWN_CODE],\n rules: {\n 'no-unused-expressions': 'off',\n },\n },\n {\n name: '2digits:typescript/disables/cjs',\n files: ['**/*.js', '**/*.cjs', '**/*.cts'],\n ignores: [GLOB_MARKDOWN_CODE],\n rules: {\n 'ts/no-require-imports': 'off',\n 'ts/no-var-requires': 'off',\n },\n },\n ];\n}\n","import { GLOB_SRC } from '../globs';\nimport { pluginUnicorn } from '../plugins';\nimport type { TypedFlatConfigItem } from '../types';\n\nexport function unicorn(): TypedFlatConfigItem[] {\n return [\n {\n files: [GLOB_SRC],\n name: '2digits:unicorn',\n plugins: {\n unicorn: pluginUnicorn,\n },\n rules: {\n ...pluginUnicorn.configs.recommended.rules,\n\n 'unicorn/filename-case': ['off'],\n 'unicorn/prefer-module': ['off'],\n 'unicorn/prevent-abbreviations': ['off'],\n 'unicorn/prefer-ternary': ['error', 'only-single-line'],\n 'unicorn/no-useless-undefined': [\n 'error',\n {\n checkArguments: false,\n checkArrowFunctionBody: false,\n },\n ],\n 'unicorn/prefer-top-level-await': ['off'],\n },\n },\n ];\n}\n","import yml from 'eslint-plugin-yml';\nimport parser from 'yaml-eslint-parser';\n\nimport { GLOB_YAML } from '../globs';\nimport type { TypedFlatConfigItem } from '../types';\n\nexport function yaml(): TypedFlatConfigItem[] {\n return [\n {\n name: '2digits:yaml/setup',\n plugins: {\n yml,\n },\n },\n\n {\n name: '2digits:yaml/base',\n ...SHARED_OPTIONS,\n rules: {\n 'no-irregular-whitespace': 'off',\n 'no-unused-vars': 'off',\n 'spaced-comment': 'off',\n },\n },\n\n {\n name: '2digits:yaml/recommended',\n ...SHARED_OPTIONS,\n rules: {\n 'yml/no-empty-document': 'error',\n 'yml/no-empty-key': 'error',\n 'yml/no-empty-mapping-value': 'error',\n 'yml/no-empty-sequence-entry': 'error',\n 'yml/no-irregular-whitespace': 'error',\n 'yml/no-tab-indent': 'error',\n 'yml/vue-custom-block/no-parsing-error': 'error',\n },\n },\n\n {\n name: '2digits:yaml/standard',\n ...SHARED_OPTIONS,\n rules: {\n 'yml/block-mapping': 'error',\n 'yml/block-sequence': 'error',\n 'yml/plain-scalar': 'error',\n 'yml/spaced-comment': 'error',\n },\n },\n\n {\n name: '2digits:yaml/pnpm-workspace',\n ...SHARED_OPTIONS,\n files: ['pnpm-workspace.yaml'],\n rules: {\n 'yml/sort-keys': [\n 'error',\n {\n order: [\n 'packages',\n 'overrides',\n 'patchedDependencies',\n 'hoistPattern',\n 'catalog',\n 'catalogs',\n\n 'allowedDeprecatedVersions',\n 'allowNonAppliedPatches',\n 'configDependencies',\n 'ignoredBuiltDependencies',\n 'ignoredOptionalDependencies',\n 'neverBuiltDependencies',\n 'onlyBuiltDependencies',\n 'onlyBuiltDependenciesFile',\n 'packageExtensions',\n 'peerDependencyRules',\n 'supportedArchitectures',\n ],\n pathPattern: '^$',\n },\n {\n order: { type: 'asc' },\n pathPattern: '.*',\n },\n ],\n },\n },\n\n {\n name: '2digits:yaml/prettier',\n ...SHARED_OPTIONS,\n rules: {\n 'yml/block-mapping-colon-indicator-newline': 'off',\n 'yml/block-mapping-question-indicator-newline': 'off',\n 'yml/block-sequence-hyphen-indicator-newline': 'off',\n 'yml/flow-mapping-curly-newline': 'off',\n 'yml/flow-mapping-curly-spacing': 'off',\n 'yml/flow-sequence-bracket-newline': 'off',\n 'yml/flow-sequence-bracket-spacing': 'off',\n 'yml/indent': 'off',\n 'yml/key-spacing': 'off',\n 'yml/no-multiple-empty-lines': 'off',\n 'yml/no-trailing-zeros': 'off',\n 'yml/quotes': 'off',\n },\n },\n ];\n}\n\nconst SHARED_OPTIONS = {\n files: [GLOB_YAML],\n languageOptions: {\n parser,\n },\n} satisfies Pick<TypedFlatConfigItem, 'languageOptions' | 'files'>;\n","import { FlatConfigComposer } from 'eslint-flat-config-utils';\nimport { findUp } from 'find-up';\nimport { isPackageExists } from 'local-pkg';\n\nimport {\n antfu,\n boolean,\n comments,\n css,\n drizzle,\n graphql,\n ignores,\n javascript,\n jsdoc,\n jsonc,\n markdown,\n next,\n node,\n pnpm,\n prettier,\n react,\n regexp,\n sonar,\n storybook,\n tailwind,\n tanstack,\n turbo,\n typescript,\n unicorn,\n yaml,\n} from './configs';\nimport { PluginNameMap } from './constants';\nimport type {\n ConfigNames,\n OptionsOverrides,\n OptionsTypeScriptWithTypes,\n OptionsWithDrizzle,\n OptionsWithFiles,\n OptionsWithIgnores,\n OptionsWithReact,\n OptionsWithStorybook,\n TypedFlatConfigItem,\n} from './types';\n\ntype SharedOptions<T = unknown> = T & {\n enable?: boolean;\n};\n\ninterface ESLint2DigitsOptions {\n ignores?: OptionsWithIgnores;\n turbo?: SharedOptions<OptionsOverrides> | boolean;\n js?: OptionsOverrides;\n ts?: SharedOptions<OptionsTypeScriptWithTypes> | boolean;\n pnpm?: SharedOptions | boolean;\n graphql?: SharedOptions<OptionsWithFiles> | boolean;\n react?: SharedOptions<OptionsWithReact> | boolean;\n next?: SharedOptions<OptionsWithFiles> | boolean;\n tailwind?: SharedOptions<OptionsOverrides> | boolean;\n storybook?: SharedOptions<OptionsWithStorybook> | boolean;\n tanstack?: SharedOptions<OptionsOverrides> | boolean;\n drizzle?: SharedOptions<OptionsWithDrizzle> | boolean;\n}\n\nfunction enabled<T extends SharedOptions>(options: T | boolean | undefined, defaults?: boolean): options is T {\n if (typeof options === 'boolean') {\n return options;\n }\n\n return options?.enable ?? defaults ?? false;\n}\n\nfunction config<T>(options: SharedOptions<T> | undefined | boolean): T {\n if (typeof options === 'boolean' || options === undefined) {\n return {} as T;\n }\n\n const { enable, ...rest } = options;\n\n return rest as T;\n}\n\nexport async function twoDigits(\n options: ESLint2DigitsOptions = {},\n ...userConfig: TypedFlatConfigItem[]\n): Promise<TypedFlatConfigItem[]> {\n let pnpmPromise;\n\n if (options.pnpm === undefined) {\n pnpmPromise = findUp('pnpm-workspace.yaml');\n }\n\n let composer = new FlatConfigComposer<TypedFlatConfigItem, ConfigNames>(\n ignores(options.ignores),\n javascript(options.js),\n boolean(),\n node(),\n comments(),\n jsdoc(),\n unicorn(),\n sonar(),\n regexp(),\n antfu(),\n jsonc(),\n css(),\n yaml(),\n markdown(),\n );\n\n if (enabled(options.turbo, isPackageExists('turbo'))) {\n composer = composer.append(turbo(config(options.turbo)));\n }\n\n const { overrides, ...typescriptOptions } = config(options.ts);\n\n if (enabled(options.ts, isPackageExists('typescript'))) {\n composer = composer.append(typescript(config(options.ts)));\n }\n\n if (enabled(options.react, isPackageExists('react'))) {\n composer = composer.append(\n react({\n ...config(options.react),\n ...typescriptOptions,\n }),\n );\n }\n\n if (enabled(options.next, isPackageExists('next'))) {\n composer = composer.append(\n next({\n ...config(options.next),\n ...typescriptOptions,\n }),\n );\n }\n\n if (enabled(options.storybook, isPackageExists('storybook'))) {\n composer = composer.append(\n storybook({\n ...config(options.storybook),\n ...typescriptOptions,\n }),\n );\n }\n\n if (enabled(options.tailwind, isPackageExists('tailwindcss'))) {\n composer = composer.append(tailwind(config(options.tailwind)));\n }\n\n if (\n enabled(\n options.tanstack,\n isPackageExists('react-query')\n || isPackageExists('@tanstack/react-query')\n || isPackageExists('@tanstack/react-query-devtools'),\n )\n ) {\n composer = composer.append(tanstack(config(options.tanstack)));\n }\n\n if (enabled(options.drizzle, isPackageExists('drizzle-kit') || isPackageExists('drizzle-orm'))) {\n composer = composer.append(drizzle(config(options.drizzle)));\n }\n\n if (enabled(options.graphql, isPackageExists('graphql'))) {\n composer = composer.append(graphql(config(options.graphql)));\n }\n\n if (enabled(options.pnpm, !!(await pnpmPromise))) {\n composer = composer.append(pnpm());\n }\n\n composer = composer.append(...userConfig);\n\n if (isPackageExists('prettier')) {\n composer = composer.append(prettier());\n }\n\n return composer.renamePlugins(PluginNameMap).toConfigs();\n}\n"]}
package/dist/index.js DELETED
@@ -1,2 +0,0 @@
1
- import ye from'eslint-plugin-antfu';import q from'eslint-plugin-de-morgan';import be from'@eslint-community/eslint-plugin-eslint-comments';import Oe from'@eslint-community/eslint-plugin-eslint-comments/configs';import {renamePluginsInRules,composer,renamePluginsInConfigs,FlatConfigComposer}from'eslint-flat-config-utils';import M from'@eslint/css';import {tailwindSyntax}from'@eslint/css/syntax';import {fixupPluginRules}from'@eslint/compat';import {loadConfig}from'graphql-config';import je from'@eslint/js';import Se from'@stylistic/eslint-plugin';import j from'globals';import Ie,{configs}from'eslint-plugin-jsonc';import Fe from'jsonc-eslint-parser';import X from'@eslint/markdown';import {mergeProcessors,processorPassThrough}from'eslint-merge-processors';import F from'eslint-plugin-unicorn';import Z from'eslint-plugin-n';import ee from'eslint-plugin-sonarjs';import Ge from'yaml-eslint-parser';import se from'eslint-plugin-regexp';import {findUp}from'find-up';import Ae from'eslint-plugin-yml';import {isPackageExists}from'local-pkg';var i="**/*.?([cm])[jt]s?(x)",v="**/*.?([cm])ts",T="**/*.?([cm])tsx",P="**/*.stories.tsx",_="**/*.json",D="**/*.json5",L="**/*.jsonc",R="**/*.css",B="**/*.y?(a)ml",C="**/*.md",G="**/*.md/*.md",O=`${C}/${i}`,z=["**/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"];function N(){return [{files:[i],name:"2digits:antfu",plugins:{antfu:ye},rules:{"antfu/if-newline":"error","antfu/top-level-function":"error"}}]}function W(){return [{files:[i],name:"2digits:boolean",plugins:{boolean:q},rules:{...q.configs.recommended.rules}}]}var c={"@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"};var ke=renamePluginsInRules(Oe.recommended.rules,c);function E(){return [{files:[i],name:"2digits:comments",plugins:{comments:be},rules:{...ke,"comments/no-unused-disable":"error","comments/disable-enable-pair":["error",{allowWholeFile:true}]}}]}function A(){return [{name:"2digits:css",files:[R],language:"css/css",plugins:{css:M},languageOptions:{tolerant:true,customSyntax:tailwindSyntax},rules:{...M.configs.recommended.rules}}]}async function t(e){let o=await e;return o.default||o}async function U(e={}){let{overrides:o={},drizzleObjectName:a=["drizzle","db"]}=e,r=await t(import('eslint-plugin-drizzle'));return [{files:[i],name:"2digits:drizzle",plugins:{drizzle:fixupPluginRules(r)},rules:{"drizzle/enforce-update-with-where":["error",{drizzleObjectName:a}],"drizzle/enforce-delete-with-where":["error",{drizzleObjectName:a}],...o}}]}async function $(e={}){let{overrides:o={},files:a=["**/*.graphql","**/*.gql"]}=e,[r,l]=await Promise.all([t(import('@graphql-eslint/eslint-plugin')),loadConfig({throwOnEmpty:false,throwOnMissing:false}).then(y=>y?.getDefault().schema)]),p=r.configs["flat/operations-recommended"].rules,m={};if(l)m=p;else for(let y of Object.keys(p)){let b=y.replace("@graphql-eslint/","");b in r.rules&&(r.rules[b].meta.docs?.requiresSchema||r.rules[b].meta.docs?.requiresSiblings)||(m[y]=p[y]);}let g=renamePluginsInRules(m,c);return [{name:"2digits:graphql",plugins:{gql:r},languageOptions:{parser:r.parser},files:a,rules:{...g,"gql/naming-convention":["error",{allowLeadingUnderscore:true}],...o}}]}async function J(e={}){let{gitIgnore:o,ignores:a=[]}=e;return composer({ignores:[z,a].flat(),name:"2digits:ignores"},t(import('eslint-config-flat-gitignore')).then(r=>r({strict:false,...o,name:"2digits:gitignore"})))}function K(e={}){let{overrides:o={}}=e;return [{files:[i],name:"2digits:javascript",plugins:{stylistic:Se},languageOptions:{ecmaVersion:2022,globals:{...j.browser,...j.es2021,...j.node,document:"readonly",navigator:"readonly",window:"readonly"},parserOptions:{ecmaFeatures:{jsx:true},ecmaVersion:2022,sourceType:"module"},sourceType:"module"},linterOptions:{reportUnusedDisableDirectives:true},rules:{...je.configs.recommended.rules,"accessor-pairs":["error",{enforceForClassMembers:true,setWithoutGet:true}],"array-callback-return":"error","block-scoped-var":"error","constructor-super":"error","default-case-last":"error","dot-notation":["error",{allowKeywords:true}],eqeqeq:["error","smart"],"new-cap":["error",{capIsNew:false,newIsCap:true,properties:true}],"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:true}],"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:false,allowSwitch:false}],"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:false}],"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:true}],"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:false}],"no-unreachable":"error","no-unreachable-loop":"error","no-unsafe-finally":"error","no-unsafe-negation":"error","no-unused-expressions":["error",{allowShortCircuit:true,allowTaggedTemplates:true,allowTernary:true}],"no-unused-vars":["error",{args:"none",caughtErrors:"none",ignoreRestSiblings:true,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:true,ignoreConstructors:false}],"one-var":["error",{initialized:"never"}],"prefer-arrow-callback":["error",{allowNamedFunctions:true,allowUnboundThis:true}],"prefer-const":["error",{destructuring:"all",ignoreReadBeforeAssign:true}],"prefer-exponentiation-operator":"error","prefer-promise-reject-errors":"error","prefer-regex-literals":["error",{disallowRedundantWrapping:true}],"prefer-rest-params":"error","prefer-spread":"error","prefer-template":"error","symbol-description":"error","unicode-bom":["error","never"],"use-isnan":["error",{enforceForIndexOf:true,enforceForSwitchCase:true}],"valid-typeof":["error",{requireStringLiterals:true}],"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"}],...o}}]}async function V(){return [{files:[i],name:"2digits:jsdoc",plugins:{jsdoc:await t(import('eslint-plugin-jsdoc'))},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 H(){return [...configs["flat/base"].map(e=>({...e,name:"2digits:jsonc/base"})),{name:"2digits:jsonc/json",files:[_],...x,rules:{...S(configs["flat/recommended-with-json"])}},{name:"2digits:jsonc/jsonc",files:[L],...x,rules:{...S(configs["flat/recommended-with-jsonc"])}},{name:"2digits:jsonc/json5",files:[D],...x,rules:{...S(configs["flat/recommended-with-json5"])}},{name:"2digits:jsonc/package.json",...x,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"],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",...x,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"],pathPattern:"^compilerOptions$"}]}},...configs["flat/prettier"].map(e=>({...e,name:"2digits:jsonc/prettier"}))]}var x={languageOptions:{parser:Fe},plugins:{jsonc:Ie}};function S(e){return Object.fromEntries(e.flatMap(({rules:o})=>Object.entries(o??{})))}var I=[C];function Y(){return [{name:"2digits:markdown/setup",plugins:{markdown:X}},{name:"2digits:markdown/processor",files:I,language:"markdown/gfm",ignores:[G],processor:mergeProcessors([X.processors.markdown,processorPassThrough])},{name:"2digits:markdown/parser",files:I,language:"markdown/gfm",languageOptions:{parser:De}},{name:"2digits:markdown/rules",files:I,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:[O],languageOptions:{parserOptions:{ecmaFeatures:{impliedStrict:true}}},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"}}]}var De={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:true},visitorKeys:{Program:[]}})};async function Q(e={}){let{files:o=[v,T],overrides:a={},parserOptions:r}=e,[l,p]=await Promise.all([t(import('@next/eslint-plugin-next')),t(import('@typescript-eslint/parser'))]),m=renamePluginsInRules({...l.configs.recommended.rules,...l.configs["core-web-vitals"].rules},c);return [{name:"2digits:next/setup",plugins:{next:fixupPluginRules(l)}},{name:"2digits:next/rules",files:o,languageOptions:{parser:p,parserOptions:{ecmaFeatures:{jsx:true},projectService:true,...r},sourceType:"module"},rules:{...m,"next/no-html-link-for-pages":"off",...a}}]}function re(){return [{files:[i],name:"2digits:node",settings:{node:{version:">= 22.0.0"}},plugins:{node:Z},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:true}],"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 oe(){let e=await t(import('eslint-plugin-pnpm'));return [{name:"2digits:pnpm/package-json",files:["**/package.json"],languageOptions:{parser:Fe},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:Ge},plugins:{pnpm:e},rules:{"pnpm/yaml-no-duplicate-catalog-item":"error","pnpm/yaml-no-unused-catalog-item":"error"}}]}async function te(){let[e,o]=await Promise.all([t(import('eslint-config-prettier')),t(import('@stylistic/eslint-plugin'))]);return [{name:"2digits:prettier",plugins:{stylistic:o},rules:{...e.rules,"tailwindcss/classnames-order":"off","stylistic/jsx-newline":["error",{prevent:false}]}}]}async function ne(e={}){let{files:o=[v,T],overrides:a={},parserOptions:r,tsconfigRootDir:l,reactCompiler:p=true}=e,[m,g,y,b]=await Promise.all([t(import('@eslint-react/eslint-plugin')),t(import('eslint-plugin-react-hooks')),t(import('@typescript-eslint/parser')),p?t(import('eslint-plugin-react-compiler')):void 0]),h=m.configs.all.plugins,ge=renamePluginsInRules({...g.configs["recommended-latest"].rules,...m.configs["recommended-type-checked"].rules},c);return [{name:"2digits:react/setup",plugins:{stylistic:Se,"react-dom":h["@eslint-react/dom"],"react-web-api":h["@eslint-react/web-api"],"react-extra":h["@eslint-react"],"react-hooks":g,"react-hooks-extra":h["@eslint-react/hooks-extra"],"react-naming-convention":h["@eslint-react/naming-convention"],...p?{"react-compiler":b}:{}},settings:{react:{version:"detect"}}},{name:"2digits:react/rules",files:o,languageOptions:{parser:y,parserOptions:{ecmaFeatures:{jsx:true},tsconfigRootDir:l,projectService:true,...r},sourceType:"module"},rules:{...ge,...p?{"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:false}],"stylistic/jsx-self-closing-comp":"error",...a}}]}function ie(){return [{files:[i],name:"2digits:regexp",plugins:{regexp:se},rules:{...se.configs["flat/recommended"].rules}}]}function ae(){return [{files:[i],name:"2digits:sonar",plugins:{sonar:ee},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 pe(e={}){let{files:o=[P],overrides:a={},parserOptions:r,storybookDirectory:l=".storybook"}=e,[p,m]=await Promise.all([t(import('eslint-plugin-storybook')),t(import('@typescript-eslint/parser'))]),g={parser:m,parserOptions:{ecmaFeatures:{jsx:true},projectService:true,...r},sourceType:"module"};return [{name:"2digits:storybook/setup",plugins:{storybook:fixupPluginRules(p)}},{name:"2digits:storybook/rules",files:o,languageOptions:g,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",...a}},{name:"2digits:storybook/disables",files:o,rules:{"react-hooks/rules-of-hooks":"off","react/display-name":"off","sonar/no-duplicate-string":"off"}},{name:"2digits:storybook/config",files:[`${l}/main.@(js|cjs|mjs|ts)`],languageOptions:g,rules:{"storybook/no-uninstalled-addons":"error"}}]}async function le(e={}){let{overrides:o={}}=e,[a,{tailwindFunctions:r},l]=await Promise.all([t(import('eslint-plugin-tailwindcss')),t(import('@2digits/constants')),findUp(["tailwind.config.ts","tailwind.config.js"])]);return [{files:[i],name:"2digits:tailwind",plugins:{tailwindcss:a},settings:{tailwindcss:{callees:r,config:l}},rules:{...a.configs.recommended.rules,...o}}]}async function ce(e={}){let{overrides:o={}}=e,a=await t(import('@tanstack/eslint-plugin-query')),r=renamePluginsInRules(a.configs["flat/recommended"].at(0)?.rules??{},c);return [{files:[i],name:"2digits:tanstack",plugins:{tanstack:a},rules:{...r,...o}}]}async function me(e={}){let{overrides:o={}}=e,a=await t(import('eslint-plugin-turbo'));return [{files:[i],name:"2digits:turbo",plugins:{turbo:a},rules:{"turbo/no-undeclared-env-vars":"error",...o}}]}async function de(e={}){let{overrides:o={},parserOptions:a={}}=e,[{plugin:r,configs:l,parser:p},m]=await Promise.all([t(import('typescript-eslint')),t(import('@2digits/eslint-plugin'))]),g=renamePluginsInConfigs(l.strictTypeChecked,c),y=Object.fromEntries(g.flatMap(({rules:b})=>Object.entries(b??{})));return [{name:"2digits:typescript/setup",plugins:{ts:r,"@2digits":m}},{name:"2digits:typescript/rules",files:[i],ignores:[O],languageOptions:{parser:p,parserOptions:{tsconfigRootDir:process.cwd(),projectService:true,warnOnUnsupportedTypeScriptVersion:false,...a},sourceType:"module"},rules:{...y,"ts/restrict-template-expressions":["error",{allowNumber:true}],"ts/ban-ts-comment":["error",{"ts-ignore":"allow-with-description"}],"ts/consistent-type-exports":["error"],"ts/consistent-type-imports":["error",{prefer:"type-imports",disallowTypeAnnotations:false,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:true,argsIgnorePattern:"^_",varsIgnorePattern:"^_"}],"ts/unbound-method":"off",...m.configs.recommended.rules,...o}},{name:"2digits:typescript/disables/dts",files:["**/*.d.ts"],ignores:[O],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:[O],rules:{"no-unused-expressions":"off"}},{name:"2digits:typescript/disables/cjs",files:["**/*.js","**/*.cjs","**/*.cts"],ignores:[O],rules:{"ts/no-require-imports":"off","ts/no-var-requires":"off"}}]}function fe(){return [{files:[i],name:"2digits:unicorn",plugins:{unicorn:F},rules:{...F.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:false,checkArrowFunctionBody:false}],"unicorn/prefer-top-level-await":["off"]}}]}function ue(){return [{name:"2digits:yaml/setup",plugins:{yml:Ae}},{name:"2digits:yaml/base",...w,rules:{"no-irregular-whitespace":"off","no-unused-vars":"off","spaced-comment":"off"}},{name:"2digits:yaml/recommended",...w,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",...w,rules:{"yml/block-mapping":"error","yml/block-sequence":"error","yml/plain-scalar":"error","yml/spaced-comment":"error"}},{name:"2digits:yaml/pnpm-workspace",...w,files:["pnpm-workspace.yaml"],rules:{"yml/sort-keys":["error",{order:["packages","overrides","patchedDependencies","hoistPattern","catalog","catalogs","allowedDeprecatedVersions","allowNonAppliedPatches","configDependencies","ignoredBuiltDependencies","ignoredOptionalDependencies","neverBuiltDependencies","onlyBuiltDependencies","onlyBuiltDependenciesFile","packageExtensions","peerDependencyRules","supportedArchitectures"],pathPattern:"^$"},{order:{type:"asc"},pathPattern:".*"}]}},{name:"2digits:yaml/prettier",...w,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"}}]}var w={files:[B],languageOptions:{parser:Ge}};function f(e,o){return typeof e=="boolean"?e:e?.enable??o??false}function u(e){if(typeof e=="boolean"||e===void 0)return {};let{enable:o,...a}=e;return a}async function Ke(e={},...o){let a;e.pnpm===void 0&&(a=findUp("pnpm-workspace.yaml"));let r=new FlatConfigComposer(J(e.ignores),K(e.js),W(),re(),E(),V(),fe(),ae(),ie(),N(),H(),A(),ue(),Y());f(e.turbo,isPackageExists("turbo"))&&(r=r.append(me(u(e.turbo))));let{overrides:l,...p}=u(e.ts);return f(e.ts,isPackageExists("typescript"))&&(r=r.append(de(u(e.ts)))),f(e.react,isPackageExists("react"))&&(r=r.append(ne({...u(e.react),...p}))),f(e.next,isPackageExists("next"))&&(r=r.append(Q({...u(e.next),...p}))),f(e.storybook,isPackageExists("storybook"))&&(r=r.append(pe({...u(e.storybook),...p}))),f(e.tailwind,isPackageExists("tailwindcss"))&&(r=r.append(le(u(e.tailwind)))),f(e.tanstack,isPackageExists("react-query")||isPackageExists("@tanstack/react-query")||isPackageExists("@tanstack/react-query-devtools"))&&(r=r.append(ce(u(e.tanstack)))),f(e.drizzle,isPackageExists("drizzle-kit")||isPackageExists("drizzle-orm"))&&(r=r.append(U(u(e.drizzle)))),f(e.graphql,isPackageExists("graphql"))&&(r=r.append($(u(e.graphql)))),f(e.pnpm,!!await a)&&(r=r.append(oe())),r=r.append(...o),isPackageExists("prettier")&&(r=r.append(te())),r.renamePlugins(c).toConfigs()}export{N as antfu,W as boolean,E as comments,A as css,Ke as default,U as drizzle,$ as graphql,J as ignores,K as javascript,V as jsdoc,H as jsonc,Y as markdown,Q as next,re as node,oe as pnpm,te as prettier,ne as react,ie as regexp,ae as sonar,pe as storybook,le as tailwind,ce as tanstack,me as turbo,Ke as twoDigits,de as typescript,fe as unicorn,ue as yaml};//# sourceMappingURL=index.js.map
2
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/globs.ts","../src/configs/antfu.ts","../src/configs/boolean.ts","../src/constants.ts","../src/configs/comments.ts","../src/configs/css.ts","../src/utils.ts","../src/configs/drizzle.ts","../src/configs/graphql.ts","../src/configs/ignores.ts","../src/configs/javascript.ts","../src/configs/jsdoc.ts","../src/configs/jsonc.ts","../src/configs/markdown.ts","../src/configs/next.ts","../src/configs/node.ts","../src/configs/pnpm.ts","../src/configs/prettier.ts","../src/configs/react.ts","../src/configs/regexp.ts","../src/configs/sonar.ts","../src/configs/storybook.ts","../src/configs/tailwind.ts","../src/configs/tanstack.ts","../src/configs/turbo.ts","../src/configs/typescript.ts","../src/configs/unicorn.ts","../src/configs/yaml.ts","../src/factory.ts"],"names":["GLOB_SRC","GLOB_TS","GLOB_TSX","GLOB_STORIES","GLOB_JSON","GLOB_JSON5","GLOB_JSONC","GLOB_CSS","GLOB_YAML","GLOB_MARKDOWN","GLOB_MARKDOWN_IN_MARKDOWN","GLOB_MARKDOWN_CODE","GLOB_EXCLUDE","antfu","pluginAntfu","boolean","pluginDeMorgan","PluginNameMap","recommended","renamePluginsInRules","configs","comments","pluginComments","css","plugin","tailwindSyntax","interopDefault","m","resolved","drizzle","options","overrides","drizzleObjectName","fixupPluginRules","graphql","files","gql","gqlSchema","loadConfig","g","flatRecommended","rules","rule","ruleName","ignores","gitIgnore","composer","javascript","stylistic","globals","eslint","jsdoc","jsonc","config","SHARED_OPTIONS","collectRules","parser","markdown","mergeProcessors","processorPassThrough","parserPlain","code","next","parserOptions","node","default","pnpm","jsoncParser","yamlParser","prettier","react","tsconfigRootDir","reactCompiler","pluginReact","pluginReactHooks","pluginReactCompiler","plugins","regexp","pluginRegexp","sonar","storybook","storybookDirectory","languageOptions","tailwind","tailwindcss","tailwindFunctions","findUp","tanstack","turbo","typescript","twoDigits","strictConfig","renamePluginsInConfigs","unicorn","yaml","yml","enabled","defaults","enable","rest","userConfig","pnpmPromise","FlatConfigComposer","isPackageExists","typescriptOptions"],"mappings":"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","file":"index.js","sourcesContent":["export const GLOB_SRC = '**/*.?([cm])[jt]s?(x)';\n\nexport const GLOB_TS = '**/*.?([cm])ts';\nexport const GLOB_TSX = '**/*.?([cm])tsx';\n\nexport const GLOB_STORIES = '**/*.stories.tsx';\n\nexport const GLOB_JSON = '**/*.json';\nexport const GLOB_JSON5 = '**/*.json5';\nexport const GLOB_JSONC = '**/*.jsonc';\n\nexport const GLOB_CSS = '**/*.css';\n\nexport const GLOB_YAML = '**/*.y?(a)ml';\n\nexport const GLOB_MARKDOWN = '**/*.md';\nexport const GLOB_MARKDOWN_IN_MARKDOWN = '**/*.md/*.md';\nexport const GLOB_MARKDOWN_CODE = `${GLOB_MARKDOWN}/${GLOB_SRC}`;\n\nexport const GLOB_EXCLUDE = [\n '**/node_modules',\n '**/dist',\n '**/package-lock.json',\n '**/yarn.lock',\n '**/pnpm-lock.yaml',\n '**/bun.lockb',\n '**/bun.lock',\n\n '**/output',\n '**/coverage',\n '**/temp',\n '**/.temp',\n '**/tmp',\n '**/.tmp',\n '**/.history',\n '**/.vitepress/cache',\n '**/.nuxt',\n '**/.next',\n '**/.vercel',\n '**/.changeset',\n '**/.idea',\n '**/.cache',\n '**/.output',\n '**/.vite-inspect',\n '**/.yarn',\n\n '**/CHANGELOG*.md',\n '**/*.min.*',\n '**/LICENSE*',\n '**/__snapshots__',\n '**/auto-import?(s).d.ts',\n '**/components.d.ts',\n] as const;\n","import pluginAntfu from 'eslint-plugin-antfu';\n\nimport { GLOB_SRC } from '../globs';\nimport type { TypedFlatConfigItem } from '../types';\n\nexport function antfu(): TypedFlatConfigItem[] {\n return [\n {\n files: [GLOB_SRC],\n name: '2digits:antfu',\n plugins: {\n antfu: pluginAntfu,\n },\n rules: {\n 'antfu/if-newline': 'error',\n 'antfu/top-level-function': 'error',\n },\n },\n ];\n}\n","import pluginDeMorgan from 'eslint-plugin-de-morgan';\n\nimport { GLOB_SRC } from '../globs';\nimport type { TypedFlatConfigItem } from '../types';\n\nexport function boolean(): TypedFlatConfigItem[] {\n return [\n {\n files: [GLOB_SRC],\n name: '2digits:boolean',\n plugins: {\n boolean: pluginDeMorgan,\n },\n rules: {\n ...pluginDeMorgan.configs.recommended.rules,\n },\n },\n ];\n}\n","export const PluginNameMap = {\n '@next/next': 'next',\n '@eslint-react/naming-convention': 'react-naming-convention',\n '@eslint-react/hooks-extra': 'react-hooks-extra',\n '@eslint-react/dom': 'react-dom',\n '@eslint-react/web-api': 'react-web-api',\n '@eslint-react': 'react-extra',\n 'react-hooks': 'react-hooks',\n 'react-compiler': 'react-compiler',\n '@stylistic/eslint-plugin': 'stylistic',\n '@typescript-eslint': 'ts',\n node: 'node',\n '@eslint-community/eslint-comments': 'comments',\n storybook: 'storybook',\n turbo: 'turbo',\n jsdoc: 'jsdoc',\n unicorn: 'unicorn',\n tailwindcss: 'tailwindcss',\n '@tanstack/query': 'tanstack',\n '@2digits': '@2digits',\n '@graphql-eslint': 'gql',\n sonarjs: 'sonar',\n drizzle: 'drizzle',\n 'de-morgan': 'boolean',\n} as const;\n","import pluginComments from '@eslint-community/eslint-plugin-eslint-comments';\nimport configs from '@eslint-community/eslint-plugin-eslint-comments/configs';\nimport { renamePluginsInRules } from 'eslint-flat-config-utils';\n\nimport { PluginNameMap } from '../constants';\nimport { GLOB_SRC } from '../globs';\nimport type { TypedFlatConfigItem } from '../types';\n\nconst recommended = renamePluginsInRules(configs.recommended.rules as never, PluginNameMap);\n\nexport function comments(): TypedFlatConfigItem[] {\n return [\n {\n files: [GLOB_SRC],\n name: '2digits:comments',\n plugins: {\n comments: pluginComments,\n },\n rules: {\n ...recommended,\n\n 'comments/no-unused-disable': 'error',\n 'comments/disable-enable-pair': ['error', { allowWholeFile: true }],\n },\n },\n ];\n}\n","import plugin from '@eslint/css';\nimport { tailwindSyntax } from '@eslint/css/syntax';\n\nimport { GLOB_CSS } from '../globs';\nimport type { TypedFlatConfigItem } from '../types';\n\nexport function css(): TypedFlatConfigItem[] {\n return [\n {\n name: '2digits:css',\n files: [GLOB_CSS],\n language: 'css/css',\n plugins: {\n css: plugin,\n },\n languageOptions: {\n tolerant: true,\n customSyntax: tailwindSyntax,\n },\n rules: {\n ...plugin.configs.recommended.rules,\n },\n },\n ];\n}\n","import type { Awaitable } from 'eslint-flat-config-utils';\n\nexport async function interopDefault<T>(m: Awaitable<T>): Promise<T extends { default: infer U } ? U : T> {\n const resolved = await m;\n\n return ((resolved as Record<string, unknown>).default || resolved) as never;\n}\n","import { fixupPluginRules } from '@eslint/compat';\n\nimport { GLOB_SRC } from '../globs';\nimport type { OptionsWithDrizzle, TypedFlatConfigItem } from '../types';\nimport { interopDefault } from '../utils';\n\nexport async function drizzle(options: OptionsWithDrizzle = {}): Promise<TypedFlatConfigItem[]> {\n const { overrides = {}, drizzleObjectName = ['drizzle', 'db'] } = options;\n\n const drizzle = await interopDefault(import('eslint-plugin-drizzle'));\n\n return [\n {\n files: [GLOB_SRC],\n name: '2digits:drizzle',\n plugins: {\n drizzle: fixupPluginRules(drizzle as never),\n },\n rules: {\n 'drizzle/enforce-update-with-where': ['error', { drizzleObjectName }],\n 'drizzle/enforce-delete-with-where': ['error', { drizzleObjectName }],\n\n ...overrides,\n },\n },\n ];\n}\n","import { renamePluginsInRules } from 'eslint-flat-config-utils';\nimport { loadConfig } from 'graphql-config';\n\nimport { PluginNameMap } from '../constants';\nimport type { OptionsWithFiles, TypedFlatConfigItem } from '../types';\nimport { interopDefault } from '../utils';\n\nexport async function graphql(options: OptionsWithFiles = {}): Promise<TypedFlatConfigItem[]> {\n const { overrides = {}, files = ['**/*.graphql', '**/*.gql'] } = options;\n\n const [gql, gqlSchema] = await Promise.all([\n interopDefault(import('@graphql-eslint/eslint-plugin')),\n loadConfig({ throwOnEmpty: false, throwOnMissing: false }).then((g) => g?.getDefault().schema),\n ]);\n\n const flatRecommended = gql.configs['flat/operations-recommended'].rules;\n\n let rules = {} as typeof flatRecommended;\n\n if (gqlSchema) {\n rules = flatRecommended;\n } else {\n for (const rule of Object.keys(flatRecommended) as Array<keyof typeof rules>) {\n const ruleName = rule.replace('@graphql-eslint/', '') as keyof typeof gql.rules;\n\n if (\n ruleName in gql.rules\n && (gql.rules[ruleName].meta.docs?.requiresSchema || gql.rules[ruleName].meta.docs?.requiresSiblings)\n ) {\n continue;\n }\n rules[rule] = flatRecommended[rule] as never;\n }\n }\n\n const recommended = renamePluginsInRules(rules, PluginNameMap);\n\n return [\n {\n name: '2digits:graphql',\n plugins: {\n gql,\n },\n languageOptions: {\n parser: gql.parser,\n },\n files,\n rules: {\n ...recommended,\n\n 'gql/naming-convention': ['error', { allowLeadingUnderscore: true } as never],\n\n ...overrides,\n },\n },\n ];\n}\n","import { composer } from 'eslint-flat-config-utils';\n\nimport { GLOB_EXCLUDE } from '../globs';\nimport type { OptionsWithIgnores, TypedFlatConfigItem } from '../types';\nimport { interopDefault } from '../utils';\n\nexport async function ignores(options: OptionsWithIgnores = {}): Promise<TypedFlatConfigItem[]> {\n const { gitIgnore, ignores = [] } = options;\n\n return composer(\n {\n ignores: [GLOB_EXCLUDE, ignores].flat(),\n name: '2digits:ignores',\n },\n interopDefault(import('eslint-config-flat-gitignore')).then((m) =>\n m({ strict: false, ...gitIgnore, name: '2digits:gitignore' }),\n ),\n );\n}\n","import eslint from '@eslint/js';\nimport stylistic from '@stylistic/eslint-plugin';\nimport globals from 'globals';\n\nimport { GLOB_SRC } from '../globs';\nimport type { OptionsOverrides, TypedFlatConfigItem } from '../types';\n\nexport function javascript(options: OptionsOverrides = {}): TypedFlatConfigItem[] {\n const { overrides = {} } = options;\n\n return [\n {\n files: [GLOB_SRC],\n name: '2digits:javascript',\n plugins: {\n stylistic,\n },\n languageOptions: {\n ecmaVersion: 2022,\n globals: {\n ...globals.browser,\n ...globals.es2021,\n ...globals.node,\n document: 'readonly',\n navigator: 'readonly',\n window: 'readonly',\n },\n parserOptions: {\n ecmaFeatures: {\n jsx: true,\n },\n ecmaVersion: 2022,\n sourceType: 'module',\n },\n sourceType: 'module',\n },\n linterOptions: {\n reportUnusedDisableDirectives: true,\n },\n rules: {\n ...eslint.configs.recommended.rules,\n\n 'accessor-pairs': ['error', { enforceForClassMembers: true, setWithoutGet: true }],\n 'array-callback-return': 'error',\n 'block-scoped-var': 'error',\n 'constructor-super': 'error',\n 'default-case-last': 'error',\n 'dot-notation': ['error', { allowKeywords: true }],\n eqeqeq: ['error', 'smart'],\n 'new-cap': ['error', { capIsNew: false, newIsCap: true, properties: true }],\n 'no-alert': 'error',\n 'no-array-constructor': 'error',\n 'no-async-promise-executor': 'error',\n 'no-caller': 'error',\n 'no-case-declarations': 'error',\n 'no-class-assign': 'error',\n 'no-compare-neg-zero': 'error',\n 'no-cond-assign': ['error', 'always'],\n 'no-const-assign': 'error',\n 'no-control-regex': 'error',\n 'no-debugger': 'error',\n 'no-delete-var': 'error',\n 'no-dupe-args': 'error',\n 'no-dupe-class-members': 'error',\n 'no-dupe-keys': 'error',\n 'no-duplicate-case': 'error',\n 'no-empty': ['error', { allowEmptyCatch: true }],\n 'no-empty-character-class': 'error',\n 'no-empty-pattern': 'error',\n 'no-eval': 'error',\n 'no-ex-assign': 'error',\n 'no-extend-native': 'error',\n 'no-extra-bind': 'error',\n 'no-extra-boolean-cast': 'error',\n 'no-fallthrough': 'error',\n 'no-func-assign': 'error',\n 'no-global-assign': 'error',\n 'no-implied-eval': 'error',\n 'no-import-assign': 'error',\n 'no-invalid-regexp': 'error',\n 'no-irregular-whitespace': 'error',\n 'no-iterator': 'error',\n 'no-labels': ['error', { allowLoop: false, allowSwitch: false }],\n 'no-lone-blocks': 'error',\n 'no-loss-of-precision': 'error',\n 'no-misleading-character-class': 'error',\n 'no-multi-str': 'error',\n 'no-new': 'error',\n 'no-new-func': 'error',\n 'no-new-native-nonconstructor': 'error',\n 'no-new-wrappers': 'error',\n 'no-obj-calls': 'error',\n 'no-octal': 'error',\n 'no-octal-escape': 'error',\n 'no-proto': 'error',\n 'no-prototype-builtins': 'error',\n 'no-redeclare': ['error', { builtinGlobals: false }],\n 'no-regex-spaces': 'error',\n 'no-restricted-globals': [\n 'error',\n { message: 'Use `globalThis` instead.', name: 'global' },\n { message: 'Use `globalThis` instead.', name: 'self' },\n ],\n 'no-restricted-properties': [\n 'error',\n {\n message: 'Use `Object.getPrototypeOf` or `Object.setPrototypeOf` instead.',\n property: '__proto__',\n },\n {\n message: 'Use `Object.defineProperty` instead.',\n property: '__defineGetter__',\n },\n {\n message: 'Use `Object.defineProperty` instead.',\n property: '__defineSetter__',\n },\n {\n message: 'Use `Object.getOwnPropertyDescriptor` instead.',\n property: '__lookupGetter__',\n },\n {\n message: 'Use `Object.getOwnPropertyDescriptor` instead.',\n property: '__lookupSetter__',\n },\n ],\n 'no-restricted-syntax': [\n 'error',\n 'DebuggerStatement',\n 'LabeledStatement',\n 'WithStatement',\n 'TSEnumDeclaration',\n 'TSExportAssignment',\n ],\n 'no-self-assign': ['error', { props: true }],\n 'no-self-compare': 'error',\n 'no-sequences': 'error',\n 'no-shadow-restricted-names': 'error',\n 'no-sparse-arrays': 'error',\n 'no-template-curly-in-string': 'error',\n 'no-this-before-super': 'error',\n 'no-throw-literal': 'error',\n 'no-undef': 'error',\n 'no-undef-init': 'error',\n 'no-unexpected-multiline': 'error',\n 'no-unmodified-loop-condition': 'error',\n 'no-unneeded-ternary': ['error', { defaultAssignment: false }],\n 'no-unreachable': 'error',\n 'no-unreachable-loop': 'error',\n 'no-unsafe-finally': 'error',\n 'no-unsafe-negation': 'error',\n 'no-unused-expressions': [\n 'error',\n {\n allowShortCircuit: true,\n allowTaggedTemplates: true,\n allowTernary: true,\n },\n ],\n 'no-unused-vars': [\n 'error',\n {\n args: 'none',\n caughtErrors: 'none',\n ignoreRestSiblings: true,\n vars: 'all',\n },\n ],\n 'no-useless-backreference': 'error',\n 'no-useless-call': 'error',\n 'no-useless-catch': 'error',\n 'no-useless-computed-key': 'error',\n 'no-useless-constructor': 'error',\n 'no-useless-rename': 'error',\n 'no-var': 'error',\n 'no-with': 'error',\n 'object-shorthand': [\n 'error',\n 'always',\n {\n avoidQuotes: true,\n ignoreConstructors: false,\n },\n ],\n 'one-var': ['error', { initialized: 'never' }],\n 'prefer-arrow-callback': [\n 'error',\n {\n allowNamedFunctions: true,\n allowUnboundThis: true,\n },\n ],\n 'prefer-const': [\n 'error',\n {\n destructuring: 'all',\n ignoreReadBeforeAssign: true,\n },\n ],\n 'prefer-exponentiation-operator': 'error',\n 'prefer-promise-reject-errors': 'error',\n 'prefer-regex-literals': ['error', { disallowRedundantWrapping: true }],\n 'prefer-rest-params': 'error',\n 'prefer-spread': 'error',\n 'prefer-template': 'error',\n 'symbol-description': 'error',\n 'unicode-bom': ['error', 'never'],\n 'use-isnan': ['error', { enforceForIndexOf: true, enforceForSwitchCase: true }],\n 'valid-typeof': ['error', { requireStringLiterals: true }],\n 'vars-on-top': 'error',\n yoda: ['error', 'never'],\n\n 'stylistic/padding-line-between-statements': [\n 'error',\n { blankLine: 'always', prev: ['const', 'let'], next: '*' },\n {\n blankLine: 'any',\n prev: ['const', 'let'],\n next: ['const', 'let'],\n },\n { blankLine: 'always', prev: '*', next: 'return' },\n ],\n\n ...overrides,\n },\n },\n ];\n}\n","import { GLOB_SRC } from '../globs';\nimport type { TypedFlatConfigItem } from '../types';\nimport { interopDefault } from '../utils';\n\nexport async function jsdoc(): Promise<TypedFlatConfigItem[]> {\n return [\n {\n files: [GLOB_SRC],\n name: '2digits:jsdoc',\n plugins: {\n jsdoc: await interopDefault(import('eslint-plugin-jsdoc')),\n },\n rules: {\n 'jsdoc/check-access': 'error',\n 'jsdoc/check-param-names': 'error',\n 'jsdoc/check-property-names': 'error',\n 'jsdoc/check-types': 'error',\n 'jsdoc/empty-tags': 'error',\n 'jsdoc/implements-on-classes': 'error',\n 'jsdoc/no-defaults': 'error',\n 'jsdoc/no-multi-asterisks': 'error',\n 'jsdoc/require-param-name': 'error',\n 'jsdoc/require-property': 'error',\n 'jsdoc/require-property-description': 'error',\n 'jsdoc/require-property-name': 'error',\n 'jsdoc/require-returns-check': 'error',\n 'jsdoc/require-returns-description': 'error',\n 'jsdoc/require-yields-check': 'error',\n },\n },\n ];\n}\n","import plugin, { configs } from 'eslint-plugin-jsonc';\nimport parser from 'jsonc-eslint-parser';\n\nimport { GLOB_JSON, GLOB_JSON5, GLOB_JSONC } from '../globs';\nimport type { TypedFlatConfigItem } from '../types';\n\nexport function jsonc(): TypedFlatConfigItem[] {\n return [\n ...configs['flat/base'].map((config) => ({ ...config, name: '2digits:jsonc/base' })),\n\n {\n name: '2digits:jsonc/json',\n files: [GLOB_JSON],\n ...SHARED_OPTIONS,\n rules: {\n ...collectRules(configs['flat/recommended-with-json']),\n },\n },\n {\n name: '2digits:jsonc/jsonc',\n files: [GLOB_JSONC],\n ...SHARED_OPTIONS,\n rules: {\n ...collectRules(configs['flat/recommended-with-jsonc']),\n },\n },\n {\n name: '2digits:jsonc/json5',\n files: [GLOB_JSON5],\n ...SHARED_OPTIONS,\n rules: {\n ...collectRules(configs['flat/recommended-with-json5']),\n },\n },\n\n {\n name: '2digits:jsonc/package.json',\n ...SHARED_OPTIONS,\n files: ['**/package.json'],\n rules: {\n 'jsonc/sort-array-values': [\n 'error',\n {\n order: { type: 'asc' },\n pathPattern: '^files$',\n },\n ],\n 'jsonc/sort-keys': [\n 'error',\n {\n order: [\n '$schema',\n 'publisher',\n 'name',\n 'displayName',\n 'version',\n 'private',\n 'description',\n 'funding',\n 'homepage',\n 'repository',\n 'bugs',\n 'categories',\n 'type',\n 'main',\n 'module',\n 'types',\n 'typesVersions',\n 'bin',\n 'files',\n 'exports',\n 'icon',\n 'unpkg',\n 'jsdelivr',\n 'sideEffects',\n 'activationEvents',\n 'contributes',\n 'scripts',\n 'keywords',\n 'author',\n 'license',\n 'workspaces',\n 'dependencies',\n 'devDependencies',\n 'peerDependencies',\n 'peerDependenciesMeta',\n 'optionalDependencies',\n 'packageManager',\n 'engines',\n 'pnpm',\n 'overrides',\n 'resolutions',\n 'husky',\n 'simple-git-hooks',\n 'lint-staged',\n 'eslintConfig',\n 'prettier',\n ],\n pathPattern: '^$',\n },\n {\n order: { type: 'asc' },\n pathPattern: '^(?:dev|peer|optional|bundled)?[Dd]ependencies(Meta)?$',\n },\n {\n order: ['types', 'import', 'module', 'require', 'default'],\n pathPattern: '^exports.*$',\n },\n ],\n },\n },\n\n {\n name: '2digits:jsonc/tsconfig.json',\n ...SHARED_OPTIONS,\n files: [\n '**/tsconfig.json',\n '**/tsconfig.*.json',\n '**/tsconfig-*.json',\n '**/jsconfig.json',\n '**/jsconfig.*.json',\n '**/jsconfig-*.json',\n ],\n rules: {\n 'jsonc/sort-keys': [\n 'error',\n {\n order: ['$schema', 'extends', 'compilerOptions', 'references', 'files', 'include', 'exclude'],\n pathPattern: '^$',\n },\n {\n order: [\n /* Projects */\n 'incremental',\n 'composite',\n 'tsBuildInfoFile',\n 'disableSourceOfProjectReferenceRedirect',\n 'disableSolutionSearching',\n 'disableReferencedProjectLoad',\n /* Language and Environment */\n 'target',\n 'lib',\n 'jsx',\n 'experimentalDecorators',\n 'emitDecoratorMetadata',\n 'jsxFactory',\n 'jsxFragmentFactory',\n 'jsxImportSource',\n 'reactNamespace',\n 'noLib',\n 'useDefineForClassFields',\n 'moduleDetection',\n /* Modules */\n 'module',\n 'rootDir',\n 'moduleResolution',\n 'baseUrl',\n 'paths',\n 'rootDirs',\n 'typeRoots',\n 'types',\n 'allowUmdGlobalAccess',\n 'moduleSuffixes',\n 'allowImportingTsExtensions',\n 'resolvePackageJsonExports',\n 'resolvePackageJsonImports',\n 'customConditions',\n 'resolveJsonModule',\n 'allowArbitraryExtensions',\n 'noResolve',\n /* JavaScript Support */\n 'allowJs',\n 'checkJs',\n 'maxNodeModuleJsDepth',\n /* Emit */\n 'declaration',\n 'declarationMap',\n 'emitDeclarationOnly',\n 'sourceMap',\n 'inlineSourceMap',\n 'outFile',\n 'outDir',\n 'removeComments',\n 'noEmit',\n 'importHelpers',\n 'importsNotUsedAsValues',\n 'downlevelIteration',\n 'sourceRoot',\n 'mapRoot',\n 'inlineSources',\n 'emitBOM',\n 'newLine',\n 'stripInternal',\n 'noEmitHelpers',\n 'noEmitOnError',\n 'preserveConstEnums',\n 'declarationDir',\n 'preserveValueImports',\n /* Interop Constraints */\n 'isolatedModules',\n 'verbatimModuleSyntax',\n 'allowSyntheticDefaultImports',\n 'esModuleInterop',\n 'preserveSymlinks',\n 'forceConsistentCasingInFileNames',\n /* Type Checking */\n 'strict',\n 'strictBindCallApply',\n 'strictFunctionTypes',\n 'strictNullChecks',\n 'strictPropertyInitialization',\n 'allowUnreachableCode',\n 'allowUnusedLabels',\n 'alwaysStrict',\n 'exactOptionalPropertyTypes',\n 'noFallthroughCasesInSwitch',\n 'noImplicitAny',\n 'noImplicitOverride',\n 'noImplicitReturns',\n 'noImplicitThis',\n 'noPropertyAccessFromIndexSignature',\n 'noUncheckedIndexedAccess',\n 'noUnusedLocals',\n 'noUnusedParameters',\n 'useUnknownInCatchVariables',\n /* Completeness */\n 'skipDefaultLibCheck',\n 'skipLibCheck',\n ],\n pathPattern: '^compilerOptions$',\n },\n ],\n },\n },\n\n ...configs['flat/prettier'].map((config) => ({ ...config, name: '2digits:jsonc/prettier' })),\n ];\n}\n\nconst SHARED_OPTIONS = {\n languageOptions: {\n parser,\n },\n plugins: {\n jsonc: plugin,\n },\n} satisfies Pick<TypedFlatConfigItem, 'plugins' | 'languageOptions'>;\n\ntype FlatConfigName = Extract<keyof typeof configs, `flat/${string}`>;\n\nfunction collectRules(config: (typeof configs)[FlatConfigName]) {\n return Object.fromEntries(config.flatMap(({ rules }) => Object.entries(rules ?? {})));\n}\n","import plugin from '@eslint/markdown';\nimport { mergeProcessors, processorPassThrough } from 'eslint-merge-processors';\n\nimport { GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN } from '../globs';\nimport type { TypedFlatConfigItem } from '../types';\n\nconst files = [GLOB_MARKDOWN];\n\nexport function markdown(): TypedFlatConfigItem[] {\n return [\n {\n name: '2digits:markdown/setup',\n plugins: {\n markdown: plugin,\n },\n },\n {\n name: '2digits:markdown/processor',\n files,\n language: 'markdown/gfm',\n ignores: [GLOB_MARKDOWN_IN_MARKDOWN],\n /**\n * `eslint-plugin-markdown` only creates virtual files for code blocks, but not the markdown file itself. We use\n * `eslint-merge-processors` to add a pass-through processor for the markdown file itself.\n */\n processor: mergeProcessors([plugin.processors.markdown, processorPassThrough]),\n },\n {\n name: '2digits:markdown/parser',\n files,\n language: 'markdown/gfm',\n languageOptions: {\n parser: parserPlain,\n },\n },\n {\n name: '2digits:markdown/rules',\n files,\n language: 'markdown/gfm',\n rules: {\n 'markdown/fenced-code-language': 'error',\n 'markdown/heading-increment': 'error',\n 'markdown/no-empty-links': 'error',\n 'markdown/no-invalid-label-refs': 'error',\n 'markdown/no-missing-label-refs': 'error',\n },\n },\n {\n name: '2digits:markdown/disables',\n files: [GLOB_MARKDOWN_CODE],\n languageOptions: {\n parserOptions: {\n ecmaFeatures: {\n impliedStrict: true,\n },\n },\n },\n rules: {\n 'no-alert': 'off',\n 'no-console': 'off',\n 'no-labels': 'off',\n 'no-lone-blocks': 'off',\n 'no-restricted-syntax': 'off',\n 'no-undef': 'off',\n 'no-unused-expressions': 'off',\n 'no-unused-labels': 'off',\n 'no-unused-vars': 'off',\n 'node/prefer-global/process': 'off',\n 'ts/consistent-type-imports': 'off',\n 'ts/explicit-function-return-type': 'off',\n 'ts/no-namespace': 'off',\n 'ts/no-redeclare': 'off',\n 'ts/no-require-imports': 'off',\n 'ts/no-unused-expressions': 'off',\n 'ts/no-unused-vars': 'off',\n 'ts/no-use-before-define': 'off',\n 'unicode-bom': 'off',\n },\n },\n ];\n}\n\nconst parserPlain = {\n meta: {\n name: 'parser-plain',\n },\n parseForESLint: (code: string) => ({\n ast: {\n body: [],\n comments: [],\n loc: { end: code.length, start: 0 },\n range: [0, code.length],\n tokens: [],\n type: 'Program',\n },\n // eslint-disable-next-line unicorn/no-null\n scopeManager: null,\n services: { isPlain: true },\n visitorKeys: {\n Program: [],\n },\n }),\n};\n","import { fixupPluginRules } from '@eslint/compat';\nimport { renamePluginsInRules } from 'eslint-flat-config-utils';\n\nimport { PluginNameMap } from '../constants';\nimport { GLOB_TS, GLOB_TSX } from '../globs';\nimport type { OptionsTypeScriptWithTypes, OptionsWithFiles, TypedFlatConfigItem } from '../types';\nimport { interopDefault } from '../utils';\n\nexport async function next(\n options: OptionsWithFiles & OptionsTypeScriptWithTypes = {},\n): Promise<TypedFlatConfigItem[]> {\n const { files = [GLOB_TS, GLOB_TSX], overrides = {}, parserOptions } = options;\n\n const [next, parser] = await Promise.all([\n interopDefault(import('@next/eslint-plugin-next')),\n interopDefault(import('@typescript-eslint/parser')),\n ]);\n\n const recommended = renamePluginsInRules(\n {\n ...next.configs.recommended.rules,\n ...next.configs['core-web-vitals'].rules,\n },\n PluginNameMap,\n );\n\n return [\n {\n name: '2digits:next/setup',\n plugins: {\n next: fixupPluginRules(next as never),\n },\n },\n {\n name: '2digits:next/rules',\n files,\n languageOptions: {\n parser,\n parserOptions: {\n ecmaFeatures: {\n jsx: true,\n },\n projectService: true,\n ...parserOptions,\n },\n sourceType: 'module',\n },\n rules: {\n ...recommended,\n\n 'next/no-html-link-for-pages': 'off',\n\n ...overrides,\n },\n },\n ];\n}\n","import { GLOB_SRC } from '../globs';\nimport { pluginNode } from '../plugins';\nimport type { TypedFlatConfigItem } from '../types';\n\nexport function node(): TypedFlatConfigItem[] {\n return [\n {\n files: [GLOB_SRC],\n name: '2digits:node',\n settings: {\n node: {\n version: '>= 22.0.0',\n },\n },\n plugins: {\n node: pluginNode,\n },\n rules: {\n 'node/handle-callback-err': ['error', '^(err|error)$'],\n 'node/no-deprecated-api': 'error',\n 'node/no-exports-assign': 'error',\n 'node/no-new-require': 'error',\n 'node/no-path-concat': 'error',\n 'node/no-unsupported-features/node-builtins': ['error', { allowExperimental: true }],\n 'node/prefer-global/buffer': 'error',\n 'node/prefer-global/process': 'error',\n 'node/prefer-global/text-encoder': 'error',\n 'node/prefer-global/url': 'error',\n 'node/prefer-global/console': 'error',\n 'node/prefer-global/url-search-params': 'error',\n 'node/prefer-global/text-decoder': 'error',\n 'node/process-exit-as-throw': 'error',\n },\n },\n ];\n}\n","import jsoncParser from 'jsonc-eslint-parser';\nimport yamlParser from 'yaml-eslint-parser';\n\nimport type { TypedFlatConfigItem } from '../types';\nimport { interopDefault } from '../utils';\n\nexport async function pnpm(): Promise<TypedFlatConfigItem[]> {\n const plugin = await interopDefault(import('eslint-plugin-pnpm'));\n\n return [\n {\n name: '2digits:pnpm/package-json',\n files: ['**/package.json'],\n languageOptions: {\n parser: jsoncParser,\n },\n plugins: {\n pnpm: plugin,\n },\n rules: {\n 'pnpm/json-enforce-catalog': 'error',\n 'pnpm/json-prefer-workspace-settings': 'error',\n 'pnpm/json-valid-catalog': 'error',\n },\n },\n {\n name: '2digits:pnpm/pnpm-workspace-yaml',\n files: ['pnpm-workspace.yaml'],\n languageOptions: {\n parser: yamlParser,\n },\n plugins: {\n pnpm: plugin,\n },\n rules: {\n 'pnpm/yaml-no-duplicate-catalog-item': 'error',\n 'pnpm/yaml-no-unused-catalog-item': 'error',\n },\n },\n ];\n}\n","import type { TypedFlatConfigItem } from '../types';\nimport { interopDefault } from '../utils';\n\nexport async function prettier(): Promise<TypedFlatConfigItem[]> {\n const [prettier, stylistic] = await Promise.all([\n interopDefault(import('eslint-config-prettier')),\n interopDefault(import('@stylistic/eslint-plugin')),\n ]);\n\n return [\n {\n name: '2digits:prettier',\n plugins: {\n stylistic,\n },\n rules: {\n ...prettier.rules,\n\n 'tailwindcss/classnames-order': 'off',\n 'stylistic/jsx-newline': ['error', { prevent: false }],\n },\n },\n ];\n}\n","import stylistic from '@stylistic/eslint-plugin';\nimport { renamePluginsInRules } from 'eslint-flat-config-utils';\n\nimport { PluginNameMap } from '../constants';\nimport { GLOB_TS, GLOB_TSX } from '../globs';\nimport type { OptionsTypeScriptWithTypes, OptionsWithReact, TypedFlatConfigItem } from '../types';\nimport { interopDefault } from '../utils';\n\nexport async function react(\n options: OptionsWithReact & OptionsTypeScriptWithTypes = {},\n): Promise<TypedFlatConfigItem[]> {\n const { files = [GLOB_TS, GLOB_TSX], overrides = {}, parserOptions, tsconfigRootDir, reactCompiler = true } = options;\n\n const [pluginReact, pluginReactHooks, parser, pluginReactCompiler] = await Promise.all([\n interopDefault(import('@eslint-react/eslint-plugin')),\n interopDefault(import('eslint-plugin-react-hooks')),\n interopDefault(import('@typescript-eslint/parser')),\n reactCompiler ? interopDefault(import('eslint-plugin-react-compiler')) : undefined,\n ]);\n\n const plugins = pluginReact.configs.all.plugins;\n\n const recommended = renamePluginsInRules(\n {\n ...pluginReactHooks.configs['recommended-latest'].rules,\n ...pluginReact.configs['recommended-type-checked'].rules,\n },\n PluginNameMap,\n );\n\n return [\n {\n name: '2digits:react/setup',\n plugins: {\n stylistic,\n 'react-dom': plugins['@eslint-react/dom'],\n 'react-web-api': plugins['@eslint-react/web-api'],\n 'react-extra': plugins['@eslint-react'],\n 'react-hooks': pluginReactHooks,\n 'react-hooks-extra': plugins['@eslint-react/hooks-extra'],\n 'react-naming-convention': plugins['@eslint-react/naming-convention'],\n ...(reactCompiler ? { 'react-compiler': pluginReactCompiler } : {}),\n },\n settings: {\n react: {\n version: 'detect',\n },\n },\n },\n {\n name: '2digits:react/rules',\n files,\n languageOptions: {\n parser,\n parserOptions: {\n ecmaFeatures: {\n jsx: true,\n },\n tsconfigRootDir,\n projectService: true,\n ...parserOptions,\n },\n sourceType: 'module',\n },\n rules: {\n ...recommended,\n\n ...(reactCompiler ? { 'react-compiler/react-compiler': 'error' } : {}),\n\n 'react-hooks-extra/no-unnecessary-use-callback': 'error',\n 'react-hooks-extra/prefer-use-state-lazy-initialization': 'error',\n 'react-hooks-extra/no-redundant-custom-hook': 'error',\n 'react-hooks-extra/no-unnecessary-use-memo': 'error',\n\n 'react-extra/no-useless-fragment': 'off',\n 'react-extra/prefer-read-only-props': 'off',\n 'react-extra/prefer-shorthand-boolean': 'error',\n 'react-extra/prefer-shorthand-fragment': 'error',\n 'react-extra/prefer-react-namespace-import': 'error',\n\n 'react-naming-convention/use-state': 'error',\n\n 'stylistic/jsx-curly-newline': 'off',\n 'stylistic/jsx-newline': ['error', { prevent: false }],\n 'stylistic/jsx-self-closing-comp': 'error',\n\n ...overrides,\n },\n },\n ];\n}\n","import pluginRegexp from 'eslint-plugin-regexp';\n\nimport { GLOB_SRC } from '../globs';\nimport type { TypedFlatConfigItem } from '../types';\n\nexport function regexp(): TypedFlatConfigItem[] {\n return [\n {\n files: [GLOB_SRC],\n name: '2digits:regexp',\n plugins: {\n regexp: pluginRegexp,\n },\n rules: {\n ...pluginRegexp.configs['flat/recommended'].rules,\n },\n },\n ];\n}\n","import { GLOB_SRC } from '../globs';\nimport { pluginSonar } from '../plugins';\nimport type { TypedFlatConfigItem } from '../types';\n\nexport function sonar(): TypedFlatConfigItem[] {\n return [\n {\n files: [GLOB_SRC],\n name: '2digits:sonar',\n plugins: {\n sonar: pluginSonar,\n },\n rules: {\n 'sonar/code-eval': 'error',\n 'sonar/cognitive-complexity': 'error',\n 'sonar/comma-or-logical-or-case': 'error',\n 'sonar/concise-regex': 'error',\n 'sonar/confidential-information-logging': 'error',\n 'sonar/constructor-for-side-effects': 'error',\n 'sonar/content-length': 'error',\n 'sonar/content-security-policy': 'error',\n 'sonar/cookie-no-httponly': 'error',\n 'sonar/cors': 'error',\n 'sonar/csrf': 'error',\n 'sonar/max-switch-cases': 'error',\n 'sonar/no-all-duplicated-branches': 'error',\n 'sonar/no-collapsible-if': 'error',\n 'sonar/no-collection-size-mischeck': 'error',\n 'sonar/no-duplicate-string': ['error', { threshold: 5 }],\n 'sonar/no-duplicated-branches': 'error',\n 'sonar/no-element-overwrite': 'error',\n 'sonar/no-empty-collection': 'error',\n 'sonar/no-extra-arguments': 'error',\n 'sonar/no-for-in-iterable': 'error',\n 'sonar/no-gratuitous-expressions': 'error',\n 'sonar/no-identical-conditions': 'error',\n 'sonar/no-identical-expressions': 'error',\n 'sonar/no-identical-functions': 'error',\n 'sonar/no-ignored-return': 'error',\n 'sonar/no-inverted-boolean-check': 'error',\n 'sonar/no-nested-switch': 'error',\n 'sonar/no-nested-template-literals': 'error',\n 'sonar/no-one-iteration-loop': 'error',\n 'sonar/no-redundant-boolean': 'error',\n 'sonar/no-same-line-conditional': 'error',\n 'sonar/no-small-switch': 'error',\n 'sonar/no-unused-collection': 'error',\n 'sonar/no-use-of-empty-return-value': 'error',\n 'sonar/no-useless-catch': 'error',\n 'sonar/non-existent-operator': 'error',\n 'sonar/prefer-immediate-return': 'error',\n 'sonar/prefer-object-literal': 'error',\n 'sonar/prefer-single-boolean-return': 'error',\n 'sonar/prefer-while': 'error',\n\n 'sonar/elseif-without-else': 'off',\n 'sonar/no-redundant-jump': 'off',\n },\n },\n ];\n}\n","import { fixupPluginRules } from '@eslint/compat';\nimport type { FlatConfig } from '@typescript-eslint/utils/ts-eslint';\n\nimport { GLOB_STORIES } from '../globs';\nimport type { OptionsTypeScriptWithTypes, OptionsWithStorybook, TypedFlatConfigItem } from '../types';\nimport { interopDefault } from '../utils';\n\nexport async function storybook(\n options: OptionsWithStorybook & OptionsTypeScriptWithTypes = {},\n): Promise<TypedFlatConfigItem[]> {\n const { files = [GLOB_STORIES], overrides = {}, parserOptions, storybookDirectory = '.storybook' } = options;\n\n const [storybook, parser] = await Promise.all([\n interopDefault(import('eslint-plugin-storybook')),\n interopDefault(import('@typescript-eslint/parser')),\n ]);\n\n const languageOptions = {\n parser,\n parserOptions: {\n ecmaFeatures: {\n jsx: true,\n },\n projectService: true,\n ...parserOptions,\n },\n sourceType: 'module',\n } satisfies FlatConfig.LanguageOptions;\n\n return [\n {\n name: '2digits:storybook/setup',\n plugins: {\n storybook: fixupPluginRules(storybook as never),\n },\n },\n {\n name: '2digits:storybook/rules',\n files,\n languageOptions,\n rules: {\n 'storybook/await-interactions': 'error',\n 'storybook/context-in-play-function': 'error',\n 'storybook/csf-component': 'error',\n 'storybook/default-exports': 'error',\n 'storybook/hierarchy-separator': 'error',\n 'storybook/meta-inline-properties': 'error',\n 'storybook/no-redundant-story-name': 'error',\n 'storybook/no-stories-of': 'error',\n 'storybook/no-title-property-in-meta': 'error',\n 'storybook/no-uninstalled-addons': 'error',\n 'storybook/prefer-pascal-case': 'error',\n 'storybook/story-exports': 'error',\n 'storybook/use-storybook-expect': 'error',\n 'storybook/use-storybook-testing-library': 'error',\n 'storybook/meta-satisfies-type': 'error',\n\n ...overrides,\n },\n },\n {\n name: '2digits:storybook/disables',\n files,\n rules: {\n 'react-hooks/rules-of-hooks': 'off',\n 'react/display-name': 'off',\n 'sonar/no-duplicate-string': 'off',\n },\n },\n {\n name: '2digits:storybook/config',\n files: [`${storybookDirectory}/main.@(js|cjs|mjs|ts)`],\n languageOptions,\n rules: {\n 'storybook/no-uninstalled-addons': 'error',\n },\n },\n ];\n}\n","import { findUp } from 'find-up';\n\nimport { GLOB_SRC } from '../globs';\nimport type { OptionsOverrides, TypedFlatConfigItem } from '../types';\nimport { interopDefault } from '../utils';\n\nexport async function tailwind(options: OptionsOverrides = {}): Promise<TypedFlatConfigItem[]> {\n const { overrides = {} } = options;\n\n const [tailwindcss, { tailwindFunctions }, config] = await Promise.all([\n interopDefault(import('eslint-plugin-tailwindcss')),\n interopDefault(import('@2digits/constants')),\n findUp(['tailwind.config.ts', 'tailwind.config.js']),\n ]);\n\n return [\n {\n files: [GLOB_SRC],\n name: '2digits:tailwind',\n plugins: {\n tailwindcss,\n },\n settings: {\n tailwindcss: {\n callees: tailwindFunctions,\n config,\n },\n },\n rules: {\n ...tailwindcss.configs.recommended.rules,\n\n ...overrides,\n },\n },\n ];\n}\n","import { renamePluginsInRules } from 'eslint-flat-config-utils';\n\nimport { PluginNameMap } from '../constants';\nimport { GLOB_SRC } from '../globs';\nimport type { OptionsOverrides, TypedFlatConfigItem } from '../types';\nimport { interopDefault } from '../utils';\n\nexport async function tanstack(options: OptionsOverrides = {}): Promise<TypedFlatConfigItem[]> {\n const { overrides = {} } = options;\n\n const tanstack = await interopDefault(import('@tanstack/eslint-plugin-query'));\n\n const recommended = renamePluginsInRules(tanstack.configs['flat/recommended'].at(0)?.rules ?? {}, PluginNameMap);\n\n return [\n {\n files: [GLOB_SRC],\n name: '2digits:tanstack',\n plugins: { tanstack },\n rules: {\n ...recommended,\n\n ...overrides,\n },\n },\n ];\n}\n","import { GLOB_SRC } from '../globs';\nimport type { OptionsOverrides, TypedFlatConfigItem } from '../types';\nimport { interopDefault } from '../utils';\n\nexport async function turbo(options: OptionsOverrides = {}): Promise<TypedFlatConfigItem[]> {\n const { overrides = {} } = options;\n\n const turbo = await interopDefault(import('eslint-plugin-turbo'));\n\n return [\n {\n files: [GLOB_SRC],\n name: '2digits:turbo',\n plugins: {\n turbo,\n },\n rules: {\n 'turbo/no-undeclared-env-vars': 'error',\n\n ...overrides,\n },\n },\n ];\n}\n","import { renamePluginsInConfigs } from 'eslint-flat-config-utils';\n\nimport { PluginNameMap } from '../constants';\nimport { GLOB_MARKDOWN_CODE, GLOB_SRC } from '../globs';\nimport type { OptionsTypeScriptWithTypes, TypedFlatConfigItem } from '../types';\nimport { interopDefault } from '../utils';\n\nexport async function typescript(options: OptionsTypeScriptWithTypes = {}): Promise<TypedFlatConfigItem[]> {\n const { overrides = {}, parserOptions = {} } = options;\n\n const [{ plugin, configs, parser }, twoDigits] = await Promise.all([\n interopDefault(import('typescript-eslint')),\n interopDefault(import('@2digits/eslint-plugin')),\n ]);\n\n const strictConfig = renamePluginsInConfigs(configs.strictTypeChecked as never, PluginNameMap);\n\n const rules = Object.fromEntries(strictConfig.flatMap(({ rules }) => Object.entries(rules ?? {})));\n\n return [\n {\n name: '2digits:typescript/setup',\n plugins: {\n ts: plugin,\n '@2digits': twoDigits,\n },\n },\n {\n name: '2digits:typescript/rules',\n files: [GLOB_SRC],\n ignores: [GLOB_MARKDOWN_CODE],\n languageOptions: {\n parser,\n parserOptions: {\n tsconfigRootDir: process.cwd(),\n projectService: true,\n warnOnUnsupportedTypeScriptVersion: false,\n ...parserOptions,\n },\n sourceType: 'module',\n },\n rules: {\n ...rules,\n 'ts/restrict-template-expressions': ['error', { allowNumber: true }],\n 'ts/ban-ts-comment': ['error', { 'ts-ignore': 'allow-with-description' }],\n 'ts/consistent-type-exports': ['error'],\n 'ts/consistent-type-imports': [\n 'error',\n {\n prefer: 'type-imports',\n disallowTypeAnnotations: false,\n fixStyle: 'inline-type-imports',\n },\n ],\n 'ts/no-empty-object-type': ['error', { allowInterfaces: 'with-single-extends', allowObjectTypes: 'never' }],\n 'ts/no-explicit-any': ['error'],\n 'ts/no-import-type-side-effects': ['error'],\n 'ts/no-misused-promises': 'off',\n 'ts/no-confusing-void-expression': 'off',\n 'ts/no-unused-vars': [\n 'error',\n {\n ignoreRestSiblings: true,\n argsIgnorePattern: '^_',\n varsIgnorePattern: '^_',\n },\n ],\n 'ts/unbound-method': 'off',\n\n ...twoDigits.configs.recommended.rules,\n\n ...overrides,\n },\n },\n {\n name: '2digits:typescript/disables/dts',\n files: ['**/*.d.ts'],\n ignores: [GLOB_MARKDOWN_CODE],\n rules: {\n 'unicorn/no-abusive-eslint-disable': 'off',\n 'no-duplicate-imports': 'off',\n 'no-restricted-syntax': 'off',\n 'ts/no-unused-vars': 'off',\n },\n },\n {\n name: '2digits:typescript/disables/test',\n files: ['**/*.{test,spec}.ts?(x)'],\n ignores: [GLOB_MARKDOWN_CODE],\n rules: {\n 'no-unused-expressions': 'off',\n },\n },\n {\n name: '2digits:typescript/disables/cjs',\n files: ['**/*.js', '**/*.cjs', '**/*.cts'],\n ignores: [GLOB_MARKDOWN_CODE],\n rules: {\n 'ts/no-require-imports': 'off',\n 'ts/no-var-requires': 'off',\n },\n },\n ];\n}\n","import { GLOB_SRC } from '../globs';\nimport { pluginUnicorn } from '../plugins';\nimport type { TypedFlatConfigItem } from '../types';\n\nexport function unicorn(): TypedFlatConfigItem[] {\n return [\n {\n files: [GLOB_SRC],\n name: '2digits:unicorn',\n plugins: {\n unicorn: pluginUnicorn,\n },\n rules: {\n ...pluginUnicorn.configs.recommended.rules,\n\n 'unicorn/filename-case': ['off'],\n 'unicorn/prefer-module': ['off'],\n 'unicorn/prevent-abbreviations': ['off'],\n 'unicorn/prefer-ternary': ['error', 'only-single-line'],\n 'unicorn/no-useless-undefined': [\n 'error',\n {\n checkArguments: false,\n checkArrowFunctionBody: false,\n },\n ],\n 'unicorn/prefer-top-level-await': ['off'],\n },\n },\n ];\n}\n","import yml from 'eslint-plugin-yml';\nimport parser from 'yaml-eslint-parser';\n\nimport { GLOB_YAML } from '../globs';\nimport type { TypedFlatConfigItem } from '../types';\n\nexport function yaml(): TypedFlatConfigItem[] {\n return [\n {\n name: '2digits:yaml/setup',\n plugins: {\n yml,\n },\n },\n\n {\n name: '2digits:yaml/base',\n ...SHARED_OPTIONS,\n rules: {\n 'no-irregular-whitespace': 'off',\n 'no-unused-vars': 'off',\n 'spaced-comment': 'off',\n },\n },\n\n {\n name: '2digits:yaml/recommended',\n ...SHARED_OPTIONS,\n rules: {\n 'yml/no-empty-document': 'error',\n 'yml/no-empty-key': 'error',\n 'yml/no-empty-mapping-value': 'error',\n 'yml/no-empty-sequence-entry': 'error',\n 'yml/no-irregular-whitespace': 'error',\n 'yml/no-tab-indent': 'error',\n 'yml/vue-custom-block/no-parsing-error': 'error',\n },\n },\n\n {\n name: '2digits:yaml/standard',\n ...SHARED_OPTIONS,\n rules: {\n 'yml/block-mapping': 'error',\n 'yml/block-sequence': 'error',\n 'yml/plain-scalar': 'error',\n 'yml/spaced-comment': 'error',\n },\n },\n\n {\n name: '2digits:yaml/pnpm-workspace',\n ...SHARED_OPTIONS,\n files: ['pnpm-workspace.yaml'],\n rules: {\n 'yml/sort-keys': [\n 'error',\n {\n order: [\n 'packages',\n 'overrides',\n 'patchedDependencies',\n 'hoistPattern',\n 'catalog',\n 'catalogs',\n\n 'allowedDeprecatedVersions',\n 'allowNonAppliedPatches',\n 'configDependencies',\n 'ignoredBuiltDependencies',\n 'ignoredOptionalDependencies',\n 'neverBuiltDependencies',\n 'onlyBuiltDependencies',\n 'onlyBuiltDependenciesFile',\n 'packageExtensions',\n 'peerDependencyRules',\n 'supportedArchitectures',\n ],\n pathPattern: '^$',\n },\n {\n order: { type: 'asc' },\n pathPattern: '.*',\n },\n ],\n },\n },\n\n {\n name: '2digits:yaml/prettier',\n ...SHARED_OPTIONS,\n rules: {\n 'yml/block-mapping-colon-indicator-newline': 'off',\n 'yml/block-mapping-question-indicator-newline': 'off',\n 'yml/block-sequence-hyphen-indicator-newline': 'off',\n 'yml/flow-mapping-curly-newline': 'off',\n 'yml/flow-mapping-curly-spacing': 'off',\n 'yml/flow-sequence-bracket-newline': 'off',\n 'yml/flow-sequence-bracket-spacing': 'off',\n 'yml/indent': 'off',\n 'yml/key-spacing': 'off',\n 'yml/no-multiple-empty-lines': 'off',\n 'yml/no-trailing-zeros': 'off',\n 'yml/quotes': 'off',\n },\n },\n ];\n}\n\nconst SHARED_OPTIONS = {\n files: [GLOB_YAML],\n languageOptions: {\n parser,\n },\n} satisfies Pick<TypedFlatConfigItem, 'languageOptions' | 'files'>;\n","import { FlatConfigComposer } from 'eslint-flat-config-utils';\nimport { findUp } from 'find-up';\nimport { isPackageExists } from 'local-pkg';\n\nimport {\n antfu,\n boolean,\n comments,\n css,\n drizzle,\n graphql,\n ignores,\n javascript,\n jsdoc,\n jsonc,\n markdown,\n next,\n node,\n pnpm,\n prettier,\n react,\n regexp,\n sonar,\n storybook,\n tailwind,\n tanstack,\n turbo,\n typescript,\n unicorn,\n yaml,\n} from './configs';\nimport { PluginNameMap } from './constants';\nimport type {\n ConfigNames,\n OptionsOverrides,\n OptionsTypeScriptWithTypes,\n OptionsWithDrizzle,\n OptionsWithFiles,\n OptionsWithIgnores,\n OptionsWithReact,\n OptionsWithStorybook,\n TypedFlatConfigItem,\n} from './types';\n\ntype SharedOptions<T = unknown> = T & {\n enable?: boolean;\n};\n\ninterface ESLint2DigitsOptions {\n ignores?: OptionsWithIgnores;\n turbo?: SharedOptions<OptionsOverrides> | boolean;\n js?: OptionsOverrides;\n ts?: SharedOptions<OptionsTypeScriptWithTypes> | boolean;\n pnpm?: SharedOptions | boolean;\n graphql?: SharedOptions<OptionsWithFiles> | boolean;\n react?: SharedOptions<OptionsWithReact> | boolean;\n next?: SharedOptions<OptionsWithFiles> | boolean;\n tailwind?: SharedOptions<OptionsOverrides> | boolean;\n storybook?: SharedOptions<OptionsWithStorybook> | boolean;\n tanstack?: SharedOptions<OptionsOverrides> | boolean;\n drizzle?: SharedOptions<OptionsWithDrizzle> | boolean;\n}\n\nfunction enabled<T extends SharedOptions>(options: T | boolean | undefined, defaults?: boolean): options is T {\n if (typeof options === 'boolean') {\n return options;\n }\n\n return options?.enable ?? defaults ?? false;\n}\n\nfunction config<T>(options: SharedOptions<T> | undefined | boolean): T {\n if (typeof options === 'boolean' || options === undefined) {\n return {} as T;\n }\n\n const { enable, ...rest } = options;\n\n return rest as T;\n}\n\nexport async function twoDigits(\n options: ESLint2DigitsOptions = {},\n ...userConfig: TypedFlatConfigItem[]\n): Promise<TypedFlatConfigItem[]> {\n let pnpmPromise;\n\n if (options.pnpm === undefined) {\n pnpmPromise = findUp('pnpm-workspace.yaml');\n }\n\n let composer = new FlatConfigComposer<TypedFlatConfigItem, ConfigNames>(\n ignores(options.ignores),\n javascript(options.js),\n boolean(),\n node(),\n comments(),\n jsdoc(),\n unicorn(),\n sonar(),\n regexp(),\n antfu(),\n jsonc(),\n css(),\n yaml(),\n markdown(),\n );\n\n if (enabled(options.turbo, isPackageExists('turbo'))) {\n composer = composer.append(turbo(config(options.turbo)));\n }\n\n const { overrides, ...typescriptOptions } = config(options.ts);\n\n if (enabled(options.ts, isPackageExists('typescript'))) {\n composer = composer.append(typescript(config(options.ts)));\n }\n\n if (enabled(options.react, isPackageExists('react'))) {\n composer = composer.append(\n react({\n ...config(options.react),\n ...typescriptOptions,\n }),\n );\n }\n\n if (enabled(options.next, isPackageExists('next'))) {\n composer = composer.append(\n next({\n ...config(options.next),\n ...typescriptOptions,\n }),\n );\n }\n\n if (enabled(options.storybook, isPackageExists('storybook'))) {\n composer = composer.append(\n storybook({\n ...config(options.storybook),\n ...typescriptOptions,\n }),\n );\n }\n\n if (enabled(options.tailwind, isPackageExists('tailwindcss'))) {\n composer = composer.append(tailwind(config(options.tailwind)));\n }\n\n if (\n enabled(\n options.tanstack,\n isPackageExists('react-query')\n || isPackageExists('@tanstack/react-query')\n || isPackageExists('@tanstack/react-query-devtools'),\n )\n ) {\n composer = composer.append(tanstack(config(options.tanstack)));\n }\n\n if (enabled(options.drizzle, isPackageExists('drizzle-kit') || isPackageExists('drizzle-orm'))) {\n composer = composer.append(drizzle(config(options.drizzle)));\n }\n\n if (enabled(options.graphql, isPackageExists('graphql'))) {\n composer = composer.append(graphql(config(options.graphql)));\n }\n\n if (enabled(options.pnpm, !!(await pnpmPromise))) {\n composer = composer.append(pnpm());\n }\n\n composer = composer.append(...userConfig);\n\n if (isPackageExists('prettier')) {\n composer = composer.append(prettier());\n }\n\n return composer.renamePlugins(PluginNameMap).toConfigs();\n}\n"]}