@neosjs/eslint-config
Version:
Neosjs's ESLint config
10 lines (7 loc) • 39.5 kB
JavaScript
/*!
* @neosjs/eslint-config
* Version: 1.3.2
* ReleaseTime: 2024-09-21T03:22:36.727Z
* Copyright (c) 2021-PRESENT NeosJS
*/
import{isPackageExists as X}from"local-pkg";import{FlatConfigComposer as rr}from"eslint-flat-config-utils";import Ne from"eslint-plugin-command/config";async function z(){return[{...Ne(),name:"neosjs/command/rules"}]}import{default as Q}from"@eslint-community/eslint-plugin-eslint-comments";import{default as h}from"eslint-plugin-antfu";import*as Y from"eslint-plugin-import-x";import{default as Z}from"eslint-plugin-n";import{default as ee}from"eslint-plugin-perfectionist";import{default as G}from"eslint-plugin-unicorn";import{default as re}from"eslint-plugin-unused-imports";async function oe(){return[{name:"neosjs/eslint-comments/rules",plugins:{"eslint-comments":Q},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"}}]}var y="?([cm])[jt]s?(x)",T="**/*.?([cm])[jt]s?(x)",vr="**/*.?([cm])js",te="**/*.?([cm])jsx",D="**/*.?([cm])ts",P="**/*.?([cm])tsx",Ue="**/*.{c,le,sc}ss",se="**/*.css",ne="**/*.{p,post}css",ie="**/*.less",ae="**/*.scss",A="**/*.json",q="**/*.json5",pe="**/*.jsonc",j="**/*.md",le="**/*.md/*.md",Me="**/*.svelte",N="**/*.vue",U="**/*.y?(a)ml",ce="**/*.toml",M="**/*.xml",V="**/*.htm?(l)",wr="**/*.astro",jr="**/*.astro/*.ts",me="**/*.{g,graph}ql",ue=`${j}/${T}`,fe=[`**/__tests__/**/*.${y}`,`**/*.spec.${y}`,`**/*.test.${y}`,`**/*.bench.${y}`,`**/*.benchmark.${y}`],hr=[T,Ue,A,q,j,Me,N,U,M,V],de=["**/node_modules","**/dist","**/public","**/lib","**/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","**/vite.config.*.timestamp-*","**/CHANGELOG*.md","**/*.min.*","**/LICENSE*","**/__snapshots__","**/auto-import?(s).d.ts","**/components.d.ts"];async function kr(){return[{files:[`**/scripts/${T}`],name:"neosjs/disables/scripts",rules:{"neosjs/no-top-level-await":"off","no-console":"off","ts/explicit-function-return-type":"off"}},{files:[`**/cli/${T}`,`**/cli.${y}`],name:"neosjs/disables/cli",rules:{"neosjs/no-top-level-await":"off","no-console":"off"}},{files:["**/bin/**/*",`**/bin.${y}`],name:"neosjs/disables/bin",rules:{"neosjs/no-import-dist":"off","neosjs/no-import-node-modules-by-path":"off"}},{files:["**/*.d.?([cm])ts"],name:"neosjs/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}.([tj])s?(x)"],name:"neosjs/disables/test",rules:{"neosjs/no-top-level-await":"off","no-unused-expressions":"off"}},{files:["**/*.js","**/*.cjs"],name:"neosjs/disables/cjs",rules:{"ts/no-require-imports":"off"}},{files:[`**/*.config.${y}`,`**/*.config.*.${y}`],name:"neosjs/disables/config-files",rules:{"neosjs/no-top-level-await":"off","no-console":"off","ts/explicit-function-return-type":"off"}}]}import{isPackageExists as Je}from"local-pkg";import C from"node:process";import{fileURLToPath as Ve}from"node:url";import{isPackageExists as ye}from"local-pkg";var $e=Ve(new URL(".",import.meta.url)),We=ye("@antfu/eslint-config"),g={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 Er(...e){return(await Promise.all(e)).flat()}function _(e,r){return Object.fromEntries(Object.entries(e).map(([t,o])=>{for(let[s,n]of Object.entries(r))if(t.startsWith(`${s}/`))return[n+t.slice(s.length),o];return[t,o]}))}function Rr(e,r){return e.map(t=>{let o={...t};return o.rules&&(o.rules=_(o.rules,r)),o.plugins&&(o.plugins=Object.fromEntries(Object.entries(o.plugins).map(([s,n])=>s in r?[r[s],n]:[s,n]))),o})}function E(e){return Array.isArray(e)?e:[e]}async function i(e){let r=await e;return r.default||r}function $(e){return ye(e,{paths:[$e]})}async function S(e){if(C.env.CI||C.stdout.isTTY===!1||We===!1)return;let r=e.filter(s=>s&&!$(s));if(r.length===0)return;await(await import("@clack/prompts")).confirm({message:`\u6B64\u914D\u7F6E\u9700\u8981: ${r.join(", ")} \u4F9D\u8D56\u5305\u3002 \u60A8\u8981\u5B89\u88C5\u5B83\u4EEC\u5417?`})&&await import("@antfu/install-pkg").then(s=>s.installPackage(r,{dev:!0}))}function ge(){return!!((C.env.VSCODE_PID||C.env.VSCODE_CWD||C.env.JETBRAINS_IDE||C.env.VIM||C.env.NVIM)&&!C.env.CI)}var W={commaDangle:"never",indent:2,jsx:!0,quotes:"single"};async function Oe(e={}){let{commaDangle:r,indent:t,jsx:o,lessOpinionated:s=!1,overrides:n={},quotes:u,semi:c}={...W,...e},d=await i(import("@stylistic/eslint-plugin")),f=d.configs.customize({commaDangle:r,flat:!0,indent:t,jsx:o,pluginName:"style",quotes:u,semi:c});return[{name:"neosjs/stylistic/rules",plugins:{neosjs:h,style:d},rules:{...f.rules,"neosjs/consistent-list-newline":"error",...s?{curly:["error","all"]}:{"neosjs/curly":"error","neosjs/if-newline":"off","neosjs/top-level-function":"off","style/brace-style":["error","1tbs",{allowSingleLine:!0}]},...n}}]}async function be(e={},r={}){if(e===!0&&(e={css:!0,graphql:!0,html:!0,markdown:!0,slidev:Je("@slidev/cli"),xml:$("@prettier/plugin-xml")}),await S(["eslint-plugin-format",e.markdown&&e.slidev?"prettier-plugin-slidev":void 0,e.xml?"@prettier/plugin-xml":void 0]),e.slidev&&e.markdown!==!0&&e.markdown!=="prettier")throw new Error("`slidev` option only works when `markdown` is enabled with `prettier`");let{indent:t,quotes:o,semi:s}={...W,...r},n=Object.assign({endOfLine:"auto",printWidth:120,semi:s,singleQuote:o==="single",tabWidth:typeof t=="number"?t:2,trailingComma:"none",useTabs:t==="tab"},e.prettierOptions||{}),u={xmlQuoteAttributes:"double",xmlSelfClosingSpace:!0,xmlSortAttributesByKey:!1,xmlWhitespaceSensitivity:"ignore"},c=Object.assign({indentWidth:typeof t=="number"?t:2,quoteStyle:o==="single"?"preferSingle":"preferDouble",useTabs:t==="tab"},e.dprintOptions||{}),f=[{name:"neosjs/formatter/setup",plugins:{format:await i(import("eslint-plugin-format"))}}];if(e.css&&f.push({files:[se,ne],languageOptions:{parser:g},name:"neosjs/formatter/css",rules:{"format/prettier":["error",{...n,parser:"css"}]}},{files:[ae],languageOptions:{parser:g},name:"neosjs/formatter/scss",rules:{"format/prettier":["error",{...n,parser:"scss"}]}},{files:[ie],languageOptions:{parser:g},name:"neosjs/formatter/less",rules:{"format/prettier":["error",{...n,parser:"less"}]}}),e.html&&f.push({files:[V],languageOptions:{parser:g},name:"neosjs/formatter/html",rules:{"format/prettier":["error",{...n,parser:"html"}]}}),e.xml&&f.push({files:[M],languageOptions:{parser:g},name:"neosjs/formatter/xml",rules:{"format/prettier":["error",{...u,...n,parser:"xml",plugins:["@prettier/plugin-xml"]}]}}),e.markdown){let b=e.markdown===!0?"prettier":e.markdown,x=e.slidev?e.slidev===!0?["**/slides.md"]:e.slidev.files:[];f.push({files:[j],ignores:x,languageOptions:{parser:g},name:"neosjs/formatter/markdown",rules:{[`format/${b}`]:["error",b==="prettier"?{...n,embeddedLanguageFormatting:"off",parser:"markdown"}:{...c,language:"markdown"}]}}),e.slidev&&f.push({files:x,languageOptions:{parser:g},name:"neosjs/formatter/slidev",rules:{"format/prettier":["error",{...n,embeddedLanguageFormatting:"off",parser:"slidev",plugins:["prettier-plugin-slidev"]}]}})}return e.graphql&&f.push({files:[me],languageOptions:{parser:g},name:"neosjs/formatter/graphql",rules:{"format/prettier":["error",{...n,parser:"graphql"}]}}),f}async function xe(e=[]){return[{ignores:[...de,...e],name:"neosjs/ignores"}]}async function ve(e={}){let{stylistic:r=!0}=e;return[{name:"neosjs/imports/rules",plugins:{import:Y,neosjs:h},rules:{"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","import/order":"error","neosjs/import-dedupe":"error","neosjs/no-import-dist":"error","neosjs/no-import-node-modules-by-path":"error",...r?{"import/newline-after-import":["error",{count:1}]}:{}}},{files:["**/bin/**/*",`**/bin.${y}`],name:"neosjs/imports/disables/bin",rules:{"neosjs/no-import-dist":"off","neosjs/no-import-node-modules-by-path":"off"}}]}import J from"globals";async function we(e={}){let{isInEditor:r=!1,overrides:t={}}=e;return[{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},name:"neosjs/javascript/setup"},{name:"neosjs/javascript/rules",plugins:{neosjs:h,"unused-imports":re},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"],"neosjs/no-top-level-await":"error","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":["off",{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-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[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":["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","sort-imports":["error",{allowSeparatedGroups:!1,ignoreCase:!1,ignoreDeclarationSort:!0,ignoreMemberSort:!1,memberSyntaxSortOrder:["none","all","multiple","single"]}],"symbol-description":"error","unicode-bom":["error","never"],"unused-imports/no-unused-imports":r?"off":"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"],...t}}]}async function je(e={}){let{stylistic:r=!0}=e;return[{name:"neosjs/jsdoc/rules",plugins:{jsdoc:await i(import("eslint-plugin-jsdoc"))},rules:{"jsdoc/check-access":"warn","jsdoc/check-param-names":"warn","jsdoc/check-property-names":"warn","jsdoc/check-types":"warn","jsdoc/empty-tags":"warn","jsdoc/implements-on-classes":"warn","jsdoc/no-defaults":"warn","jsdoc/no-multi-asterisks":"warn","jsdoc/require-param-name":"warn","jsdoc/require-property":"warn","jsdoc/require-property-description":"warn","jsdoc/require-property-name":"warn","jsdoc/require-returns-check":"warn","jsdoc/require-returns-description":"warn","jsdoc/require-yields-check":"warn",...r?{"jsdoc/check-alignment":"warn","jsdoc/multiline-blocks":"warn"}:{}}}]}async function he(e={}){let{files:r=[A,q,pe],overrides:t={},stylistic:o=!0}=e,{indent:s=2}=typeof o=="boolean"?{}:o,[n,u]=await Promise.all([i(import("eslint-plugin-jsonc")),i(import("jsonc-eslint-parser"))]);return[{name:"neosjs/jsonc/setup",plugins:{jsonc:n}},{files:r,languageOptions:{parser:u},name:"neosjs/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?{"jsonc/array-bracket-spacing":["error","never"],"jsonc/comma-dangle":["error","never"],"jsonc/comma-style":["error","last"],"jsonc/indent":["error",s],"jsonc/key-spacing":["error",{afterColon:!0,beforeColon:!1}],"jsonc/object-curly-newline":["error",{consistent:!0,multiline:!0}],"jsonc/object-curly-spacing":["error","always"],"jsonc/object-property-newline":["error",{allowMultiplePropertiesPerLine:!0}],"jsonc/quote-props":"error","jsonc/quotes":"error"}:{},...t}}]}async function Ce(){return[{files:[te,P],languageOptions:{parserOptions:{ecmaFeatures:{jsx:!0}}},name:"neosjs/jsx/setup"}]}import{mergeProcessors as Ke,processorPassThrough as He}from"eslint-merge-processors";async function Te(e={}){let{componentExts:r=[],files:t=[j],overrides:o={}}=e,s=await i(import("@eslint/markdown"));return[{name:"neosjs/markdown/setup",plugins:{markdown:s}},{files:t,ignores:[le],name:"neosjs/markdown/processor",processor:Ke([s.processors.markdown,He])},{files:t,languageOptions:{parser:g},name:"neosjs/markdown/parser"},{files:[ue,...r.map(n=>`${j}/**/*.${n}`)],languageOptions:{parserOptions:{ecmaFeatures:{impliedStrict:!0}}},name:"neosjs/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","style/comma-dangle":"off","style/eol-last":"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","ts/no-var-requires":"off","unicode-bom":"off","unused-imports/no-unused-imports":"off","unused-imports/no-unused-vars":"off",...o}}]}async function Se(){return[{name:"neosjs/node/rules",plugins:{node:Z},rules:{"n/prefer-global/process":"off","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":"off","node/prefer-global/process":"off","node/process-exit-as-throw":"error"}}]}async function ke(){return[{name:"neosjs/perfectionist/setup",plugins:{perfectionist:ee},rules:{"perfectionist/sort-exports":["error",{order:"asc",type:"natural"}],"perfectionist/sort-imports":["off",{groups:["builtin","external","type",["internal","internal-type"],["parent","sibling","index"],["parent-type","sibling-type","index-type"],"side-effect","object","unknown"],newlinesBetween:"ignore",order:"asc",type:"natural"}],"perfectionist/sort-named-exports":["error",{order:"asc",type:"natural"}],"perfectionist/sort-named-imports":["off",{order:"asc",type:"natural"}]}}]}import{isPackageExists as K}from"local-pkg";var Xe=["vite"],ze=["@remix-run/node","@remix-run/react","@remix-run/serve","@remix-run/dev"],Qe=["next"];async function Ie(e={}){let{files:r=[T],overrides:t={}}=e;await S(["@eslint-react/eslint-plugin","eslint-plugin-react-hooks","eslint-plugin-react-refresh"]);let o=e?.tsconfigPath?E(e.tsconfigPath):void 0,s=!!o,[n,u,c,d]=await Promise.all([i(import("@eslint-react/eslint-plugin")),i(import("eslint-plugin-react-hooks")),i(import("eslint-plugin-react-refresh")),i(import("@typescript-eslint/parser"))]),f=Xe.some(m=>K(m)),b=ze.some(m=>K(m)),x=Qe.some(m=>K(m)),w=n.configs.all.plugins;return[{name:"neosjs/react/setup",plugins:{react:w["@eslint-react"],"react-dom":w["@eslint-react/dom"],"react-hooks":u,"react-hooks-extra":w["@eslint-react/hooks-extra"],"react-naming-convention":w["@eslint-react/naming-convention"],"react-refresh":c}},{files:r,languageOptions:{parser:d,parserOptions:{ecmaFeatures:{jsx:!0},...s?{project:o}:{}},sourceType:"module"},name:"neosjs/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:f,allowExportNames:[...x?["config","generateStaticParams","metadata","generateMetadata","viewport","generateViewport"]:[],...b?["meta","links","headers","loader","action"]:[]]}],"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-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",...s?{"react/no-leaked-conditional-rendering":"warn"}:{},...t}}]}import{configs as Ye}from"eslint-plugin-regexp";async function Pe(e={}){let r=Ye["flat/recommended"],t={...r.rules};if(e.level==="warn")for(let o in t)t[o]==="error"&&(t[o]="warn");return[{...r,name:"neosjs/regexp/rules",rules:{...t,...e.overrides,"regexp/no-unused-capturing-group":["error",{allowNamed:!1,fixable:!0}]}}]}async function Fe(){return[{files:["**/package.json"],name:"neosjs/sort/package-json",rules:{"jsonc/sort-array-values":["error",{order:{type:"asc"},pathPattern:"^files$"}],"jsonc/sort-keys":["error",{order:["publisher","name","displayName","type","version","private","packageManager","description","author","contributors","license","funding","homepage","repository","bugs","keywords","categories","sideEffects","exports","main","module","unpkg","jsdelivr","types","typesVersions","bin","icon","files","engines","activationEvents","contributes","scripts","peerDependencies","peerDependenciesMeta","dependencies","optionalDependencies","devDependencies","pnpm","overrides","resolutions","husky","simple-git-hooks","lint-staged","eslintConfig"],pathPattern:"^$"},{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 Le(){return[{files:["**/tsconfig.json","**/tsconfig.*.json"],name:"neosjs/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$"}]}}]}var H;async function _e(e={}){let{files:r=fe,isInEditor:t=!1,overrides:o={}}=e,[s,n]=await Promise.all([i(import("@vitest/eslint-plugin")),i(import("eslint-plugin-no-only-tests"))]);return H=H||{...s,rules:{...s.rules,...n.rules}},[{name:"neosjs/test/setup",plugins:{test:H}},{files:r,name:"neosjs/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":t?"off":"error","test/prefer-hooks-in-order":"error","test/prefer-lowercase-title":"error","ts/explicit-function-return-type":"off",...o}}]}async function Ee(e={}){let{files:r=[ce],overrides:t={},stylistic:o=!0}=e,{indent:s=2}=typeof o=="boolean"?{}:o,[n,u]=await Promise.all([i(import("eslint-plugin-toml")),i(import("toml-eslint-parser"))]);return[{name:"neosjs/toml/setup",plugins:{toml:n}},{files:r,languageOptions:{parser:u},name:"neosjs/toml/rules",rules:{"style/spaced-comment":"off","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?{"toml/array-bracket-newline":"error","toml/array-bracket-spacing":"error","toml/array-element-newline":"error","toml/indent":["error",s==="tab"?2:s],"toml/inline-table-curly-spacing":"error","toml/key-spacing":"error","toml/padding-line-between-pairs":"error","toml/padding-line-between-tables":"error","toml/quoted-keys":"error","toml/spaced-comment":"error","toml/table-bracket-spacing":"error"}:{},...t}}]}import Ze from"node:process";async function Re(e={}){let{componentExts:r=[],overrides:t={},parserOptions:o={},type:s="app"}=e,n=e.files??[D,P,...r.map(l=>`**/*.${l}`)],u=e.filesTypeAware??[D,P],c=e.ignoresTypeAware??[`${j}/**`],d=e?.tsconfigPath?E(e.tsconfigPath):void 0,f=!!d,b={"dot-notation":"off","no-implied-eval":"off","ts/await-thenable":"error","ts/dot-notation":["error",{allowKeywords:!0}],"ts/no-floating-promises":"error","ts/no-for-in-array":"error","ts/no-implied-eval":"error","ts/no-misused-promises":"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/return-await":["error","in-try-catch"],"ts/strict-boolean-expressions":["error",{allowNullableBoolean:!0,allowNullableObject:!0}],"ts/switch-exhaustiveness-check":"error","ts/unbound-method":"error"},[x,w]=await Promise.all([i(import("@typescript-eslint/eslint-plugin")),i(import("@typescript-eslint/parser"))]);function m(l,k,F){return{files:k,...F?{ignores:F}:{},languageOptions:{parser:w,parserOptions:{extraFileExtensions:r.map(L=>`.${L}`),sourceType:"module",...l?{projectService:{allowDefaultProject:["./*.js"],defaultProject:d},tsconfigRootDir:Ze.cwd()}:{},...o}},name:`neosjs/typescript/${l?"type-aware-parser":"parser"}`}}return[{name:"neosjs/typescript/setup",plugins:{neosjs:h,ts:x}},...f?[m(!1,n),m(!0,u,c)]:[m(!1,n)],{files:n,name:"neosjs/typescript/rules",rules:{..._(x.configs["eslint-recommended"].overrides[0].rules,{"@typescript-eslint":"ts"}),..._(x.configs.strict.rules,{"@typescript-eslint":"ts"}),"no-dupe-class-members":"off","no-loss-of-precision":"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-empty-object-type":["error",{allowInterfaces:"always"}],"ts/no-explicit-any":"off","ts/no-extraneous-class":"off","ts/no-import-type-side-effects":"error","ts/no-invalid-void-type":"off","ts/no-loss-of-precision":"error","ts/no-non-null-assertion":"off","ts/no-redeclare":["error",{builtinGlobals:!1}],"ts/no-require-imports":"error","ts/no-unused-expressions":["error",{allowShortCircuit:!0,allowTaggedTemplates:!0,allowTernary:!0}],"ts/no-unused-vars":"off","ts/no-use-before-define":["error",{classes:!1,functions:!1,variables:!0}],"ts/no-useless-constructor":"off","ts/no-wrapper-object-types":"error","ts/triple-slash-reference":"off","ts/unified-signatures":"off",...s==="lib"?{"ts/explicit-function-return-type":["error",{allowExpressions:!0,allowHigherOrderFunctions:!0,allowIIFEs:!0}]}:{},...t}},...f?[{files:u,ignores:c,name:"neosjs/typescript/rules-type-aware",rules:b}]:[]]}async function Be(e={}){return[{name:"neosjs/unicorn/rules",plugins:{unicorn:G},rules:{...e.allRecommended?G.configs["flat/recommended"].rules:{"unicorn/consistent-empty-array-spread":"error","unicorn/consistent-function-scoping":"error","unicorn/error-message":"error","unicorn/escape-case":"error","unicorn/new-for-builtins":"error","unicorn/no-instanceof-array":"error","unicorn/no-new-array":"error","unicorn/no-new-buffer":"error","unicorn/number-literal-case":"error","unicorn/prefer-dom-node-text-content":"error","unicorn/prefer-includes":"error","unicorn/prefer-node-protocol":"error","unicorn/prefer-number-properties":"error","unicorn/prefer-string-starts-ends-with":"error","unicorn/prefer-type-error":"error","unicorn/throw-new-error":"error"}}}]}async function Ge(e={}){let{attributify:r=!0,strict:t=!1}=e;await S(["@unocss/eslint-plugin"]);let[o]=await Promise.all([i(import("@unocss/eslint-plugin"))]);return[{name:"neosjs/unocss",plugins:{unocss:o},rules:{"unocss/order":"warn",...r?{"unocss/order-attributify":"warn"}:{},...t?{"unocss/blocklist":"error"}:{}}}]}import{mergeProcessors as er}from"eslint-merge-processors";async function De(e={}){let{files:r=[N],overrides:t={},stylistic:o=!0,vueVersion:s=3}=e,n=e.sfcBlocks===!0?{}:e.sfcBlocks??{},{indent:u=2}=typeof o=="boolean"?{}:o,[c,d,f]=await Promise.all([i(import("eslint-plugin-vue")),i(import("vue-eslint-parser")),i(import("eslint-processor-vue-blocks"))]);return[{languageOptions:{globals:{computed:"readonly",defineEmits:"readonly",defineExpose:"readonly",defineProps:"readonly",onMounted:"readonly",onUnmounted:"readonly",reactive:"readonly",ref:"readonly",shallowReactive:"readonly",shallowRef:"readonly",toRef:"readonly",toRefs:"readonly",watch:"readonly",watchEffect:"readonly"}},name:"neosjs/vue/setup",plugins:{vue:c}},{files:r,languageOptions:{parser:d,parserOptions:{ecmaFeatures:{jsx:!0},extraFileExtensions:[".vue"],parser:e.typescript?await i(import("@typescript-eslint/parser")):null,sourceType:"module"}},name:"neosjs/vue/rules",processor:n===!1?c.processors[".vue"]:er([c.processors[".vue"],f({...n,blocks:{styles:!0,...n.blocks}})]),rules:{...c.configs.base.rules,...s===2?{...c.configs.essential.rules,...c.configs["strongly-recommended"].rules,...c.configs.recommended.rules}:{...c.configs["vue3-essential"].rules,...c.configs["vue3-strongly-recommended"].rules,...c.configs["vue3-recommended"].rules},"neosjs/no-top-level-await":"off","node/prefer-global/process":"off","ts/explicit-function-return-type":"off","vue/block-order":["error",{order:[["script","template","style"],["template","script","style"],["template","style:not([scoped])","style[scoped]"]]}],"vue/component-name-in-template-casing":["error","PascalCase"],"vue/component-options-name-casing":["error","PascalCase"],"vue/custom-event-name-casing":["error","camelCase"],"vue/define-macros-order":["error",{order:["defineOptions","defineProps","defineEmits","defineSlots"]}],"vue/dot-location":["error","property"],"vue/dot-notation":["error",{allowKeywords:!0}],"vue/eqeqeq":["error","smart"],"vue/html-indent":["error",u],"vue/html-quotes":["error","double"],"vue/max-attributes-per-line":"off","vue/multi-word-component-names":"off","vue/no-dupe-keys":"off","vue/no-empty-pattern":"error","vue/no-irregular-whitespace":"error","vue/no-loss-of-precision":"error","vue/no-restricted-syntax":["error","DebuggerStatement","LabeledStatement","WithStatement"],"vue/no-restricted-v-bind":["error","/^v-/"],"vue/no-setup-props-reactivity-loss":"off","vue/no-sparse-arrays":"error","vue/no-unused-refs":"error","vue/no-useless-v-bind":"error","vue/no-v-html":"off","vue/object-shorthand":["error","always",{avoidQuotes:!0,ignoreConstructors:!1}],"vue/prefer-separate-static-class":"error","vue/prefer-template":"error","vue/prop-name-casing":["error","camelCase"],"vue/require-default-prop":"off","vue/require-prop-types":"off","vue/space-infix-ops":"error","vue/space-unary-ops":["error",{nonwords:!1,words:!0}],...o?{"vue/array-bracket-spacing":["error","never"],"vue/arrow-spacing":["error",{after:!0,before:!0}],"vue/block-spacing":["error","always"],"vue/block-tag-newline":["error",{multiline:"always",singleline:"always"}],"vue/brace-style":["error","stroustrup",{allowSingleLine:!0}],"vue/comma-dangle":["error","always-multiline"],"vue/comma-spacing":["error",{after:!0,before:!1}],"vue/comma-style":["error","last"],"vue/html-comment-content-spacing":["error","always",{exceptions:["-"]}],"vue/key-spacing":["error",{afterColon:!0,beforeColon:!1}],"vue/keyword-spacing":["error",{after:!0,before:!0}],"vue/object-curly-newline":"off","vue/object-curly-spacing":["error","always"],"vue/object-property-newline":["error",{allowMultiplePropertiesPerLine:!0}],"vue/operator-linebreak":["error","before"],"vue/padding-line-between-blocks":["error","always"],"vue/quote-props":["error","consistent-as-needed"],"vue/space-in-parens":["error","never"],"vue/template-curly-spacing":"error"}:{},...t}}]}async function Ae(e={}){let{files:r=[U],overrides:t={},stylistic:o=!0}=e,{indent:s=2,quotes:n="single"}=typeof o=="boolean"?{}:o,[u,c]=await Promise.all([i(import("eslint-plugin-yml")),i(import("yaml-eslint-parser"))]);return[{name:"neosjs/yaml/setup",plugins:{yaml:u}},{files:r,languageOptions:{parser:c},name:"neosjs/yaml/rules",rules:{"style/spaced-comment":"off","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?{"yaml/block-mapping-question-indicator-newline":"error","yaml/block-sequence-hyphen-indicator-newline":"error","yaml/flow-mapping-curly-newline":"error","yaml/flow-mapping-curly-spacing":"error","yaml/flow-sequence-bracket-newline":"error","yaml/flow-sequence-bracket-spacing":"error","yaml/indent":["error",s==="tab"?2:s],"yaml/key-spacing":"error","yaml/no-tab-indent":"error","yaml/quotes":["error",{avoidEscape:!1,prefer:n}],"yaml/spaced-comment":"error"}:{},...t}}]}var or=["name","files","ignores","languageOptions","linterOptions","processor","plugins","rules","settings"],tr=["vue","nuxt","vitepress","@slidev/cli"],sr=["unocss","@unocss/reset","@unocss/preset-mini","@iconify/tools"],nr={"@eslint-react":"react","@eslint-react/dom":"react-dom","@eslint-react/hooks-extra":"react-hooks-extra","@eslint-react/naming-convention":"react-naming-convention","@stylistic":"style","@typescript-eslint":"ts","import-x":"import",n:"node",vitest:"test",yml:"yaml"};function qe(e={},...r){let{autoRenamePlugins:t=!0,componentExts:o=[],gitignore:s=!0,isInEditor:n=ge(),jsx:u=!0,react:c=!1,regexp:d=!0,typescript:f=X("typescript"),unicorn:b=!0,unocss:x=sr.some(v=>X(v)),vue:w=tr.some(v=>X(v))}=e,m=e.stylistic===!1?!1:typeof e.stylistic=="object"?e.stylistic:{};m&&!("jsx"in m)&&(m.jsx=u);let l=[];s&&(typeof s!="boolean"?l.push(i(import("eslint-config-flat-gitignore")).then(v=>[v({name:"neosjs/gitignore",...s})])):l.push(i(import("eslint-config-flat-gitignore")).then(v=>[v({name:"neosjs/gitignore",strict:!1})])));let k=R(e,"typescript"),F="tsconfigPath"in k?k.tsconfigPath:void 0;l.push(xe(),we({isInEditor:n,overrides:O(e,"javascript")}),oe(),Se(),je({stylistic:m}),ve({stylistic:m}),z(),ke()),b&&l.push(Be(b===!0?{}:b)),w&&o.push("vue"),u&&l.push(Ce()),f&&l.push(Re({...k,componentExts:o,overrides:O(e,"typescript"),type:e.type})),m&&l.push(Oe({...m,lessOpinionated:e.lessOpinionated,overrides:O(e,"stylistic")})),d&&l.push(Pe(typeof d=="boolean"?{}:d)),(e.test??!0)&&l.push(_e({isInEditor:n,overrides:O(e,"test")})),w&&l.push(De({...R(e,"vue"),overrides:O(e,"vue"),stylistic:m,typescript:!!f})),c&&l.push(Ie({overrides:O(e,"react"),tsconfigPath:F})),x&&l.push(Ge({...R(e,"unocss"),overrides:O(e,"unocss")})),(e.jsonc??!0)&&l.push(he({overrides:O(e,"jsonc"),stylistic:m}),Fe(),Le()),(e.yaml??!0)&&l.push(Ae({overrides:O(e,"yaml"),stylistic:m})),(e.toml??!0)&&l.push(Ee({overrides:O(e,"toml"),stylistic:m})),(e.markdown??!0)&&l.push(Te({componentExts:o,overrides:O(e,"markdown")})),e.formatters&&l.push(be(e.formatters,typeof m=="boolean"?{}:m));let L=or.reduce((v,B)=>(B in e&&(v[B]=e[B]),v),{});Object.keys(L).length&&l.push([L]);let I=new rr;return I=I.append(...l,...r),t&&(I=I.renamePlugins(nr)),I}function R(e,r){return typeof e[r]=="boolean"?{}:e[r]||{}}function O(e,r){let t=R(e,r);return{...e.overrides?.[r],..."overrides"in t?t.overrides:{}}}var Kt=qe;export{hr as GLOB_ALL_SRC,wr as GLOB_ASTRO,jr as GLOB_ASTRO_TS,se as GLOB_CSS,de as GLOB_EXCLUDE,me as GLOB_GRAPHQL,V as GLOB_HTML,vr as GLOB_JS,A as GLOB_JSON,q as GLOB_JSON5,pe as GLOB_JSONC,te as GLOB_JSX,ie as GLOB_LESS,j as GLOB_MARKDOWN,ue as GLOB_MARKDOWN_CODE,le as GLOB_MARKDOWN_IN_MARKDOWN,ne as GLOB_POSTCSS,ae as GLOB_SCSS,T as GLOB_SRC,y as GLOB_SRC_EXT,Ue as GLOB_STYLE,Me as GLOB_SVELTE,fe as GLOB_TESTS,ce as GLOB_TOML,D as GLOB_TS,P as GLOB_TSX,N as GLOB_VUE,M as GLOB_XML,U as GLOB_YAML,W as StylisticConfigDefaults,Er as combine,z as command,oe as comments,Kt as default,nr as defaultPluginRenaming,kr as disables,S as ensurePackages,be as formatters,O as getOverrides,xe as ignores,ve as imports,i as interopDefault,ge as isInEditorEnv,$ as isPackageInScope,we as javascript,je as jsdoc,he as jsonc,Ce as jsx,Te as markdown,qe as neosjs,Se as node,g as parserPlain,ke as perfectionist,Ie as react,Pe as regexp,Rr as renamePluginInConfigs,_ as renameRules,R as resolveSubOptions,Fe as sortPackageJson,Le as sortTsconfig,Oe as stylistic,_e as test,E as toArray,Ee as toml,Re as typescript,Be as unicorn,Ge as unocss,De as vue,Ae as yaml};