UNPKG

@mheob/eslint-config

Version:
2 lines (1 loc) 33.7 kB
import Ee from"node:fs";import{FlatConfigComposer as Re}from"eslint-flat-config-utils";var l="?([cm])[jt]s?(x)",g="**/*.?([cm])[jt]s?(x)",$e="**/*.?([cm])js",Ae="**/*.?([cm])jsx",w="**/*.?([cm])ts",T="**/*.?([cm])tsx",xe="**/*.{c,le,sc}ss",Ne="**/*.css",Me="**/*.{p,post}css",Ue="**/*.less",qe="**/*.scss",I="**/*.json",P="**/*.json5",D="**/*.jsonc",x="**/*.md",B="**/*.md/*.md",F="**/*.svelte",_="**/*.y?(a)ml",G="**/*.toml",we="**/*.htm?(l)",$="**/*.astro",Je="**/*.{g,graph}ql",A=`${x}/${g}`,N=[`**/__tests__/**/*.${l}`,`**/*.spec.${l}`,`**/*.test.${l}`,`**/*.bench.${l}`,`**/*.benchmark.${l}`],M=[g,xe,I,P,x,F,_,we],U=["**/node_modules","**/dist","**/package-lock.json","**/yarn.lock","**/pnpm-lock.yaml","**/bun.lockb","**/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"];async function Ke(...e){return(await Promise.all(e)).flat()}function C(e){return Array.isArray(e)?e:[e]}function j(e,r){return Object.fromEntries(Object.entries(e).map(([o,s])=>{for(let[t,i]of Object.entries(r))if(o.startsWith(`${t}/`))return[i+o.slice(t.length),s];return[o,s]}))}function He(e,r){return e.map(o=>{let s={...o};return s.rules&&(s.rules=j(s.rules,r)),s.plugins&&(s.plugins=Object.fromEntries(Object.entries(s.plugins).map(([t,i])=>t in r?[r[t],i]:[t,i]))),s})}import Te from"node:path";import{resolvePathSync as Ce}from"mlly";function q(e,r={}){(r.platform==="auto"||!r.platform)&&(r.platform=process.platform==="win32"?"win32":"posix");let o=Ce(e,{url:r.paths});return r.platform==="win32"?Te.win32.normalize(o):o}function je(e,r={}){try{return q(`${e}/package.json`,r)}catch{}try{return q(e,r)}catch(o){return o.code!=="MODULE_NOT_FOUND"&&o.code!=="ERR_MODULE_NOT_FOUND"&&console.error(o),!1}}function y(e,r={}){return!!je(e,r)}async function n(e){let r=await e;return r.default||r}async function O(e){if(process.env.CI||process.stdout.isTTY===!1)return;let r=e.filter(t=>t&&!y(t));if(r.length===0)return;await(await import("@clack/prompts")).confirm({message:`${r.length===1?"Package is":"Packages are"} required for this config: ${r.join(", ")}. Do you want to install them?`})&&await import("@antfu/install-pkg").then(t=>t.installPackage(r,{dev:!0}))}var J={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 W(e={}){let{files:r=[$],overrides:o={}}=e;await O(["eslint-plugin-astro","astro-eslint-parser","@typescript-eslint/parser"]);let[s,t,i]=await Promise.all([n(import("eslint-plugin-astro")),n(import("astro-eslint-parser")),n(import("@typescript-eslint/parser"))]);return[{name:"mheob/astro/setup",plugins:{astro:s}},{files:r,languageOptions:{globals:s.environments.astro.globals,parser:t,parserOptions:{extraFileExtensions:[".astro"],parser:i},sourceType:"module"},name:"mheob/astro/rules",processor:"astro/client-side-ts",rules:{"astro/missing-client-only-directive-value":"error","astro/no-conflict-set-directives":"error","astro/no-deprecated-astro-canonicalurl":"error","astro/no-deprecated-astro-fetchcontent":"error","astro/no-deprecated-astro-resolve":"error","astro/no-deprecated-getentrybyslug":"error","astro/no-set-html-directive":"off","astro/no-unused-define-vars-in-style":"error","astro/semi":"off","astro/valid-compile":"error",...o}}]}import ke from"eslint-plugin-command/config";async function K(){return[{...ke(),name:"mheob/command/rules"}]}import{default as k}from"eslint-plugin-antfu";import{default as V}from"eslint-plugin-eslint-comments";import*as H from"eslint-plugin-import-x";import{default as X}from"eslint-plugin-n";import{default as z}from"eslint-plugin-perfectionist";import{default as S}from"eslint-plugin-prettier/recommended";import{default as L}from"eslint-plugin-unicorn";import{default as Y}from"eslint-plugin-unused-imports";async function Q(){return[{name:"mheob/eslint-comments/rules",plugins:{"eslint-comments":V},rules:{"eslint-comments/no-aggregating-enable":"error","eslint-comments/no-duplicate-disable":"error","eslint-comments/no-unlimited-disable":"error","eslint-comments/no-unused-enable":"error"}}]}async function Z(e=[]){return[{ignores:[...U,...e],name:"mheob/ignores"}]}async function ee(){return[{name:"mheob/imports/rules",plugins:{antfu:k,import:H},rules:{"antfu/import-dedupe":"error","antfu/no-import-dist":"error","antfu/no-import-node-modules-by-path":"error","import/first":"error","import/no-duplicates":"error","import/no-mutable-exports":"error","import/no-named-default":"error","import/no-self-import":"error","import/no-webpack-loader-syntax":"error"}},{files:["**/bin/**/*",`**/bin.${l}`],name:"mheob/imports/disables/bin",rules:{"antfu/no-import-dist":"off","antfu/no-import-node-modules-by-path":"off"}}]}import E from"globals";async function re(e={}){let{isInEditor:r=!1,overrides:o={}}=e;return[{languageOptions:{ecmaVersion:2022,globals:{...E.browser,...E.es2021,...E.node,document:"readonly",navigator:"readonly",window:"readonly"},parserOptions:{ecmaFeatures:{jsx:!0},ecmaVersion:2022,sourceType:"module"},sourceType:"module"},linterOptions:{reportUnusedDisableDirectives:!0},name:"mheob/javascript/rules",plugins:{"unused-imports":Y},rules:{"accessor-pairs":["error",{enforceForClassMembers:!0,setWithoutGet:!0}],"array-callback-return":"error","block-scoped-var":"error","constructor-super":"error",curly:["error","all"],"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-console":["warn",{allow:["warn","error"]}],"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-else-return":"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-implicit-coercion":["error",{allow:["+","~"]}],"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-lonely-if":"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[const=true]","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-use-before-define":["error",{classes:!1,functions:!1,variables:!0}],"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-useless-return":"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:!1,allowUnboundThis:!0}],"prefer-const":[r?"warn":"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"],"unused-imports/no-unused-imports":r?"warn":"error","unused-imports/no-unused-vars":["error",{args:"after-used",argsIgnorePattern:"^_",ignoreRestSiblings:!0,vars:"all",varsIgnorePattern:"^_"}],"use-isnan":["error",{enforceForIndexOf:!0,enforceForSwitchCase:!0}],"valid-typeof":["error",{requireStringLiterals:!0}],"vars-on-top":"error",yoda:["error","never"],...o}}]}async function oe(){return[{name:"mheob/jsdoc/rules",plugins:{jsdoc:await n(import("eslint-plugin-jsdoc"))},rules:{"jsdoc/check-access":"warn","jsdoc/check-alignment":"warn","jsdoc/check-param-names":"warn","jsdoc/check-property-names":"warn","jsdoc/check-tag-names":"warn","jsdoc/check-types":"warn","jsdoc/check-values":"warn","jsdoc/empty-tags":"warn","jsdoc/implements-on-classes":"warn","jsdoc/multiline-blocks":"warn","jsdoc/no-defaults":"warn","jsdoc/no-multi-asterisks":"warn","jsdoc/no-undefined-types":"warn","jsdoc/require-param":"warn","jsdoc/require-param-description":"warn","jsdoc/require-param-name":"warn","jsdoc/require-property":"warn","jsdoc/require-property-description":"warn","jsdoc/require-property-name":"warn","jsdoc/require-returns":"warn","jsdoc/require-returns-check":"warn","jsdoc/require-returns-description":"warn","jsdoc/require-yields":"warn","jsdoc/require-yields-check":"warn","jsdoc/tag-lines":["warn","always",{count:0,startLines:1}],"jsdoc/valid-types":"warn"}}]}async function te(e={}){let{files:r=[I,P,D],overrides:o={}}=e,[s,t]=await Promise.all([n(import("eslint-plugin-jsonc")),n(import("jsonc-eslint-parser"))]);return[{name:"mheob/jsonc/setup",plugins:{jsonc:s}},{files:r,languageOptions:{parser:t},name:"mheob/jsonc/rules",rules:{"jsonc/no-bigint-literals":"error","jsonc/no-binary-expression":"error","jsonc/no-binary-numeric-literals":"error","jsonc/no-dupe-keys":"error","jsonc/no-escape-sequence-in-identifier":"error","jsonc/no-floating-decimal":"error","jsonc/no-hexadecimal-numeric-literals":"error","jsonc/no-infinity":"error","jsonc/no-multi-str":"error","jsonc/no-nan":"error","jsonc/no-number-props":"error","jsonc/no-numeric-separators":"error","jsonc/no-octal":"error","jsonc/no-octal-escape":"error","jsonc/no-octal-numeric-literals":"error","jsonc/no-parenthesized":"error","jsonc/no-plus-sign":"error","jsonc/no-regexp-literals":"error","jsonc/no-sparse-arrays":"error","jsonc/no-template-literals":"error","jsonc/no-undefined-value":"error","jsonc/no-unicode-codepoint-escapes":"error","jsonc/no-useless-escape":"error","jsonc/space-unary-ops":"error","jsonc/valid-json-number":"error","jsonc/vue-custom-block/no-parsing-error":"error",...o}}]}import{mergeProcessors as Ie,processorPassThrough as Pe}from"eslint-merge-processors";async function se(e={}){let{componentExts:r=[],files:o=[x],overrides:s={}}=e,t=await n(import("eslint-plugin-markdown"));return[{name:"mheob/markdown/setup",plugins:{markdown:t}},{files:o,ignores:[B],name:"mheob/markdown/processor",processor:Ie([t.processors.markdown,Pe])},{files:o,languageOptions:{parser:J},name:"mheob/markdown/parser"},{files:[A,...r.map(i=>`${x}/**/*.${i}`)],languageOptions:{parserOptions:{ecmaFeatures:{impliedStrict:!0}}},name:"mheob/markdown/disables",rules:{"import/newline-after-import":"off","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/await-thenable":"off","ts/consistent-type-imports":"off","ts/dot-notation":"off","ts/no-floating-promises":"off","ts/no-for-in-array":"off","ts/no-implied-eval":"off","ts/no-misused-promises":"off","ts/no-namespace":"off","ts/no-redeclare":"off","ts/no-require-imports":"off","ts/no-throw-literal":"off","ts/no-unnecessary-type-assertion":"off","ts/no-unsafe-argument":"off","ts/no-unsafe-assignment":"off","ts/no-unsafe-call":"off","ts/no-unsafe-member-access":"off","ts/no-unsafe-return":"off","ts/no-unused-vars":"off","ts/no-use-before-define":"off","ts/no-var-requires":"off","ts/restrict-plus-operands":"off","ts/restrict-template-expressions":"off","ts/unbound-method":"off","unicode-bom":"off","unused-imports/no-unused-imports":"off","unused-imports/no-unused-vars":"off",...s}}]}async function ne(){return[{name:"mheob/node/rules",plugins:{node:X},rules:{"node/handle-callback-err":["error","^(err|error)$"],"node/no-deprecated-api":"error","node/no-exports-assign":"error","node/no-new-require":"error","node/no-path-concat":"error","node/prefer-global/buffer":["error","never"],"node/prefer-global/process":["error","never"],"node/process-exit-as-throw":"error"}}]}async function ie(){return[{name:"mheob/perfectionist/setup",plugins:{perfectionist:z}},{name:"mheob/perfectionist/rules",rules:{"perfectionist/sort-array-includes":["error",{groupKind:"literals-first",type:"natural"}],"perfectionist/sort-classes":["error",{type:"natural"}],"perfectionist/sort-enums":["error",{type:"natural"}],"perfectionist/sort-exports":["error",{type:"natural"}],"perfectionist/sort-imports":["error",{groups:["type",["builtin-type","builtin"],["external-type","external"],["internal-type","internal"],["parent-type","parent","sibling-type","sibling","index-type","index"],"side-effect","style","object","unknown"],internalPattern:["^@/.*"],type:"natural"}],"perfectionist/sort-interfaces":["error",{type:"natural"}],"perfectionist/sort-intersection-types":["error",{type:"natural"}],"perfectionist/sort-jsx-props":["error",{groups:["multiline","unknown","shorthand"],type:"natural"}],"perfectionist/sort-maps":["error",{type:"natural"}],"perfectionist/sort-named-exports":["error",{type:"natural"}],"perfectionist/sort-named-imports":["error",{type:"natural"}],"perfectionist/sort-object-types":["error",{type:"natural"}],"perfectionist/sort-objects":["error",{type:"natural"}],"perfectionist/sort-union-types":["error",{type:"natural"}]}}]}async function ae(e={}){let{files:r=[M],overrides:o={}}=e;return[{...S,name:"mheob/prettier/setup"},{files:r,name:"mheob/prettier/rules",rules:{...S.rules,"prettier/prettier":"warn",...o}}]}var Fe=["vite"],_e=["@remix-run/node","@remix-run/react","@remix-run/serve","@remix-run/dev"],Se=["next"];async function pe(e={}){let{files:r=[w,T],overrides:o={}}=e;await O(["@eslint-react/eslint-plugin","eslint-plugin-react-hooks","eslint-plugin-react-refresh"]);let s=e?.tsconfigPath?C(e.tsconfigPath):void 0,t=!!s,[i,f,b,h]=await Promise.all([n(import("@eslint-react/eslint-plugin")),n(import("eslint-plugin-react-hooks")),n(import("eslint-plugin-react-refresh")),n(import("@typescript-eslint/parser"))]),d=Fe.some(m=>y(m)),p=_e.some(m=>y(m)),u=Se.some(m=>y(m)),a=i.configs.all.plugins;return[{name:"mheob/react/setup",plugins:{react:a["@eslint-react"],"react-dom":a["@eslint-react/dom"],"react-hooks":f,"react-hooks-extra":a["@eslint-react/hooks-extra"],"react-naming-convention":a["@eslint-react/naming-convention"],"react-refresh":b,"react-web-api":a["@eslint-react/web-api"]}},{files:r,languageOptions:{parser:h,parserOptions:{ecmaFeatures:{jsx:!0},...t?{project:s}:{}},sourceType:"module"},name:"mheob/react/rules",rules:{"react-dom/no-children-in-void-dom-elements":"warn","react-dom/no-dangerously-set-innerhtml":"warn","react-dom/no-dangerously-set-innerhtml-with-children":"error","react-dom/no-find-dom-node":"error","react-dom/no-missing-button-type":"warn","react-dom/no-missing-iframe-sandbox":"warn","react-dom/no-namespace":"error","react-dom/no-render-return-value":"error","react-dom/no-script-url":"warn","react-dom/no-unsafe-iframe-sandbox":"warn","react-dom/no-unsafe-target-blank":"warn","react-hooks/exhaustive-deps":"warn","react-hooks/rules-of-hooks":"error","react-refresh/only-export-components":["warn",{allowConstantExport:d,allowExportNames:[...u?["config","generateStaticParams","metadata","generateMetadata","viewport","generateViewport"]:[],...p?["meta","links","headers","loader","action"]:[]]}],"react-web-api/no-leaked-event-listener":"warn","react-web-api/no-leaked-interval":"warn","react-web-api/no-leaked-resize-observer":"warn","react-web-api/no-leaked-timeout":"warn","react/ensure-forward-ref-using-ref":"warn","react/no-access-state-in-setstate":"error","react/no-array-index-key":"warn","react/no-children-count":"warn","react/no-children-for-each":"warn","react/no-children-map":"warn","react/no-children-only":"warn","react/no-children-prop":"warn","react/no-children-to-array":"warn","react/no-clone-element":"warn","react/no-comment-textnodes":"warn","react/no-component-will-mount":"error","react/no-component-will-receive-props":"error","react/no-component-will-update":"error","react/no-create-ref":"error","react/no-direct-mutation-state":"error","react/no-duplicate-key":"error","react/no-implicit-key":"error","react/no-missing-key":"error","react/no-nested-components":"warn","react/no-redundant-should-component-update":"error","react/no-set-state-in-component-did-mount":"warn","react/no-set-state-in-component-did-update":"warn","react/no-set-state-in-component-will-update":"warn","react/no-string-refs":"error","react/no-unsafe-component-will-mount":"warn","react/no-unsafe-component-will-receive-props":"warn","react/no-unsafe-component-will-update":"warn","react/no-unstable-context-value":"error","react/no-unstable-default-props":"error","react/no-unused-class-component-members":"warn","react/no-unused-state":"warn","react/no-useless-fragment":"warn","react/prefer-destructuring-assignment":"warn","react/prefer-shorthand-boolean":"warn","react/prefer-shorthand-fragment":"warn",...t?{"react/no-leaked-conditional-rendering":"warn"}:{},...o}}]}async function le(){return[{files:["**/package.json"],name:"mheob/sort/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","categories","keywords","icon","homepage","bugs","repository","funding","license","author","maintainers","contributors","sideEffects","type","exports","main","unpkg","jsdelivr","module","types","typesVersions","typings","bin","files","workspaces","scripts","contributes","activationEvents","husky","simple-git-hooks","commitlint","lint-staged","prettier","eslintConfig","eslintIgnore","release","stylelint","ava","jest","jest-junit","jest-stare","mocha","nyc","c8","resolutions","dependencies","devDependencies","peerDependencies","peerDependenciesMeta","optionalDependencies","bundledDependencies","bundleDependencies","packageManager","engines","pnpm"],pathPattern:"^$"},{order:{type:"asc"},pathPattern:"^scripts$"},{order:{type:"asc"},pathPattern:"^(?:dev|peer|optional|bundled)?[Dd]ependencies(Meta)?$"},{order:{type:"asc"},pathPattern:"^(?:resolutions|overrides|pnpm.overrides)$"},{order:["types","import","require","default"],pathPattern:"^exports.*$"},{order:["pre-commit","prepare-commit-msg","commit-msg","post-commit","pre-rebase","post-rewrite","post-checkout","post-merge","pre-push","pre-auto-gc"],pathPattern:"^(?:gitHooks|husky|simple-git-hooks)$"}]}}]}function ce(){return[{files:["**/tsconfig.json","**/tsconfig.*.json"],name:"mheob/sort/tsconfig-json",rules:{"jsonc/sort-keys":["error",{order:["extends","compilerOptions","references","files","include","exclude"],pathPattern:"^$"},{order:["incremental","composite","tsBuildInfoFile","disableSourceOfProjectReferenceRedirect","disableSolutionSearching","disableReferencedProjectLoad","target","jsx","jsxFactory","jsxFragmentFactory","jsxImportSource","lib","moduleDetection","noLib","reactNamespace","useDefineForClassFields","emitDecoratorMetadata","experimentalDecorators","baseUrl","rootDir","rootDirs","customConditions","module","moduleResolution","moduleSuffixes","noResolve","paths","resolveJsonModule","resolvePackageJsonExports","resolvePackageJsonImports","typeRoots","types","allowArbitraryExtensions","allowImportingTsExtensions","allowUmdGlobalAccess","allowJs","checkJs","maxNodeModuleJsDepth","strict","strictBindCallApply","strictFunctionTypes","strictNullChecks","strictPropertyInitialization","allowUnreachableCode","allowUnusedLabels","alwaysStrict","exactOptionalPropertyTypes","noFallthroughCasesInSwitch","noImplicitAny","noImplicitOverride","noImplicitReturns","noImplicitThis","noPropertyAccessFromIndexSignature","noUncheckedIndexedAccess","noUnusedLocals","noUnusedParameters","useUnknownInCatchVariables","declaration","declarationDir","declarationMap","downlevelIteration","emitBOM","emitDeclarationOnly","importHelpers","importsNotUsedAsValues","inlineSourceMap","inlineSources","mapRoot","newLine","noEmit","noEmitHelpers","noEmitOnError","outDir","outFile","preserveConstEnums","preserveValueImports","removeComments","sourceMap","sourceRoot","stripInternal","allowSyntheticDefaultImports","esModuleInterop","forceConsistentCasingInFileNames","isolatedModules","preserveSymlinks","verbatimModuleSyntax","skipDefaultLibCheck","skipLibCheck"],pathPattern:"^compilerOptions$"}]}}]}async function me(e={}){let{files:r=[F],overrides:o={}}=e;await O(["eslint-plugin-svelte"]);let[s,t]=await Promise.all([n(import("eslint-plugin-svelte")),n(import("svelte-eslint-parser"))]);return[{name:"mheob/svelte/setup",plugins:{svelte:s}},{files:r,languageOptions:{parser:t,parserOptions:{extraFileExtensions:[".svelte"],parser:e.typescript?await n(import("@typescript-eslint/parser")):null}},name:"mheob/svelte/rules",processor:s.processors[".svelte"],rules:{"import/no-mutable-exports":"off","no-undef":"off","no-unused-vars":["error",{args:"none",caughtErrors:"none",ignoreRestSiblings:!0,vars:"all",varsIgnorePattern:String.raw`^(\$\$Props$|\$\$Events$|\$\$Slots$)`}],"svelte/comment-directive":"error","svelte/no-at-debug-tags":"warn","svelte/no-at-html-tags":"error","svelte/no-dupe-else-if-blocks":"error","svelte/no-dupe-style-properties":"error","svelte/no-dupe-use-directives":"error","svelte/no-dynamic-slot-name":"error","svelte/no-export-load-in-svelte-module-in-kit-pages":"error","svelte/no-inner-declarations":"error","svelte/no-not-function-handler":"error","svelte/no-object-in-text-mustaches":"error","svelte/no-reactive-functions":"error","svelte/no-reactive-literals":"error","svelte/no-shorthand-style-property-overrides":"error","svelte/no-unknown-style-directive-property":"error","svelte/no-unused-svelte-ignore":"error","svelte/no-useless-mustaches":"error","svelte/require-store-callbacks-use-set-param":"error","svelte/system":"error","svelte/valid-compile":"error","svelte/valid-each-key":"error","unused-imports/no-unused-vars":["error",{args:"after-used",argsIgnorePattern:"^_",vars:"all",varsIgnorePattern:String.raw`^(_|\$\$Props$|\$\$Events$|\$\$Slots$)`}],...o}}]}var R;async function ue(e={}){let{files:r=N,isInEditor:o=!1,overrides:s={}}=e,[t,i]=await Promise.all([n(import("@vitest/eslint-plugin")),n(import("eslint-plugin-no-only-tests"))]);return R=R||{...t,rules:{...t.rules,...i.rules}},[{name:"mheob/test/setup",plugins:{test:R}},{files:r,name:"mheob/test/rules",rules:{"node/prefer-global/process":"off","test/consistent-test-it":["error",{fn:"it",withinDescribe:"it"}],"test/no-identical-title":"error","test/no-import-node-test":"error","test/no-only-tests":o?"warn":"error","test/prefer-hooks-in-order":"error","test/prefer-lowercase-title":"error",...s}}]}async function fe(e={}){let{files:r=[G],overrides:o={}}=e,[s,t]=await Promise.all([n(import("eslint-plugin-toml")),n(import("toml-eslint-parser"))]);return[{name:"mheob/toml/setup",plugins:{toml:s}},{files:r,languageOptions:{parser:t},name:"mheob/toml/rules",rules:{"toml/comma-style":"error","toml/keys-order":"error","toml/no-space-dots":"error","toml/no-unreadable-number-separator":"error","toml/precision-of-fractional-seconds":"error","toml/precision-of-integer":"error","toml/tables-order":"error","toml/vue-custom-block/no-parsing-error":"error",...o}}]}import Le from"node:process";async function de(e={}){let{componentExts:r=[],overrides:o={},parserOptions:s={}}=e,t=e.files??[g,...r.map(a=>`**/*.${a}`)],i=e.filesTypeAware??[w,T],f=e?.tsconfigPath?C(e.tsconfigPath):void 0,b=!!f,h={"dot-notation":"off","no-implied-eval":"off","no-throw-literal":"off","ts/await-thenable":"error","ts/dot-notation":["error",{allowKeywords:!0}],"ts/no-explicit-any":"warn","ts/no-floating-promises":"error","ts/no-for-in-array":"error","ts/no-implied-eval":"error","ts/no-misused-promises":"error","ts/no-throw-literal":"error","ts/no-unnecessary-type-assertion":"error","ts/no-unsafe-argument":"error","ts/no-unsafe-assignment":"error","ts/no-unsafe-call":"error","ts/no-unsafe-member-access":"error","ts/no-unsafe-return":"error","ts/restrict-plus-operands":"error","ts/restrict-template-expressions":"error","ts/unbound-method":"error"},[d,p]=await Promise.all([n(import("@typescript-eslint/eslint-plugin")),n(import("@typescript-eslint/parser"))]);function u(a,m,v){return{files:m,...v?{ignores:v}:{},languageOptions:{parser:p,parserOptions:{extraFileExtensions:r.map(Oe=>`.${Oe}`),sourceType:"module",...a?{project:f,tsconfigRootDir:Le.cwd()}:{},...s}},name:`antfu/typescript/${a?"type-aware-parser":"parser"}`}}return[{name:"mheob/typescript/setup",plugins:{antfu:k,ts:d}},...b?[u(!0,i),u(!1,t,i)]:[u(!1,t)],{files:t,name:"mheob/typescript/rules",rules:{...j(d.configs["eslint-recommended"].overrides[0].rules,{"@typescript-eslint":"ts"}),...j(d.configs.strict.rules,{"@typescript-eslint":"ts"}),"no-dupe-class-members":"off","no-redeclare":"off","no-use-before-define":"off","no-useless-constructor":"off","ts/ban-ts-comment":["error",{"ts-ignore":"allow-with-description"}],"ts/consistent-type-definitions":["error","interface"],"ts/consistent-type-imports":["error",{disallowTypeAnnotations:!1,prefer:"type-imports"}],"ts/method-signature-style":["error","property"],"ts/no-dupe-class-members":"error","ts/no-dynamic-delete":"off","ts/no-explicit-any":"warn","ts/no-extraneous-class":"off","ts/no-import-type-side-effects":"error","ts/no-invalid-void-type":"off","ts/no-non-null-assertion":"warn","ts/no-redeclare":"error","ts/no-require-imports":"error","ts/no-restricted-types":"error","ts/no-unused-vars":"off","ts/no-use-before-define":["error",{classes:!1,functions:!1,variables:!0}],"ts/no-useless-constructor":"off","ts/triple-slash-reference":"off","ts/unified-signatures":"off",...o}},...b?[{files:i,name:"mheob/typescript/rules-type-aware",rules:{...f?h:{},...o}}]:[],{files:["**/*.d.ts"],name:"mheob/typescript/disables/dts",rules:{"eslint-comments/no-unlimited-disable":"off","import/no-duplicates":"off","no-restricted-syntax":"off","unused-imports/no-unused-vars":"off"}},{files:["**/*.{test,spec}.ts?(x)"],name:"mheob/typescript/disables/test",rules:{"no-unused-expressions":"off"}}]}async function ge(e={}){let{overrides:r={}}=e;return[{...L.configs["flat/recommended"],name:"mheob/unicorn/rules",rules:{...L.configs["flat/recommended"].rules,"unicorn/filename-case":["error",{cases:{kebabCase:!0},ignore:[/readme\.md$/i]}],"unicorn/no-array-reduce":"off","unicorn/no-negated-condition":"off","unicorn/no-null":"off","unicorn/prevent-abbreviations":["warn",{replacements:{args:!1,doc:!1,env:!1,i:!1,params:!1,props:!1,temp:!1,tmp:!1}}],...r}},{files:["**/*.jsx","**/*.tsx"],name:"mheob/unicorn/rules/react",rules:{"unicorn/filename-case":["error",{cases:{kebabCase:!0,pascalCase:!0}}]}}]}async function ye(e={}){let{files:r=[_],overrides:o={}}=e,[s,t]=await Promise.all([n(import("eslint-plugin-yml")),n(import("yaml-eslint-parser"))]);return[{name:"mheob/yaml/setup",plugins:{yaml:s}},{files:r,languageOptions:{parser:t},name:"mheob/yaml/rules",rules:{"yaml/block-mapping":"error","yaml/block-sequence":"error","yaml/no-empty-key":"error","yaml/no-empty-sequence-entry":"error","yaml/no-irregular-whitespace":"error","yaml/plain-scalar":"error","yaml/vue-custom-block/no-parsing-error":"error",...o}}]}async function be(){return[{files:["**/bin/**/*",`**/bin.${l}`],name:"mheob/disables/bin",rules:{"antfu/no-import-dist":"off","antfu/no-import-node-modules-by-path":"off"}},{files:[`**/*.${l}`],name:"mheob/disables/conflicts",rules:{"import/order":"off","sort-imports":"off"}},{files:[`**/*.config.${l}`,`**/*.config.*.${l}`],name:"mheob/disables/config-files",rules:{"antfu/no-top-level-await":"off","no-console":"off","ts/explicit-function-return-type":"off"}},{files:[`**/cli/${g}`,`**/cli.${l}`],name:"mheob/disables/cli",rules:{"antfu/no-top-level-await":"off","no-console":"off"}},{files:["**/*.js","**/*.cjs"],name:"mheob/disables/cjs",rules:{"ts/no-require-imports":"off"}},{files:["**/*.d.?([cm])ts"],name:"mheob/disables/dts",rules:{"eslint-comments/no-unlimited-disable":"off","import/no-duplicates":"off","no-restricted-syntax":"off","unused-imports/no-unused-vars":"off"}},{files:[`**/scripts/${g}`],name:"mheob/disables/scripts",rules:{"antfu/no-top-level-await":"off","no-console":"off","ts/explicit-function-return-type":"off"}}]}var De=["name","files","ignores","languageOptions","linterOptions","processor","plugins","rules","settings"],Be={"@eslint-react":"react","@eslint-react/dom":"react-dom","@eslint-react/hooks-extra":"react-hooks-extra","@eslint-react/naming-convention":"react-naming-convention","@typescript-eslint":"ts","import-x":"import",n:"node",vitest:"test",yml:"yaml"};function he(e,r){return typeof e[r]=="boolean"?{}:e[r]||{}}function c(e,r){let o=he(e,r);return{...e.overrides?.[r],..."overrides"in o?o.overrides:{}}}function Ge(e={}){let{gitignore:r=!0,isInEditor:o=!!((process.env.VSCODE_PID||process.env.VSCODE_CWD||process.env.JETBRAINS_IDE||process.env.VIM)&&!process.env.CI)}=e,s=[];return r&&(typeof r!="boolean"?s.push(n(import("eslint-config-flat-gitignore")).then(t=>[t(r)])):Ee.existsSync(".gitignore")&&s.push(n(import("eslint-config-flat-gitignore")).then(t=>[t()]))),s.push(Z(e.ignores),re({isInEditor:o,overrides:c(e,"javascript")}),Q(),ne(),oe(),ee(),K(),ie()),s}function ve(e={},...r){let{astro:o=!1,autoRenamePlugins:s=!0,componentExts:t=[],isInEditor:i=!!((process.env.VSCODE_PID||process.env.VSCODE_CWD||process.env.JETBRAINS_IDE||process.env.VIM)&&!process.env.CI),react:f=!1,svelte:b=!1,typescript:h=y("typescript"),unicorn:d=!0}=e,p=Ge(e);h&&p.push(de({...he(e,"typescript"),componentExts:t,overrides:c(e,"typescript")})),d&&p.push(ge({overrides:c(e,"unicorn")})),(e.test??!0)&&p.push(ue({isInEditor:i,overrides:c(e,"test")})),f&&p.push(pe({overrides:c(e,"react"),tsconfigPath:c(e,"typescript").tsconfigPath})),b&&p.push(me({overrides:c(e,"svelte"),typescript:!!h})),o&&p.push(W({overrides:c(e,"astro")})),(e.jsonc??!0)&&p.push(te({overrides:c(e,"jsonc")}),le(),ce()),(e.yaml??!0)&&p.push(ye({overrides:c(e,"yaml")})),(e.toml??!0)&&p.push(fe({overrides:c(e,"toml")})),(e.markdown??!0)&&p.push(se({componentExts:t,overrides:c(e,"markdown")})),p.push(be(),ae({overrides:c(e,"prettier")}));let u=De.reduce((m,v)=>(v in e&&(m[v]=e[v]),m),{});Object.keys(u).length>0&&p.push([u]);let a=new Re;return a=a.append(...p,...r),s&&(a=a.renamePlugins(Be)),i&&(a=a.disableRulesFix(["unused-imports/no-unused-imports","test/no-only-tests","prefer-const"],{builtinRules:()=>import(["eslint","use-at-your-own-risk"].join("/")).then(m=>m.builtinRules)})),a}var Jo=ve;export{M as GLOB_ALL_SRC,$ as GLOB_ASTRO,Ne as GLOB_CSS,U as GLOB_EXCLUDE,Je as GLOB_GRAPHQL,we as GLOB_HTML,$e as GLOB_JS,I as GLOB_JSON,P as GLOB_JSON5,D as GLOB_JSONC,Ae as GLOB_JSX,Ue as GLOB_LESS,x as GLOB_MARKDOWN,A as GLOB_MARKDOWN_CODE,B as GLOB_MARKDOWN_IN_MARKDOWN,Me as GLOB_POSTCSS,qe as GLOB_SCSS,g as GLOB_SRC,l as GLOB_SRC_EXT,xe as GLOB_STYLE,F as GLOB_SVELTE,N as GLOB_TESTS,G as GLOB_TOML,w as GLOB_TS,T as GLOB_TSX,_ as GLOB_YAML,W as astro,Ke as combine,K as command,Q as comments,Jo as default,Be as defaultPluginRenaming,O as ensurePackages,y as existsPackage,c as getOverrides,Z as ignores,ee as imports,n as interopDefault,re as javascript,oe as jsdoc,te as jsonc,se as markdown,ve as mheob,ne as node,J as parserPlain,ie as perfectionist,ae as prettier,pe as react,He as renamePluginInConfigs,j as renameRules,he as resolveSubOptions,le as sortPackageJson,ce as sortTsconfig,me as svelte,ue as test,C as toArray,fe as toml,de as typescript,ge as unicorn,ye as yaml};