@favorodera/eslint-config 1.2.1 → 1.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.
- package/dist/index.d.mts +489 -356
- package/dist/index.mjs +1 -1
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{FlatConfigComposer as e}from"eslint-flat-config-utils";import{defu as t}from"defu";import n from"globals";import{mergeProcessors as r,processorPassThrough as i}from"eslint-merge-processors";import a from"eslint-processor-vue-blocks";const o=`**/*.{js,cjs,mjs}`,s=`**/*.{ts,cts,mts}`,c=`**/*.vue`,l=`**/*.md`,u=`**/*.md/*.md`,d=`**/*.md/**/*.{js,cjs,mjs,ts,cts,mts,vue}`,f=`**/*.{js,cjs,mjs,ts,cts,mts}`,p=`**/*.{test,spec,bench,benchmark}.{js,cjs,mjs,ts,cts,mts}`,m=`**/*.json`,h=`**/*.json5`,g=`**/*.jsonc`,_=[`**/tsconfig.json`,`**/tsconfig.*.json`],v=`**/*.{yml,yaml}`,y=`pnpm-workspace.yaml`,b=`**/package.json`,x=`**/node_modules/**,**/dist/**,**/package-lock.json,**/yarn.lock,**/pnpm-lock.yaml,**/bun.lockb,**/output,**/coverage,**/temp,**/.temp,**/tmp,**/.tmp,**/.history,**/.vitepress/cache,**/.nuxt,**/.next,**/.svelte-kit,**/.vercel,**/.changeset,**/.idea,**/.cache,**/.output,**/.vite-inspect,**/.yarn,**/CHANGELOG*.md,**/LICENSE*,**/*.min.*,**/__snapshots__,**/vite.config.*.timestamp-*,**/auto-import?(s).d.ts,**/components.d.ts,**/.context,**/.claude,**/.agents,**/.*/skills`.split(`,`);function S(){return[{files:[h,g,m],name:`favorodera/disables/jsonc`,rules:{"no-irregular-whitespace":`off`}},{files:[l],ignores:[u],name:`favorodera/disables/markdown`,rules:{"md/no-missing-atx-heading-space":`off`}},{files:[d],languageOptions:{parserOptions:{ecmaFeatures:{impliedStrict:!0}}},name:`favorodera/disables/code-in-markdown`,rules:{"no-alert":`off`,"no-console":`off`,"no-continue":`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`,"unicode-bom":`off`,"node/no-extraneous-import":`off`,"node/prefer-global/process":`off`,"style/comma-dangle":`off`,"style/eol-last":`off`,"style/line-comment-position":`off`,"style/padding-line-between-statements":`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`,"unused-imports/no-unused-imports":`off`,"unused-imports/no-unused-vars":`off`,"vue/no-unused-vars":`off`,"jsdoc/require-jsdoc":`off`}},{files:[o,s,c],name:`favorodera/disables/js-ts-vue`,rules:{"jsdoc/require-throws-type":`off`,"node/no-missing-import":`off`,"node/no-missing-require":`off`,"node/no-process-exit":`off`,"tailwind/enforce-consistent-important-position":`off`,"tailwind/enforce-consistent-variable-syntax":`off`,"tailwind/enforce-shorthand-classes":`off`,"unicorn/filename-case":`off`,"unicorn/name-replacements":`off`,"unicorn/no-process-exit":`off`,"no-continue":`off`,"no-unused-vars":`off`,"ts/no-unused-vars":`off`}},{files:[c],name:`favorodera/disables/vue`,rules:{"vue/multi-word-component-names":`off`}},{files:[p],name:`favorodera/disables/test`,rules:{"no-unused-expressions":`off`}}]}const C=x;function w(e=[]){return[{ignores:typeof e==`function`?e(C):[...C,...e],name:`favorodera/ignores`}]}function T(...e){return Object.assign({},...e.flat().map(e=>e?.rules||{}))}async function E(e){let t=await e;return typeof t==`object`&&t&&`default`in t?t.default:t}function D(e,n){return e?t(e===!0?{}:e,n):!1}function O(e,t){let n={...e};for(let e of t)Reflect.deleteProperty(n,e);return n}async function k(){let e=await E(import(`eslint-plugin-import-lite`)),t=[o,s,c],n=e.configs.recommended,{rules:r={}}=n;return[{...O(n,[`rules`,`files`,`name`]),name:`favorodera/imports/setup`},{files:t,name:`favorodera/imports/rules`,rules:{...r,"import/consistent-type-specifier-style":[`error`,`prefer-top-level`],"import/first":`error`,"import/newline-after-import":[`error`,{count:1}],"import/no-duplicates":[`error`,{"prefer-inline":!0}],"import/no-mutable-exports":`error`,"import/no-named-default":`error`}}]}async function A(){let e=await E(import(`@eslint/js`)),t=[o,s,c];return[{languageOptions:{ecmaVersion:`latest`,globals:{...n.browser,...n.es2021,...n.node,document:`readonly`,navigator:`readonly`,window:`readonly`},sourceType:`module`},linterOptions:{reportUnusedDisableDirectives:!0},name:`favorodera/javascript/setup`},{files:t,name:`favorodera/javascript/rules`,rules:{...e.configs.recommended.rules,"array-callback-return":[`error`,{allowImplicit:!0}],"block-scoped-var":`error`,"default-case-last":`error`,"dot-notation":`error`,eqeqeq:`error`,"getter-return":[`error`,{allowImplicit:!0}],"new-cap":`error`,"no-alert":`error`,"no-array-constructor":`error`,"no-caller":`error`,"no-console":[`error`,{allow:[`warn`,`error`]}],"no-constructor-return":`error`,"no-continue":`error`,"no-else-return":`error`,"no-empty":[`error`,{allowEmptyCatch:!0}],"no-eq-null":`error`,"no-eval":`error`,"no-extend-native":`error`,"no-extra-bind":`error`,"no-implied-eval":`error`,"no-iterator":`error`,"no-labels":[`error`,{allowLoop:!1,allowSwitch:!1}],"no-lone-blocks":`error`,"no-loop-func":`error`,"no-multi-str":`error`,"no-negated-condition":`error`,"no-nested-ternary":`error`,"no-new":`error`,"no-new-func":`error`,"no-new-wrappers":`error`,"no-object-constructor":`error`,"no-octal-escape":`error`,"no-param-reassign":`error`,"no-promise-executor-return":`error`,"no-proto":`error`,"no-return-assign":`error`,"no-script-url":`error`,"no-self-compare":`error`,"no-sequences":`error`,"no-template-curly-in-string":`error`,"no-throw-literal":`error`,"no-undef-init":`error`,"no-unmodified-loop-condition":`error`,"no-unneeded-ternary":[`error`,{defaultAssignment:!1}],"no-unreachable-loop":`error`,"no-unused-expressions":[`error`,{allowShortCircuit:!0,allowTaggedTemplates:!0,allowTernary:!0}],"no-use-before-define":[`error`,{classes:!1,functions:!1}],"no-useless-call":`error`,"no-useless-computed-key":`error`,"no-useless-concat":`error`,"no-useless-constructor":`error`,"no-useless-rename":`error`,"no-useless-return":`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-template":`error`,"symbol-description":`error`,"unicode-bom":`error`,"valid-typeof":[`error`,{requireStringLiterals:!0}],"vars-on-top":`error`,yoda:`error`}}]}async function j(){let e=await E(import(`eslint-plugin-jsdoc`)),t=[o,s,c],n=e.configs[`flat/recommended-typescript-error`],r=e.configs[`flat/stylistic-typescript-error`],{rules:i={}}=n,a=O(n,[`rules`,`files`,`name`]),{rules:l={}}=r,u=O(r,[`rules`,`files`,`name`]),d={...i,...l};return[{...a,name:`favorodera/jsdoc/recommended/setup`},{...u,name:`favorodera/jsdoc/stylistic/setup`},{files:t,name:`favorodera/jsdoc/rules`,rules:{...d,"jsdoc/check-indentation":`error`,"jsdoc/check-template-names":`error`,"jsdoc/imports-as-dependencies":`error`,"jsdoc/lines-before-block":[`error`,{ignoreSingleLines:!1}],"jsdoc/multiline-blocks":`error`,"jsdoc/no-bad-blocks":`error`,"jsdoc/no-blank-block-descriptions":`error`,"jsdoc/no-blank-blocks":`error`,"jsdoc/sort-tags":`error`}}]}async function M(){return[{name:`favorodera/jsonc/setup`,plugins:{jsonc:await E(import(`eslint-plugin-jsonc`))}},{files:[h,g,m],language:`jsonc/x`,name:`favorodera/jsonc/rules`,rules:{"jsonc/array-bracket-newline":`error`,"jsonc/array-bracket-spacing":[`error`,`never`],"jsonc/array-element-newline":`error`,"jsonc/comma-dangle":[`error`,`never`],"jsonc/comma-style":[`error`,`last`],"jsonc/indent":[`error`,2],"jsonc/key-spacing":[`error`,{afterColon:!0,beforeColon:!1}],"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-irregular-whitespace":`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/object-curly-newline":[`error`,{consistent:!0,multiline:!0}],"jsonc/object-curly-spacing":[`error`,`always`],"jsonc/object-property-newline":[`error`,{allowAllPropertiesOnSameLine:!1}],"jsonc/quote-props":`error`,"jsonc/quotes":`error`,"jsonc/space-unary-ops":`error`,"jsonc/valid-json-number":`error`,"jsonc/vue-custom-block/no-parsing-error":`error`}},{files:[b],name:`favorodera/jsonc/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.imports.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`.split(`.`),pathPattern:`^$`},{order:{type:`asc`},pathPattern:`^(?:dev|peer|optional|bundled)?[Dd]ependencies(Meta)?$`},{order:{type:`asc`},pathPattern:`^(?:resolutions|overrides|pnpm.overrides)$`},{order:{type:`asc`},pathPattern:String.raw`^workspaces\.catalog$`},{order:{type:`asc`},pathPattern:String.raw`^workspaces\.catalogs\.[^.]+$`},{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)$`}]}},{files:_,name:`favorodera/jsonc/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.libReplacement.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.isolatedDeclarations.isolatedModules.preserveSymlinks.verbatimModuleSyntax.erasableSyntaxOnly.skipDefaultLibCheck.skipLibCheck`.split(`.`),pathPattern:`^compilerOptions$`}]}}]}const N={gfm:!0};async function P(e){let n=t(e,N),a=await E(import(`@eslint/markdown`)),[o]=a.configs.recommended,{rules:s={}}=o;return[{...O(o,[`rules`,`files`,`name`,`language`]),name:`favorodera/markdown/setup`},{files:[l],ignores:[u],language:n.gfm?`md/gfm`:`md/commonmark`,languageOptions:{frontmatter:`yaml`},name:`favorodera/markdown/rules`,processor:r([a.processors?.markdown,i]),rules:s}]}async function F(){let e=await E(import(`eslint-plugin-n`)),t=[o,s,c],n=e.configs[`flat/recommended-module`],{rules:r={}}=n;return[{...O(n,[`rules`,`files`,`name`]),name:`favorodera/node/setup`},{files:t,name:`favorodera/node/rules`,rules:{...r,"node/callback-return":`error`,"node/handle-callback-err":[`error`,`^(err|error)$`],"node/no-callback-literal":`error`,"node/no-new-require":`error`,"node/no-path-concat":`error`,"node/no-unpublished-import":`error`,"node/prefer-global/buffer":`error`,"node/prefer-global/console":`error`,"node/prefer-global/crypto":`error`,"node/prefer-global/process":`error`,"node/prefer-global/text-decoder":`error`,"node/prefer-global/text-encoder":`error`,"node/prefer-global/timers":`error`,"node/prefer-global/url":`error`,"node/prefer-global/url-search-params":`error`,"node/prefer-node-protocol":`error`,"node/prefer-promises/dns":`error`,"node/prefer-promises/fs":`error`}}]}const I={ignoreCase:!0,locales:`en-US`,newlinesBetween:`ignore`,newlinesInside:`ignore`,order:`asc`,partitionByComment:!0,partitionByNewLine:!0,specialCharacters:`keep`,type:`natural`};async function L(e){let n=t(e,I),r=await E(import(`eslint-plugin-perfectionist`)),i=[o,s,c],a=n.type??`natural`,l=r.configs[`recommended-${a}`],{rules:u={}}=l;return[{...O(l,[`rules`,`settings`,`files`,`name`]),name:`favorodera/perfectionist/setup`,settings:{perfectionist:n}},{files:i,name:`favorodera/perfectionist/rules`,rules:u}]}async function R(){let[e,t]=await Promise.all([E(import(`eslint-plugin-pnpm`)),E(import(`yaml-eslint-parser`))]);return[{name:`favorodera/pnpm/setup`,plugins:{pnpm:e}},{files:[b],language:`jsonc/x`,name:`favorodera/pnpm/package-json`,rules:{"pnpm/json-enforce-catalog":[`error`,{autofix:!1,fields:[`dependencies`,`devDependencies`],ignores:[`@types/vscode`]}],"pnpm/json-prefer-workspace-settings":[`error`,{autofix:!0}],"pnpm/json-valid-catalog":[`error`,{autofix:!1}]}},{files:[y],languageOptions:{parser:t},name:`favorodera/pnpm/pnpm-workspace-yaml`,rules:{"pnpm/yaml-enforce-settings":[`error`,{settings:{allowBuilds:{"@parcel/watcher":!0,"@tailwindcss/oxide":!0,"better-sqlite3":!0,esbuild:!0,sharp:!0,"unrs-resolver":!0,"vue-demi":!0},shellEmulator:!0,trustPolicy:`no-downgrade`}}],"pnpm/yaml-no-duplicate-catalog-item":[`error`,{checkDuplicates:`exact-version`}],"pnpm/yaml-no-unused-catalog-item":`error`,"pnpm/yaml-valid-packages":`error`}}]}const z={braceStyle:`1tbs`,experimental:!1,indent:2,jsx:!1,quotes:`single`,semi:!1};async function B(e){let n=t(e,z),r=await E(import(`@stylistic/eslint-plugin`)),i=[o,s,c],a=r.configs.customize({pluginName:`style`,...n}),{rules:l={}}=a;return[{...O(a,[`rules`,`files`,`name`]),name:`favorodera/stylistic/setup`},{files:i,name:`favorodera/stylistic/rules`,rules:{...l,"style/array-bracket-newline":`error`,"style/array-element-newline":[`error`,`consistent`],"style/curly-newline":[`error`,`always`],"style/function-call-argument-newline":[`error`,`consistent`],"style/function-call-spacing":`error`,"style/function-paren-newline":`error`,"style/implicit-arrow-linebreak":`error`,"style/linebreak-style":`error`,"style/multiline-comment-style":[`error`,`separate-lines`],"style/newline-per-chained-call":`error`,"style/no-confusing-arrow":`error`,"style/no-extra-semi":`error`,"style/nonblock-statement-body-position":`error`,"style/object-curly-newline":`error`,"style/semi-style":`error`,"style/switch-colon-spacing":`error`,"style/wrap-regex":`error`}}]}const V={detectComponentClasses:!0};async function H(e){let n=t(e,V),r=await E(import(`eslint-plugin-better-tailwindcss`)),i=[o,s,c],a=r.configs[`recommended-error`],l=r.configs[`stylistic-error`],{rules:u}=a,d=O(a,[`rules`]),{rules:f}=l,p=O(l,[`rules`]),m={...u,...f};return[{...d,name:`favorodera/tailwind/recommended/setup`},{...p,name:`favorodera/tailwind/stylistic/setup`},{files:i,name:`favorodera/tailwind/rules`,rules:{...m,"tailwind/enforce-consistent-class-order":[`error`,{componentClassOrder:`asc`,componentClassPosition:`start`,order:`strict`,unknownClassOrder:`asc`,unknownClassPosition:`start`}],"tailwind/enforce-consistent-line-wrapping":[`error`,{group:`emptyLine`}],"tailwind/enforce-consistent-variant-order":`error`,"tailwind/enforce-logical-properties":`error`},settings:{"better-tailwindcss":n}}]}async function U(){let e=await E(import(`@vitest/eslint-plugin`)),t=[p],n=e.configs.recommended,{rules:r}=n;return[{...O(n,[`rules`,`name`]),name:`favorodera/test/setup`},{files:t,name:`favorodera/test/rules`,rules:{...r,"test/consistent-each-for":[`error`,{describe:`for`,it:`for`,suite:`for`,test:`for`}],"test/consistent-test-it":[`error`,{fn:`it`,withinDescribe:`it`}],"test/consistent-vitest-vi":`error`,"test/hoisted-apis-on-top":`error`,"test/max-expects":`error`,"test/max-nested-describe":`error`,"test/no-alias-methods":`error`,"test/no-conditional-in-test":`error`,"test/no-conditional-tests":`error`,"test/no-duplicate-hooks":`error`,"test/no-hooks":`error`,"test/no-large-snapshots":`warn`,"test/no-test-prefixes":`error`,"test/no-test-return-statement":`error`,"test/padding-around-all":`error`,"test/prefer-called-times":`error`,"test/prefer-called-with":`error`,"test/prefer-comparison-matcher":`error`,"test/prefer-each":`error`,"test/prefer-equality-matcher":`error`,"test/prefer-expect-resolves":`error`,"test/prefer-expect-type-of":`error`,"test/prefer-hooks-in-order":`error`,"test/prefer-hooks-on-top":`error`,"test/prefer-import-in-mock":`error`,"test/prefer-importing-vitest-globals":`error`,"test/prefer-lowercase-title":`error`,"test/prefer-mock-promise-shorthand":`error`,"test/prefer-mock-return-shorthand":`error`,"test/prefer-snapshot-hint":`error`,"test/prefer-spy-on":`error`,"test/prefer-strict-boolean-matchers":`error`,"test/prefer-strict-equal":`error`,"test/prefer-to-be":`error`,"test/prefer-to-be-object":`error`,"test/prefer-to-contain":`error`,"test/prefer-to-have-been-called-times":`error`,"test/prefer-to-have-length":`error`,"test/prefer-todo":`error`,"test/prefer-vi-mocked":`error`,"test/require-awaited-expect-poll":`error`,"test/require-hook":`error`,"test/require-to-throw-message":`error`,"test/require-top-level-describe":`error`,"test/warn-todo":`warn`}}]}async function W(){let e=await E(import(`typescript-eslint`)),t=[s],[n,r,i]=e.configs.strict,a=e.configs.stylistic[2],o=O(n,[`rules`,`name`]),c={...r?.rules,...i?.rules,...a?.rules};return[{...o,name:`favorodera/typescript/setup`},{files:t,name:`favorodera/typescript/rules`,rules:{...c,"ts/array-type":[`error`,{default:`generic`,readonly:`generic`}],"ts/consistent-type-imports":`error`,"ts/default-param-last":`error`,"ts/method-signature-style":`error`,"ts/no-import-type-side-effects":`error`,"ts/no-redeclare":`error`}}]}async function G(){let e=await E(import(`eslint-plugin-unicorn`)),t=[o,s,c],n=e.configs.recommended,{rules:r={}}=n;return[{...O(n,[`rules`,`files`,`name`]),name:`favorodera/unicorn/setup`},{files:t,name:`favorodera/unicorn/rules`,rules:{...r,"unicorn/single-line-block-comment-style":[`error`,`single-line`],"unicorn/prefer-query-selector":[`error`,{allowWithVariables:!0}]}}]}async function K(){return[{name:`favorodera/unused-imports/setup`,plugins:{"unused-imports":await E(import(`eslint-plugin-unused-imports`))}},{files:[o,s,c],name:`favorodera/unused-imports/rules`,rules:{"unused-imports/no-unused-imports":`error`,"unused-imports/no-unused-vars":[`error`,{args:`after-used`,argsIgnorePattern:`^_`,ignoreRestSiblings:!0,vars:`all`,varsIgnorePattern:`^_`}]}}]}const q={blocks:{customBlocks:!0,styles:!0,template:!1}},J={sfcBlocks:q};async function Y(e){let n=D(t(e,J).sfcBlocks,q),[i,o,s,l]=await Promise.all([E(import(`eslint-plugin-vue`)),E(import(`vue-eslint-parser`)),E(import(`typescript-eslint`)),E(import(`eslint-plugin-vuejs-accessibility`))]),u=i.configs[`flat/recommended-error`],d=l.configs[`flat/recommended`],[f]=u,p=O(f,[`rules`,`files`,`name`]),m=T(u),[h]=d,g=O(h,[`name`]),_=T(d),v=n===!1?i.processors[`.vue`]:r([i.processors[`.vue`],a(n)]);return[{...p,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:`favorodera/vue/setup`},{...g,name:`favorodera/vue/a11y/setup`},{files:[c],languageOptions:{parser:o,parserOptions:{extraFileExtensions:[`.vue`],parser:s.parser,sourceType:`module`}},name:`favorodera/vue/rules`,processor:v,rules:{...m,"vue/block-lang":[`error`,{script:{lang:`ts`}}],"vue/block-order":[`error`,{order:[`script`,`template`,`style`]}],"vue/block-tag-newline":[`error`,{multiline:`always`,singleline:`always`}],"vue/comment-directive":[`error`,{reportUnusedDisableDirectives:!0}],"vue/define-macros-order":[`error`,{defineExposeLast:!0,order:[`defineOptions`,`definePage`,`defineSlots`,`defineEmits`,`defineProps`,`defineModel`]}],"vue/define-props-declaration":[`error`,`type-based`],"vue/define-props-destructuring":[`error`,{destructure:`never`}],"vue/next-tick-style":[`error`,`promise`],"vue/no-import-compiler-macros":`error`,"vue/no-negated-v-if-condition":`error`,"vue/no-reserved-component-names":[`error`,{disallowVue3BuiltInComponents:!0,disallowVueBuiltInComponents:!0,htmlElementCaseSensitive:!1}],"vue/no-root-v-if":`error`,"vue/no-template-target-blank":`error`,"vue/no-unused-emit-declarations":`error`,"vue/no-unused-properties":`error`,"vue/no-unused-refs":`error`,"vue/no-use-v-else-with-v-for":`error`,"vue/no-useless-mustaches":`error`,"vue/no-useless-v-bind":`error`,"vue/padding-line-between-blocks":`error`,"vue/padding-line-between-tags":[`error`,[{blankLine:`always`,next:`*`,prev:`*`}]],"vue/prefer-prop-type-boolean-first":`error`,"vue/prefer-separate-static-class":`error`,"vue/prefer-single-event-payload":`error`,"vue/prefer-use-template-ref":`error`,"vue/slot-name-casing":[`error`,`kebab-case`],"vue/v-for-delimiter-style":[`error`,`in`]}},{files:[c],name:`favorodera/vue/a11y/rules`,rules:{..._,"vue-a11y/form-control-has-label":[`error`,{controlComponents:[],labelComponents:[]}],"vue-a11y/label-has-for":[`error`,{allowChildren:!0,components:[],controlComponents:[],required:{some:[`nesting`,`id`]}}],"vue-a11y/no-aria-hidden-on-focusable":`error`,"vue-a11y/no-role-presentation-on-focusable":`error`}}]}async function X(){let[e,t]=await Promise.all([E(import(`eslint-plugin-yml`)),E(import(`yaml-eslint-parser`))]),n=e.configs.standard,[r]=n,i=O(r,[`rules`,`files`,`name`]),a=T(n);return[{...i,name:`favorodera/yaml/setup`},{files:[v],language:`yaml/yaml`,languageOptions:{parser:t},name:`favorodera/yaml/rules`,rules:{...a,"yaml/quotes":[`error`,{avoidEscape:!0,prefer:`single`}],"yaml/require-string-key":`error`}},{files:[y],language:`yaml/yaml`,languageOptions:{parser:t},name:`favorodera/yaml/sort/pnpm-workspace-yaml`,rules:{"yaml/sort-keys":[`error`,{order:`cacheDir.catalogMode.cleanupUnusedCatalogs.dedupeDirectDeps.deployAllFiles.enablePrePostScripts.engineStrict.extendNodePath.hoist.hoistPattern.hoistWorkspacePackages.ignoreCompatibilityDb.ignoreDepScripts.ignoreScripts.ignoreWorkspaceRootCheck.managePackageManagerVersions.minimumReleaseAge.minimumReleaseAgeExclude.modulesDir.nodeLinker.nodeVersion.optimisticRepeatInstall.packageManagerStrict.packageManagerStrictVersion.preferSymlinkedExecutables.preferWorkspacePackages.publicHoistPattern.registrySupportsTimeField.requiredScripts.resolutionMode.savePrefix.scriptShell.shamefullyHoist.shellEmulator.stateDir.supportedArchitectures.symlink.tag.trustPolicy.trustPolicyExclude.updateNotifier.packages.overrides.patchedDependencies.catalog.catalogs.allowedDeprecatedVersions.allowNonAppliedPatches.configDependencies.ignoredBuiltDependencies.ignoredOptionalDependencies.neverBuiltDependencies.onlyBuiltDependencies.onlyBuiltDependenciesFile.packageExtensions.peerDependencyRules`.split(`.`),pathPattern:`^$`},{order:{type:`asc`},pathPattern:`.*`}]}}]}function Z(t={}){let n=[w(t.ignores)],r={imports:k,javascript:A,jsdoc:j,jsonc:M,markdown:P,node:F,perfectionist:L,pnpm:R,stylistic:B,tailwind:H,test:U,typescript:W,unicorn:G,unusedImports:K,vue:Y,yaml:X};for(let[e,i]of Object.entries(r)){let r=t[e],a=D(r??!0,{});a&&n.push(i(a))}let i=new e;return i=i.append(...n).append(...S()).renamePlugins({"@typescript-eslint":`ts`,"better-tailwindcss":`tailwind`,"import-lite":`import`,markdown:`md`,n:`node`,vitest:`test`,"vuejs-accessibility":`vue-a11y`,yml:`yaml`}),i}export{d as codeInMdGlob,T as extractRules,Z as factory,x as ignoresGlob,E as importModule,o as jsGlob,h as json5Glob,m as jsonGlob,g as jsoncGlob,l as mdGlob,u as mdInMdGlob,O as omit,b as packageJsonGlob,y as pnpmWorkspaceGlob,f as scriptsGlob,p as testGlob,_ as tsConfigGlob,s as tsGlob,c as vueGlob,v as yamlGlob};
|
|
1
|
+
import{FlatConfigComposer as e}from"eslint-flat-config-utils";import{defu as t}from"defu";import n from"globals";import{mergeProcessors as r,processorPassThrough as i}from"eslint-merge-processors";import a from"eslint-processor-vue-blocks";const o=`**/*.{js,cjs,mjs}`,s=`**/*.{ts,cts,mts}`,c=`**/*.vue`,l=`**/*.md`,u=`**/*.md/*.md`,d=`**/*.md/**/*.{js,cjs,mjs,ts,cts,mts,vue}`,f=`**/*.{js,cjs,mjs,ts,cts,mts}`,p=`**/*.{test,spec,bench,benchmark}.{js,cjs,mjs,ts,cts,mts}`,m=`**/*.json`,h=`**/*.json5`,g=`**/*.jsonc`,_=[`**/tsconfig.json`,`**/tsconfig.*.json`],v=`**/*.{yml,yaml}`,y=`pnpm-workspace.yaml`,b=`**/package.json`,x=/* @__PURE__ */ `**/node_modules/**,**/dist/**,**/package-lock.json,**/yarn.lock,**/pnpm-lock.yaml,**/bun.lockb,**/output,**/coverage,**/temp,**/.temp,**/tmp,**/.tmp,**/.history,**/.vitepress/cache,**/.nuxt,**/.next,**/.svelte-kit,**/.vercel,**/.changeset,**/.idea,**/.cache,**/.output,**/.vite-inspect,**/.yarn,**/CHANGELOG*.md,**/LICENSE*,**/*.min.*,**/__snapshots__,**/vite.config.*.timestamp-*,**/auto-import?(s).d.ts,**/components.d.ts,**/.context,**/.claude,**/.agents,**/.*/skills`.split(`,`);function S(){return[{files:[h,g,m],name:`favorodera/disables/jsonc`,rules:{"no-irregular-whitespace":`off`}},{files:[l],ignores:[u],name:`favorodera/disables/markdown`,rules:{"md/no-missing-atx-heading-space":`off`}},{files:[d],languageOptions:{parserOptions:{ecmaFeatures:{impliedStrict:!0}}},name:`favorodera/disables/code-in-markdown`,rules:{"no-alert":`off`,"no-console":`off`,"no-continue":`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`,"unicode-bom":`off`,"node/no-extraneous-import":`off`,"node/prefer-global/process":`off`,"style/comma-dangle":`off`,"style/eol-last":`off`,"style/line-comment-position":`off`,"style/padding-line-between-statements":`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`,"unused-imports/no-unused-imports":`off`,"unused-imports/no-unused-vars":`off`,"vue/no-unused-vars":`off`,"jsdoc/require-jsdoc":`off`}},{files:[o,s,c],name:`favorodera/disables/js-ts-vue`,rules:{"jsdoc/require-throws-type":`off`,"node/no-missing-import":`off`,"node/no-missing-require":`off`,"node/no-process-exit":`off`,"tailwind/enforce-consistent-important-position":`off`,"tailwind/enforce-consistent-variable-syntax":`off`,"tailwind/enforce-shorthand-classes":`off`,"unicorn/filename-case":`off`,"unicorn/name-replacements":`off`,"unicorn/no-process-exit":`off`,"no-continue":`off`,"no-unused-vars":`off`,"ts/no-unused-vars":`off`}},{files:[c],name:`favorodera/disables/vue`,rules:{"vue/multi-word-component-names":`off`}},{files:[p],name:`favorodera/disables/test`,rules:{"no-unused-expressions":`off`}}]}const C=x;function w(e=[]){return[{ignores:typeof e==`function`?e(C):[...C,...e],name:`favorodera/ignores`}]}function T(...e){return Object.assign({},...e.flat().map(e=>e?.rules||{}))}async function E(e){let t=await e;return typeof t==`object`&&t&&`default`in t?t.default:t}function D(e,n){return e?t(e===!0?{}:e,n):!1}function O(e,t){let n={...e};for(let e of t)Reflect.deleteProperty(n,e);return n}async function k(){let e=await E(import(`eslint-plugin-import-lite`)),t=[o,s,c],n=e.configs.recommended,{rules:r={}}=n;return[{...O(n,[`rules`,`files`,`name`]),name:`favorodera/imports/setup`},{files:t,name:`favorodera/imports/rules`,rules:{...r,"import/consistent-type-specifier-style":[`error`,`prefer-top-level`],"import/first":`error`,"import/newline-after-import":[`error`,{count:1}],"import/no-duplicates":[`error`,{"prefer-inline":!0}],"import/no-mutable-exports":`error`,"import/no-named-default":`error`}}]}async function A(){let e=await E(import(`@eslint/js`)),t=[o,s,c];return[{languageOptions:{ecmaVersion:`latest`,globals:{...n.browser,...n.es2021,...n.node,document:`readonly`,navigator:`readonly`,window:`readonly`},sourceType:`module`},linterOptions:{reportUnusedDisableDirectives:!0},name:`favorodera/javascript/setup`},{files:t,name:`favorodera/javascript/rules`,rules:{...e.configs.recommended.rules,"array-callback-return":[`error`,{allowImplicit:!0}],"block-scoped-var":`error`,"default-case-last":`error`,"dot-notation":`error`,eqeqeq:`error`,"getter-return":[`error`,{allowImplicit:!0}],"new-cap":`error`,"no-alert":`error`,"no-array-constructor":`error`,"no-caller":`error`,"no-console":[`error`,{allow:[`warn`,`error`]}],"no-constructor-return":`error`,"no-continue":`error`,"no-else-return":`error`,"no-empty":[`error`,{allowEmptyCatch:!0}],"no-eq-null":`error`,"no-eval":`error`,"no-extend-native":`error`,"no-extra-bind":`error`,"no-implied-eval":`error`,"no-iterator":`error`,"no-labels":[`error`,{allowLoop:!1,allowSwitch:!1}],"no-lone-blocks":`error`,"no-loop-func":`error`,"no-multi-str":`error`,"no-negated-condition":`error`,"no-nested-ternary":`error`,"no-new":`error`,"no-new-func":`error`,"no-new-wrappers":`error`,"no-object-constructor":`error`,"no-octal-escape":`error`,"no-param-reassign":`error`,"no-promise-executor-return":`error`,"no-proto":`error`,"no-return-assign":`error`,"no-script-url":`error`,"no-self-compare":`error`,"no-sequences":`error`,"no-template-curly-in-string":`error`,"no-throw-literal":`error`,"no-undef-init":`error`,"no-unmodified-loop-condition":`error`,"no-unneeded-ternary":[`error`,{defaultAssignment:!1}],"no-unreachable-loop":`error`,"no-unused-expressions":[`error`,{allowShortCircuit:!0,allowTaggedTemplates:!0,allowTernary:!0}],"no-use-before-define":[`error`,{classes:!1,functions:!1}],"no-useless-call":`error`,"no-useless-computed-key":`error`,"no-useless-concat":`error`,"no-useless-constructor":`error`,"no-useless-rename":`error`,"no-useless-return":`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-template":`error`,"symbol-description":`error`,"unicode-bom":`error`,"valid-typeof":[`error`,{requireStringLiterals:!0}],"vars-on-top":`error`,yoda:`error`}}]}async function j(){let e=await E(import(`eslint-plugin-jsdoc`)),t=[o,s,c],n=e.configs[`flat/recommended-typescript-error`],r=e.configs[`flat/stylistic-typescript-error`],{rules:i={}}=n,a=O(n,[`rules`,`files`,`name`]),{rules:l={}}=r,u=O(r,[`rules`,`files`,`name`]),d={...i,...l};return[{...a,name:`favorodera/jsdoc/recommended/setup`},{...u,name:`favorodera/jsdoc/stylistic/setup`},{files:t,name:`favorodera/jsdoc/rules`,rules:{...d,"jsdoc/check-indentation":`error`,"jsdoc/check-template-names":`error`,"jsdoc/imports-as-dependencies":`error`,"jsdoc/lines-before-block":[`error`,{ignoreSingleLines:!1}],"jsdoc/multiline-blocks":`error`,"jsdoc/no-bad-blocks":`error`,"jsdoc/no-blank-block-descriptions":`error`,"jsdoc/no-blank-blocks":`error`,"jsdoc/sort-tags":`error`}}]}async function M(){return[{name:`favorodera/jsonc/setup`,plugins:{jsonc:await E(import(`eslint-plugin-jsonc`))}},{files:[h,g,m],language:`jsonc/x`,name:`favorodera/jsonc/rules`,rules:{"jsonc/array-bracket-newline":`error`,"jsonc/array-bracket-spacing":[`error`,`never`],"jsonc/array-element-newline":`error`,"jsonc/comma-dangle":[`error`,`never`],"jsonc/comma-style":[`error`,`last`],"jsonc/indent":[`error`,2],"jsonc/key-spacing":[`error`,{afterColon:!0,beforeColon:!1}],"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-irregular-whitespace":`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/object-curly-newline":[`error`,{consistent:!0,multiline:!0}],"jsonc/object-curly-spacing":[`error`,`always`],"jsonc/object-property-newline":[`error`,{allowAllPropertiesOnSameLine:!1}],"jsonc/quote-props":`error`,"jsonc/quotes":`error`,"jsonc/space-unary-ops":`error`,"jsonc/valid-json-number":`error`,"jsonc/vue-custom-block/no-parsing-error":`error`}},{files:[b],name:`favorodera/jsonc/sort/package-json`,rules:{"jsonc/sort-array-values":[`error`,{order:{type:`asc`},pathPattern:`^files$`}],"jsonc/sort-keys":[`error`,{order:/* @__PURE__ */ `publisher.name.displayName.type.version.private.packageManager.description.author.contributors.license.funding.homepage.repository.bugs.keywords.categories.sideEffects.imports.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`.split(`.`),pathPattern:`^$`},{order:{type:`asc`},pathPattern:`^(?:dev|peer|optional|bundled)?[Dd]ependencies(Meta)?$`},{order:{type:`asc`},pathPattern:`^(?:resolutions|overrides|pnpm.overrides)$`},{order:{type:`asc`},pathPattern:String.raw`^workspaces\.catalog$`},{order:{type:`asc`},pathPattern:String.raw`^workspaces\.catalogs\.[^.]+$`},{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)$`}]}},{files:_,name:`favorodera/jsonc/sort/tsconfig-json`,rules:{"jsonc/sort-keys":[`error`,{order:[`extends`,`compilerOptions`,`references`,`files`,`include`,`exclude`],pathPattern:`^$`},{order:/* @__PURE__ */ `incremental.composite.tsBuildInfoFile.disableSourceOfProjectReferenceRedirect.disableSolutionSearching.disableReferencedProjectLoad.target.jsx.jsxFactory.jsxFragmentFactory.jsxImportSource.lib.moduleDetection.noLib.reactNamespace.useDefineForClassFields.emitDecoratorMetadata.experimentalDecorators.libReplacement.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.isolatedDeclarations.isolatedModules.preserveSymlinks.verbatimModuleSyntax.erasableSyntaxOnly.skipDefaultLibCheck.skipLibCheck`.split(`.`),pathPattern:`^compilerOptions$`}]}}]}const N={gfm:!0};async function P(e){let n=t(e,N),a=await E(import(`@eslint/markdown`)),[o]=a.configs.recommended,{rules:s={}}=o;return[{...O(o,[`rules`,`files`,`name`,`language`]),name:`favorodera/markdown/setup`},{files:[l],ignores:[u],language:n.gfm?`md/gfm`:`md/commonmark`,languageOptions:{frontmatter:`yaml`},name:`favorodera/markdown/rules`,processor:r([a.processors?.markdown,i]),rules:s}]}async function F(){let e=await E(import(`eslint-plugin-n`)),t=[o,s,c],n=e.configs[`flat/recommended-module`],{rules:r={}}=n;return[{...O(n,[`rules`,`files`,`name`]),name:`favorodera/node/setup`},{files:t,name:`favorodera/node/rules`,rules:{...r,"node/callback-return":`error`,"node/handle-callback-err":[`error`,`^(err|error)$`],"node/no-callback-literal":`error`,"node/no-new-require":`error`,"node/no-path-concat":`error`,"node/no-unpublished-import":`error`,"node/prefer-global/buffer":`error`,"node/prefer-global/console":`error`,"node/prefer-global/crypto":`error`,"node/prefer-global/process":`error`,"node/prefer-global/text-decoder":`error`,"node/prefer-global/text-encoder":`error`,"node/prefer-global/timers":`error`,"node/prefer-global/url":`error`,"node/prefer-global/url-search-params":`error`,"node/prefer-node-protocol":`error`,"node/prefer-promises/dns":`error`,"node/prefer-promises/fs":`error`}}]}const I={ignoreCase:!0,locales:`en-US`,newlinesBetween:`ignore`,newlinesInside:`ignore`,order:`asc`,partitionByComment:!0,partitionByNewLine:!0,specialCharacters:`keep`,type:`natural`};async function L(e){let n=t(e,I),r=await E(import(`eslint-plugin-perfectionist`)),i=[o,s,c],a=n.type??`natural`,l=r.configs[`recommended-${a}`],{rules:u={}}=l;return[{...O(l,[`rules`,`settings`,`files`,`name`]),name:`favorodera/perfectionist/setup`,settings:{perfectionist:n}},{files:i,name:`favorodera/perfectionist/rules`,rules:u}]}async function R(){let[e,t]=await Promise.all([E(import(`eslint-plugin-pnpm`)),E(import(`yaml-eslint-parser`))]);return[{name:`favorodera/pnpm/setup`,plugins:{pnpm:e}},{files:[b],language:`jsonc/x`,name:`favorodera/pnpm/package-json`,rules:{"pnpm/json-enforce-catalog":[`error`,{autofix:!1,fields:[`dependencies`,`devDependencies`],ignores:[`@types/vscode`]}],"pnpm/json-prefer-workspace-settings":[`error`,{autofix:!0}],"pnpm/json-valid-catalog":[`error`,{autofix:!1}]}},{files:[y],languageOptions:{parser:t},name:`favorodera/pnpm/pnpm-workspace-yaml`,rules:{"pnpm/yaml-enforce-settings":[`error`,{settings:{allowBuilds:{esbuild:!0},shellEmulator:!0,trustPolicy:`no-downgrade`}}],"pnpm/yaml-no-duplicate-catalog-item":[`error`,{checkDuplicates:`exact-version`}],"pnpm/yaml-no-unused-catalog-item":`error`,"pnpm/yaml-valid-packages":`error`}}]}const z={braceStyle:`1tbs`,experimental:!1,indent:2,jsx:!1,quotes:`single`,semi:!1};async function B(e){let n=t(e,z),r=await E(import(`@stylistic/eslint-plugin`)),i=[o,s,c],a=r.configs.customize({pluginName:`style`,...n}),{rules:l={}}=a;return[{...O(a,[`rules`,`files`,`name`]),name:`favorodera/stylistic/setup`},{files:i,name:`favorodera/stylistic/rules`,rules:{...l,"style/array-bracket-newline":`error`,"style/array-element-newline":[`error`,`consistent`],"style/curly-newline":[`error`,`always`],"style/function-call-argument-newline":[`error`,`consistent`],"style/function-call-spacing":`error`,"style/function-paren-newline":`error`,"style/implicit-arrow-linebreak":`error`,"style/linebreak-style":`error`,"style/multiline-comment-style":[`error`,`separate-lines`],"style/newline-per-chained-call":`error`,"style/no-confusing-arrow":`error`,"style/no-extra-semi":`error`,"style/nonblock-statement-body-position":`error`,"style/object-curly-newline":`error`,"style/semi-style":`error`,"style/switch-colon-spacing":`error`,"style/wrap-regex":`error`}}]}const V={detectComponentClasses:!0};async function H(e){let n=t(e,V),r=await E(import(`eslint-plugin-better-tailwindcss`)),i=[o,s,c],a=r.configs[`recommended-error`],l=r.configs[`stylistic-error`],{rules:u}=a,d=O(a,[`rules`]),{rules:f}=l,p=O(l,[`rules`]),m={...u,...f};return[{...d,name:`favorodera/tailwind/recommended/setup`},{...p,name:`favorodera/tailwind/stylistic/setup`},{files:i,name:`favorodera/tailwind/rules`,rules:{...m,"tailwind/enforce-consistent-class-order":[`error`,{componentClassOrder:`asc`,componentClassPosition:`start`,order:`strict`,unknownClassOrder:`asc`,unknownClassPosition:`start`}],"tailwind/enforce-consistent-line-wrapping":[`error`,{group:`emptyLine`}],"tailwind/enforce-consistent-variant-order":`error`,"tailwind/enforce-logical-properties":`error`},settings:{"better-tailwindcss":n}}]}async function U(){let e=await E(import(`@vitest/eslint-plugin`)),t=[p],n=e.configs.recommended,{rules:r}=n;return[{...O(n,[`rules`,`name`]),name:`favorodera/test/setup`},{files:t,name:`favorodera/test/rules`,rules:{...r,"test/consistent-each-for":[`error`,{describe:`for`,it:`for`,suite:`for`,test:`for`}],"test/consistent-test-it":[`error`,{fn:`it`,withinDescribe:`it`}],"test/consistent-vitest-vi":`error`,"test/hoisted-apis-on-top":`error`,"test/max-expects":`error`,"test/max-nested-describe":`error`,"test/no-alias-methods":`error`,"test/no-conditional-in-test":`error`,"test/no-conditional-tests":`error`,"test/no-duplicate-hooks":`error`,"test/no-hooks":`error`,"test/no-large-snapshots":`warn`,"test/no-test-prefixes":`error`,"test/no-test-return-statement":`error`,"test/padding-around-all":`error`,"test/prefer-called-times":`error`,"test/prefer-called-with":`error`,"test/prefer-comparison-matcher":`error`,"test/prefer-each":`error`,"test/prefer-equality-matcher":`error`,"test/prefer-expect-resolves":`error`,"test/prefer-expect-type-of":`error`,"test/prefer-hooks-in-order":`error`,"test/prefer-hooks-on-top":`error`,"test/prefer-import-in-mock":`error`,"test/prefer-importing-vitest-globals":`error`,"test/prefer-lowercase-title":`error`,"test/prefer-mock-promise-shorthand":`error`,"test/prefer-mock-return-shorthand":`error`,"test/prefer-snapshot-hint":`error`,"test/prefer-spy-on":`error`,"test/prefer-strict-boolean-matchers":`error`,"test/prefer-strict-equal":`error`,"test/prefer-to-be":`error`,"test/prefer-to-be-object":`error`,"test/prefer-to-contain":`error`,"test/prefer-to-have-been-called-times":`error`,"test/prefer-to-have-length":`error`,"test/prefer-todo":`error`,"test/prefer-vi-mocked":`error`,"test/require-awaited-expect-poll":`error`,"test/require-hook":`error`,"test/require-to-throw-message":`error`,"test/require-top-level-describe":`error`,"test/warn-todo":`warn`}}]}async function W(){let e=await E(import(`typescript-eslint`)),t=[s],[n,r,i]=e.configs.strict,a=e.configs.stylistic[2],o=O(n,[`rules`,`name`]),c={...r?.rules,...i?.rules,...a?.rules};return[{...o,name:`favorodera/typescript/setup`},{files:t,name:`favorodera/typescript/rules`,rules:{...c,"ts/array-type":[`error`,{default:`generic`,readonly:`generic`}],"ts/consistent-type-imports":`error`,"ts/default-param-last":`error`,"ts/method-signature-style":`error`,"ts/no-import-type-side-effects":`error`,"ts/no-redeclare":`error`}}]}async function G(){let e=await E(import(`eslint-plugin-unicorn`)),t=[o,s,c],n=e.configs.recommended,{rules:r={}}=n;return[{...O(n,[`rules`,`files`,`name`]),name:`favorodera/unicorn/setup`},{files:t,name:`favorodera/unicorn/rules`,rules:{...r,"unicorn/prefer-query-selector":[`error`,{allowWithVariables:!0}],"unicorn/single-line-block-comment-style":[`error`,`single-line`]}}]}async function K(){return[{name:`favorodera/unused-imports/setup`,plugins:{"unused-imports":await E(import(`eslint-plugin-unused-imports`))}},{files:[o,s,c],name:`favorodera/unused-imports/rules`,rules:{"unused-imports/no-unused-imports":`error`,"unused-imports/no-unused-vars":[`error`,{args:`after-used`,argsIgnorePattern:`^_`,ignoreRestSiblings:!0,vars:`all`,varsIgnorePattern:`^_`}]}}]}const q={blocks:{customBlocks:!0,styles:!0,template:!1}},J={sfcBlocks:q};async function Y(e){let n=D(t(e,J).sfcBlocks,q),[i,o,s,l]=await Promise.all([E(import(`eslint-plugin-vue`)),E(import(`vue-eslint-parser`)),E(import(`typescript-eslint`)),E(import(`eslint-plugin-vuejs-accessibility`))]),u=i.configs[`flat/recommended-error`],d=l.configs[`flat/recommended`],[f]=u,p=O(f,[`rules`,`files`,`name`]),m=T(u),[h]=d,g=O(h,[`name`]),_=T(d),v=n===!1?i.processors[`.vue`]:r([i.processors[`.vue`],a(n)]);return[{...p,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:`favorodera/vue/setup`},{...g,name:`favorodera/vue/a11y/setup`},{files:[c],languageOptions:{parser:o,parserOptions:{extraFileExtensions:[`.vue`],parser:s.parser,sourceType:`module`}},name:`favorodera/vue/rules`,processor:v,rules:{...m,"vue/block-lang":[`error`,{script:{lang:`ts`}}],"vue/block-order":[`error`,{order:[`script`,`template`,`style`]}],"vue/block-tag-newline":[`error`,{multiline:`always`,singleline:`always`}],"vue/comment-directive":[`error`,{reportUnusedDisableDirectives:!0}],"vue/define-macros-order":[`error`,{defineExposeLast:!0,order:[`defineOptions`,`definePage`,`defineSlots`,`defineEmits`,`defineProps`,`defineModel`]}],"vue/define-props-declaration":[`error`,`type-based`],"vue/define-props-destructuring":[`error`,{destructure:`never`}],"vue/next-tick-style":[`error`,`promise`],"vue/no-import-compiler-macros":`error`,"vue/no-negated-v-if-condition":`error`,"vue/no-reserved-component-names":[`error`,{disallowVue3BuiltInComponents:!0,disallowVueBuiltInComponents:!0,htmlElementCaseSensitive:!1}],"vue/no-root-v-if":`error`,"vue/no-template-target-blank":`error`,"vue/no-unused-emit-declarations":`error`,"vue/no-unused-properties":`error`,"vue/no-unused-refs":`error`,"vue/no-use-v-else-with-v-for":`error`,"vue/no-useless-mustaches":`error`,"vue/no-useless-v-bind":`error`,"vue/padding-line-between-blocks":`error`,"vue/padding-line-between-tags":[`error`,[{blankLine:`always`,next:`*`,prev:`*`}]],"vue/prefer-prop-type-boolean-first":`error`,"vue/prefer-separate-static-class":`error`,"vue/prefer-single-event-payload":`error`,"vue/prefer-use-template-ref":`error`,"vue/slot-name-casing":[`error`,`kebab-case`],"vue/v-for-delimiter-style":[`error`,`in`]}},{files:[c],name:`favorodera/vue/a11y/rules`,rules:{..._,"vue-a11y/form-control-has-label":[`error`,{controlComponents:[],labelComponents:[]}],"vue-a11y/label-has-for":[`error`,{allowChildren:!0,components:[],controlComponents:[],required:{some:[`nesting`,`id`]}}],"vue-a11y/no-aria-hidden-on-focusable":`error`,"vue-a11y/no-role-presentation-on-focusable":`error`}}]}async function X(){let[e,t]=await Promise.all([E(import(`eslint-plugin-yml`)),E(import(`yaml-eslint-parser`))]),n=e.configs.standard,[r]=n,i=O(r,[`rules`,`files`,`name`]),a=T(n);return[{...i,name:`favorodera/yaml/setup`},{files:[v],language:`yaml/yaml`,languageOptions:{parser:t},name:`favorodera/yaml/rules`,rules:{...a,"yaml/quotes":[`error`,{avoidEscape:!0,prefer:`single`}],"yaml/require-string-key":`error`}},{files:[y],language:`yaml/yaml`,languageOptions:{parser:t},name:`favorodera/yaml/sort/pnpm-workspace-yaml`,rules:{"yaml/sort-keys":[`error`,{order:/* @__PURE__ */ `cacheDir.catalogMode.cleanupUnusedCatalogs.dedupeDirectDeps.deployAllFiles.enablePrePostScripts.engineStrict.extendNodePath.hoist.hoistPattern.hoistWorkspacePackages.ignoreCompatibilityDb.ignoreDepScripts.ignoreScripts.ignoreWorkspaceRootCheck.managePackageManagerVersions.minimumReleaseAge.minimumReleaseAgeExclude.modulesDir.nodeLinker.nodeVersion.optimisticRepeatInstall.packageManagerStrict.packageManagerStrictVersion.preferSymlinkedExecutables.preferWorkspacePackages.publicHoistPattern.registrySupportsTimeField.requiredScripts.resolutionMode.savePrefix.scriptShell.shamefullyHoist.shellEmulator.stateDir.supportedArchitectures.symlink.tag.trustPolicy.trustPolicyExclude.updateNotifier.packages.overrides.patchedDependencies.catalog.catalogs.allowedDeprecatedVersions.allowNonAppliedPatches.configDependencies.ignoredBuiltDependencies.ignoredOptionalDependencies.neverBuiltDependencies.onlyBuiltDependencies.onlyBuiltDependenciesFile.packageExtensions.peerDependencyRules`.split(`.`),pathPattern:`^$`},{order:{type:`asc`},pathPattern:`.*`}]}}]}function Z(t={}){let n=[w(t.ignores)],r={imports:k,javascript:A,jsdoc:j,jsonc:M,markdown:P,node:F,perfectionist:L,pnpm:R,stylistic:B,tailwind:H,test:U,typescript:W,unicorn:G,unusedImports:K,vue:Y,yaml:X};for(let[e,i]of Object.entries(r)){let r=t[e],a=D(r??!0,{});a&&n.push(i(a))}let i=new e;return i=i.append(...n).append(...S()).renamePlugins({"@typescript-eslint":`ts`,"better-tailwindcss":`tailwind`,"import-lite":`import`,markdown:`md`,n:`node`,vitest:`test`,"vuejs-accessibility":`vue-a11y`,yml:`yaml`}),i}export{d as codeInMdGlob,T as extractRules,Z as factory,x as ignoresGlob,E as importModule,o as jsGlob,h as json5Glob,m as jsonGlob,g as jsoncGlob,l as mdGlob,u as mdInMdGlob,O as omit,b as packageJsonGlob,y as pnpmWorkspaceGlob,f as scriptsGlob,p as testGlob,_ as tsConfigGlob,s as tsGlob,c as vueGlob,v as yamlGlob};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@favorodera/eslint-config",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.4.0",
|
|
5
5
|
"private": false,
|
|
6
6
|
"description": "Opinionated, type-safe flat ESLint configuration factory for Vue, TypeScript, Tailwind, and more.",
|
|
7
7
|
"author": "Favour Emeka <favorodera@gmail.com>",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"eslint-plugin-n": "^18.3.0",
|
|
58
58
|
"eslint-plugin-perfectionist": "^5.11.0",
|
|
59
59
|
"eslint-plugin-pnpm": "^1.9.1",
|
|
60
|
-
"eslint-plugin-unicorn": "^
|
|
60
|
+
"eslint-plugin-unicorn": "^76.0.0",
|
|
61
61
|
"eslint-plugin-unused-imports": "^4.4.1",
|
|
62
62
|
"eslint-plugin-vue": "^10.10.0",
|
|
63
63
|
"eslint-plugin-vuejs-accessibility": "^2.6.0",
|