{ "$schema": "https://json.schemastore.org/eslintrc", "ignorePatterns": [ "dist", "public", "node_modules", "packages/schema/schema" ], "globals": { "NodeJS": true, "$fetch": true }, "plugins": ["jsdoc", "import", "unicorn", "no-only-tests"], "extends": [ "plugin:jsdoc/recommended", "@nuxt/eslint-config", "plugin:import/typescript" ], "rules": { "sort-imports": [ "error", { "ignoreDeclarationSort": true } ], "no-only-tests/no-only-tests": "error", "unicorn/prefer-node-protocol": "error", "no-console": "warn", "vue/one-component-per-file": "off", "vue/require-default-prop": "off", // Vue stylistic rules from `@antfu/eslint-config` "vue/array-bracket-spacing": ["error", "never"], "vue/arrow-spacing": ["error", { "after": true, "before": true }], "vue/block-spacing": ["error", "always"], "vue/block-tag-newline": [ "error", { "multiline": "always", "singleline": "always" } ], "vue/brace-style": ["error", "stroustrup", { "allowSingleLine": true }], "vue/comma-dangle": ["error", "always-multiline"], "vue/comma-spacing": ["error", { "after": true, "before": false }], "vue/comma-style": ["error", "last"], "vue/html-comment-content-spacing": [ "error", "always", { "exceptions": ["-"] } ], "vue/key-spacing": ["error", { "afterColon": true, "beforeColon": false }], "vue/keyword-spacing": ["error", { "after": true, "before": true }], "vue/object-curly-newline": "off", "vue/object-curly-spacing": ["error", "always"], "vue/object-property-newline": [ "error", { "allowMultiplePropertiesPerLine": true } ], "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", "jsdoc/require-jsdoc": "off", "jsdoc/require-param": "off", "jsdoc/require-returns": "off", "jsdoc/require-param-type": "off", "import/order": [ "error", { "pathGroups": [ { "pattern": "#vue-router", "group": "external" } ] } ], "import/no-restricted-paths": [ "error", { "zones": [ { "from": "packages/nuxt/src/!(core)/**/*", "target": "packages/nuxt/src/core", "message": "core should not directly import from modules." }, { "from": "packages/nuxt/src/!(app)/**/*", "target": "packages/nuxt/src/app", "message": "app should not directly import from modules." }, { "from": "packages/nuxt/src/app/**/index.ts", "target": "packages/nuxt/src", "message": "should not import from barrel/index files" }, { "from": "packages/nitro", "target": "packages/!(nitro)/**/*", "message": "nitro should not directly import other packages." } ] } ], "@typescript-eslint/consistent-type-imports": [ "error", { "disallowTypeAnnotations": false } ], "@typescript-eslint/ban-ts-comment": [ "error", { "ts-expect-error": "allow-with-description", "ts-ignore": true } ], "@typescript-eslint/prefer-ts-expect-error": "error", "@typescript-eslint/no-unused-vars": [ "error", { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_", "ignoreRestSiblings": true } ], "jsdoc/check-tag-names": [ "error", { "definedTags": ["__NO_SIDE_EFFECTS__"] } ] }, "overrides": [ { "files": ["packages/schema/**"], "rules": { "jsdoc/valid-types": "off", "jsdoc/check-tag-names": [ "error", { "definedTags": ["experimental"] } ] } }, { "files": ["packages/nuxt/src/app/**", "test/**", "**/runtime/**"], "rules": { "no-console": "off" } } ], "settings": { "jsdoc": { "ignoreInternal": true, "tagNamePreference": { "warning": "warning", "note": "note" } } } }