diff --git a/.changeset/README.md b/.changeset/README.md new file mode 100644 index 000000000..e5b6d8d6a --- /dev/null +++ b/.changeset/README.md @@ -0,0 +1,8 @@ +# Changesets + +Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works +with multi-package repos, or single-package repos to help you version and publish your code. You can +find the full documentation for it [in our repository](https://github.com/changesets/changesets) + +We have a quick list of common questions to get you started engaging with this project in +[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) diff --git a/.changeset/config.json b/.changeset/config.json new file mode 100644 index 000000000..43b72b358 --- /dev/null +++ b/.changeset/config.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://unpkg.com/@changesets/config/schema.json", + "changelog": [ + "@svitejs/changesets-changelog-github-compact", + { + "repo": "vuejs/eslint-plugin-vue" + } + ], + "commit": false, + "linked": [], + "access": "public", + "baseBranch": "master", + "bumpVersionsWithWorkspaceProtocolOnly": true, + "ignore": [] +} diff --git a/.changeset/smooth-jokes-eat.md b/.changeset/smooth-jokes-eat.md new file mode 100644 index 000000000..e5f3a14a8 --- /dev/null +++ b/.changeset/smooth-jokes-eat.md @@ -0,0 +1,5 @@ +--- +"eslint-plugin-vue": patch +--- + +Updates resources diff --git a/.changeset/true-oranges-heal.md b/.changeset/true-oranges-heal.md new file mode 100644 index 000000000..eba8b9a99 --- /dev/null +++ b/.changeset/true-oranges-heal.md @@ -0,0 +1,5 @@ +--- +'eslint-plugin-vue': patch +--- + +[vue/no-restricted-html-elements](https://eslint.vuejs.org/rules/no-restricted-html-elements.html) now also checks SVG and MathML elements. diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index fdcea4006..000000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,102 +0,0 @@ -workflows: - version: 2 - node-multi-build: - jobs: - - node-v6: - filters: - branches: - ignore: gh-pages - - node-v8: - filters: - branches: - ignore: gh-pages - - node-v10: - filters: - branches: - ignore: gh-pages - - node-v10-minimal: - filters: - branches: - ignore: gh-pages - - deploy_docs: - requires: - - node-v10 - filters: - branches: - only: master - -version: 2 -jobs: - node-base: &node-base - docker: - - image: node - steps: - - run: - name: Versions - command: npm version - - checkout - - restore_cache: - keys: - - v2-npm-lock-{{ .Branch }}-{{ .Environment.CIRCLE_JOB }}-{{ checksum "package.json" }} - - run: - name: Install dependencies - command: npm install - - save_cache: - key: v2-npm-lock-{{ .Branch }}-{{ .Environment.CIRCLE_JOB }}-{{ checksum "package.json" }} - paths: - - node_modules - - run: - name: Test - command: npm test - - node-v6: - <<: *node-base - docker: - - image: node:6 - node-v8: - <<: *node-base - docker: - - image: node:8 - node-v10: - <<: *node-base - docker: - - image: node:10 - node-v10-minimal: - steps: - - run: - name: Versions - command: npm version - - checkout - - restore_cache: - keys: - - v2-npm-lock-{{ .Branch }}-{{ .Environment.CIRCLE_JOB }}-{{ checksum "package.json" }} - - run: - name: Install dependencies - command: npm install - - run: - name: Install eslint 5 - command: npm install eslint@5.0.0 --no-save - - run: - name: Test - command: npm test - - save_cache: - key: v2-npm-lock-{{ .Branch }}-{{ .Environment.CIRCLE_JOB }}-{{ checksum "package.json" }} - paths: - - node_modules - docker: - - image: node:10 - - deploy_docs: - docker: - - image: node:10 - steps: - - checkout - - restore_cache: - keys: - - v2-npm-lock-{{ .Branch }}-{{ .Environment.CIRCLE_JOB }}-{{ checksum "package.json" }} - - run: - name: Install dependencies - command: npm install - - run: - name: Deploy to Github Pages - command: npm run docs:deploy diff --git a/.env-cmdrc b/.env-cmdrc new file mode 100644 index 000000000..59d3db357 --- /dev/null +++ b/.env-cmdrc @@ -0,0 +1,5 @@ +{ + "version": { + "IN_VERSION_SCRIPT": "true" + } +} diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 20f3203c8..000000000 --- a/.eslintignore +++ /dev/null @@ -1,8 +0,0 @@ -/.nyc_output -/coverage -/node_modules -/tests/fixtures -/tests/integrations/*/node_modules - -!.vuepress -/docs/.vuepress/dist diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index b8f76a4f4..000000000 --- a/.eslintrc.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict' - -const version = require('./package.json').version - -module.exports = { - root: true, - parserOptions: { - ecmaVersion: 6 - }, - env: { - node: true, - mocha: true - }, - extends: [ - 'plugin:eslint-plugin/recommended', - 'plugin:vue-libs/recommended' - ], - plugins: [ - 'eslint-plugin' - ], - rules: { - 'eslint-plugin/report-message-format': ['error', '^[A-Z`\'{].*\\.$'], - 'eslint-plugin/prefer-placeholders': 'error', - 'eslint-plugin/consistent-output': 'error', - 'no-mixed-operators': 'error' - }, - - overrides: [{ - files: ['lib/rules/*.js'], - rules: { - "consistent-docs-description": "error", - "no-invalid-meta": "error", - "require-meta-docs-url": ["error", { - "pattern": `https://github.com/vuejs/eslint-plugin-vue/blob/v${version}/docs/rules/{{name}}.md` - }] - } - }] -} diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 000000000..c4d031e9c --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,3 @@ +github: + - ota-meshi + - FloEdelmann diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 1dd689274..08d755127 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,23 +1,38 @@ --- name: Bug report about: Create a report to help us improve - --- + + -**Tell us about your environment** -* **ESLint version:** -* **eslint-plugin-vue version:** -* **Node version:** +**Checklist** + +- [ ] I have tried restarting my IDE and the issue persists. +- [ ] I have read the [FAQ](https://eslint.vuejs.org/user-guide/#faq) and my problem is not listed. + + +**Tell us about your environment** + +- **ESLint version:** +- **eslint-plugin-vue version:** +- **Vue version:** +- **Node version:** +- **Operating System:** **Please show your full configuration:** -```json +```json5 ``` @@ -31,4 +46,15 @@ about: Create a report to help us improve **What actually happened?** - + + +**Repository to reproduce this issue** + + diff --git a/.github/ISSUE_TEMPLATE/change.md b/.github/ISSUE_TEMPLATE/change.md new file mode 100644 index 000000000..02397f6cd --- /dev/null +++ b/.github/ISSUE_TEMPLATE/change.md @@ -0,0 +1,27 @@ +--- +name: "Non-rule change request" +about: Request a change that is not a bug fix, rule change, or new rule +--- + + + +**Tell us about your environment** + +- **ESLint version:** +- **eslint-plugin-vue version:** +- **Vue version:** +- **Node version:** + +**The problem you want to solve.** + + +**Your take on the correct solution to problem.** + + +**Additional context** + + diff --git a/.github/ISSUE_TEMPLATE/rule-change.md b/.github/ISSUE_TEMPLATE/rule-change.md new file mode 100644 index 000000000..78a3a2dd1 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/rule-change.md @@ -0,0 +1,31 @@ +--- +name: "Rule change request" +about: Request a change to an existing rule +--- + + + +**What rule do you want to change?** + +**Does this change cause the rule to produce more or fewer warnings?** + +**How will the change be implemented? (New option, new default behavior, etc.)?** + +**Please provide some example code that this change will affect:** + + +```vue + +``` + +**What does the rule currently do for this code?** + +**What will the rule do after it's changed?** + +**Additional context** + + diff --git a/.github/ISSUE_TEMPLATE/rule-proposal.md b/.github/ISSUE_TEMPLATE/rule-proposal.md index 7130c789f..6c571721c 100644 --- a/.github/ISSUE_TEMPLATE/rule-proposal.md +++ b/.github/ISSUE_TEMPLATE/rule-proposal.md @@ -1,7 +1,6 @@ --- name: Rule Proposal about: Suggest an idea for a new rule - --- -- [ ] Enforces code style -- [ ] Warns about a potential error -- [ ] Suggests an alternate way of doing something -- [ ] Other (please specify:) +[ ] Enforces code style (layout) +[ ] Warns about a potential error (problem) +[ ] Suggests an alternate way of doing something (suggestion) +[ ] Other (please specify:) **Provide 2-3 code examples that this rule should warn about:** + ```vue ``` **Additional context** + diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml new file mode 100644 index 000000000..57aa5876d --- /dev/null +++ b/.github/workflows/CI.yml @@ -0,0 +1,68 @@ +name: CI +on: + push: + branches: + - 'master' + pull_request: + types: + - 'opened' + - 'synchronize' + - 'reopened' + +permissions: + contents: read + +jobs: + lint: + name: Lint + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Install Node.js + uses: actions/setup-node@v4 + - name: Install Packages + run: npm install --legacy-peer-deps + - name: Lint + run: npm run lint + + test: + name: Test + strategy: + matrix: + node: [18, 20, 21, 'lts/*'] + eslint: [9] + include: + # On old ESLint version + - node: 18 + eslint: 8 + + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Install Node.js v${{ matrix.node }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node }} + - name: Install Packages + run: npm install -f + - name: Install ESLint v${{ matrix.eslint }} + run: npm install --save-dev eslint@${{ matrix.eslint }} -f + - name: Test + run: npm test + + test-without-eslint-stylistic: + name: Test without ESLint Stylistic + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Install Node.js + uses: actions/setup-node@v4 + - name: Install Packages + run: npm install -f + - name: Uninstall @stylistic/eslint-plugin + run: npm uninstall -D @stylistic/eslint-plugin + - name: Test + run: npm test diff --git a/.github/workflows/Release.yml b/.github/workflows/Release.yml new file mode 100644 index 000000000..260b73582 --- /dev/null +++ b/.github/workflows/Release.yml @@ -0,0 +1,35 @@ +name: Release + +on: + push: + branches: + - master + +permissions: {} + +jobs: + release: + # prevents this action from running on forks + if: github.repository == 'vuejs/eslint-plugin-vue' + permissions: + contents: write # to create release (changesets/action) + pull-requests: write # to create pull request (changesets/action) + name: Release + runs-on: ubuntu-latest + steps: + - name: Checkout Repo + uses: actions/checkout@v4 + - name: Setup Node.js + uses: actions/setup-node@v4 + - name: Install Dependencies + run: npm install -f + + - name: Create Release Pull Request or Publish to npm + id: changesets + uses: changesets/action@v1 + with: + version: npm run changeset:version + publish: npm run changeset:publish + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/check-for-resources-update.yml b/.github/workflows/check-for-resources-update.yml new file mode 100644 index 000000000..31f881b1d --- /dev/null +++ b/.github/workflows/check-for-resources-update.yml @@ -0,0 +1,31 @@ +name: Check for utils resources update +on: + workflow_dispatch: null + schedule: + - cron: 0 0 * * 0 # At 00:00 on Sunday, see https://crontab.guru/#0_0_*_*_0 + +permissions: + contents: write + pull-requests: write + +jobs: + check-for-resources-update: + runs-on: ubuntu-latest + if: ${{ github.repository == 'vuejs/eslint-plugin-vue' }} + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Install Node.js + uses: actions/setup-node@v4 + with: + node-version: 18 + - name: Install Packages + run: npm install + - name: Update + run: npm run update-resources + - uses: peter-evans/create-pull-request@v7 + with: + commit-message: Updates resources + branch: update-resources + branch-suffix: timestamp + title: Updates resources diff --git a/.gitignore b/.gitignore index 688618a31..797d0cbcd 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,9 @@ /test.* yarn.lock yarn-error.log -docs/.vuepress/dist +/docs/.vitepress/dist +/docs/.vitepress/build-system/shim/eslint.mjs +/docs/.vitepress/build-system/shim/assert.mjs +/docs/.vitepress/.temp +/docs/.vitepress/cache +typings/eslint/lib/rules diff --git a/.markdownlint.yml b/.markdownlint.yml new file mode 100644 index 000000000..6591a3543 --- /dev/null +++ b/.markdownlint.yml @@ -0,0 +1,26 @@ +line-length: false +link-fragments: false +single-title: false +no-inline-html: + allowed_elements: + - badge + - eslint-code-block + - sup + - rules-table + - span + +# enforce consistency +code-block-style: + style: fenced +code-fence-style: + style: backtick +emphasis-style: + style: underscore +heading-style: + style: atx +hr-style: + style: --- +strong-style: + style: asterisk +ul-style: + style: dash diff --git a/.markdownlintignore b/.markdownlintignore new file mode 100644 index 000000000..e7becf85b --- /dev/null +++ b/.markdownlintignore @@ -0,0 +1,2 @@ +node_modules +CHANGELOG.md diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000..d341f1772 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,2 @@ +tests/fixtures/ +.github/ISSUE_TEMPLATE/*.md diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 000000000..38d9aa9aa --- /dev/null +++ b/.prettierrc @@ -0,0 +1,4 @@ +semi: false +singleQuote: true +printWidth: 80 +trailingComma: none diff --git a/.vscode/launch.json b/.vscode/launch.json index 324a79864..2fa4db9b2 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -6,10 +6,7 @@ "request": "launch", "name": "Start testing", "program": "${workspaceFolder}/node_modules/.bin/mocha", - "args": [ - "${file}", - "--watch" - ], + "args": ["${file}", "--watch"], "console": "integratedTerminal" } ] diff --git a/.vscode/settings.json b/.vscode/settings.json index 7bd96f8d9..f80681b66 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,11 +1,15 @@ { - "editor.tabSize": 2, - "eslint.options": { - "rulePaths": ["eslint-internal-rules"] - }, - "eslint.validate": [ - "javascript", - "javascriptreact", - { "language": "vue", "autoFix": true } - ] + "editor.tabSize": 2, + "eslint.experimental.useFlatConfig": true, + "eslint.validate": ["javascript", "javascriptreact", "vue", "json", "jsonc"], + "typescript.tsdk": "./node_modules/typescript/lib", + "vetur.validation.script": false, + "[typescript]": { + "editor.formatOnSave": true, + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[javascript]": { + "editor.formatOnSave": true, + "editor.defaultFormatter": "esbenp.prettier-vscode" + } } diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..b21ab6f6f --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,11 @@ +# eslint-plugin-vue + +## 10.2.0 + +### Minor Changes + +- [vue/no-restricted-html-elements](https://eslint.vuejs.org/rules/no-restricted-html-elements.html) now accepts multiple elements in each entry. ([#2750](https://github.com/vuejs/eslint-plugin-vue/pull/2750)) + +### Patch Changes + +- Updates resources ([#2747](https://github.com/vuejs/eslint-plugin-vue/pull/2747)) diff --git a/README.md b/README.md index a983f6e42..bdeb5e167 100644 --- a/README.md +++ b/README.md @@ -2,52 +2,54 @@ [![NPM version](https://img.shields.io/npm/v/eslint-plugin-vue.svg?style=flat)](https://npmjs.org/package/eslint-plugin-vue) [![NPM downloads](https://img.shields.io/npm/dm/eslint-plugin-vue.svg?style=flat)](https://npmjs.org/package/eslint-plugin-vue) -[![CircleCI](https://img.shields.io/circleci/project/github/vuejs/eslint-plugin-vue/master.svg?style=flat)](https://circleci.com/gh/vuejs/eslint-plugin-vue) -[![License](https://img.shields.io/github/license/vuejs/eslint-plugin-vue.svg?style=flat)](https://github.com/vuejs/eslint-plugin-vue/blob/master/LICENSE.md) +[![CI](https://img.shields.io/github/actions/workflow/status/vuejs/eslint-plugin-vue/CI.yml?style=flat&label=CI)](https://github.com/vuejs/eslint-plugin-vue/actions/workflows/CI.yml) +[![License](https://img.shields.io/github/license/vuejs/eslint-plugin-vue.svg?style=flat)](https://github.com/vuejs/eslint-plugin-vue/blob/master/LICENSE) > Official ESLint plugin for Vue.js ## :book: Documentation -See https://vuejs.github.io/eslint-plugin-vue/ +Please refer to the [official website](https://eslint.vuejs.org). ## :anchor: Versioning Policy -This plugin is following [Semantic Versioning](http://semver.org/) and [ESLint's Semantic Versioning Policy](https://github.com/eslint/eslint#semantic-versioning-policy). +This plugin follows [Semantic Versioning]. +However, please note that we do not follow [ESLint's Semantic Versioning Policy]. +In minor version releases, this plugin may change the sharable configs provided by the plugin or the default behavior of the plugin's rules in order to add features to the plugin. Because we want to add many features to the plugin soon, so that users can easily take advantage of new features in Vue and Nuxt. -## :newspaper: Changelog +According to our policy, any minor update may report more linting errors than the previous release. As such, we recommend using the [tilde (`~`)](https://semver.npmjs.com/#syntax-examples) in `package.json` to guarantee the results of your builds. -We're using [GitHub Releases](https://github.com/vuejs/eslint-plugin-vue/releases). +[Semantic Versioning]: https://semver.org/ +[ESLint's Semantic Versioning Policy]: https://github.com/eslint/eslint#semantic-versioning-policy -## :beers: Contribution guide +## :newspaper: Releases -Contributing is welcome! +This project uses [GitHub Releases](https://github.com/vuejs/eslint-plugin-vue/releases). -See https://vuejs.github.io/eslint-plugin-vue/developer-guide/ +## :beers: Contribution Guide -### Working with rules +Contributing is welcome! See the [ESLint Vue Plugin Developer Guide](https://eslint.vuejs.org/developer-guide). -Before you start writing new rule, please read the [official ESLint guide](https://eslint.org/docs/developer-guide/working-with-rules). +### Working With Rules -Next in order to get an idea how does the AST of the code that you want to check looks like, you can use one of the following applications: -- [astexplorer.net](http://astexplorer.net/) - best tool to inspect ASTs, but it doesn't support Vue templates yet -- [ast.js.org](https://ast.js.org/) - not fully featured, but supports Vue templates syntax +Be sure to read the [official ESLint guide](https://eslint.org/docs/developer-guide/working-with-rules) before you start writing a new rule. -Since single file components in Vue are not plain JavaScript, we can't use the default parser, and we had to introduce additional one: `vue-eslint-parser`, that generates enhanced AST with nodes that represent specific parts of the template syntax, as well as what's inside the ` + + + + diff --git a/docs/.vitepress/theme/components/eslint-code-block.vue b/docs/.vitepress/theme/components/eslint-code-block.vue new file mode 100644 index 000000000..77d4fd7cf --- /dev/null +++ b/docs/.vitepress/theme/components/eslint-code-block.vue @@ -0,0 +1,234 @@ + + + + + diff --git a/docs/.vitepress/theme/components/rules-table.vue b/docs/.vitepress/theme/components/rules-table.vue new file mode 100644 index 000000000..c517d4591 --- /dev/null +++ b/docs/.vitepress/theme/components/rules-table.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/docs/.vitepress/theme/index.ts b/docs/.vitepress/theme/index.ts new file mode 100644 index 000000000..757e63cab --- /dev/null +++ b/docs/.vitepress/theme/index.ts @@ -0,0 +1,32 @@ +// @ts-expect-error -- Browser +if (typeof window !== 'undefined') { + if (typeof require === 'undefined') { + // @ts-expect-error -- Browser + ;(window as any).require = () => { + const e = new Error('require is not defined') + ;(e as any).code = 'MODULE_NOT_FOUND' + throw e + } + } +} +// @ts-expect-error -- Cannot change `module` option +import type { Theme } from 'vitepress' +// @ts-expect-error -- Cannot change `module` option +import DefaultTheme from 'vitepress/theme' +// @ts-expect-error -- ignore +import Layout from './Layout.vue' +// @ts-expect-error -- ignore +import ESLintCodeBlock from './components/eslint-code-block.vue' +// @ts-expect-error -- ignore +import RulesTable from './components/rules-table.vue' + +const theme: Theme = { + ...DefaultTheme, + Layout, + enhanceApp(ctx) { + DefaultTheme.enhanceApp(ctx) + ctx.app.component('eslint-code-block', ESLintCodeBlock) + ctx.app.component('rules-table', RulesTable) + } +} +export default theme diff --git a/docs/.vitepress/vite-plugin.mts b/docs/.vitepress/vite-plugin.mts new file mode 100644 index 000000000..cd6811cb6 --- /dev/null +++ b/docs/.vitepress/vite-plugin.mts @@ -0,0 +1,83 @@ +import type { UserConfig } from 'vitepress' +import path from 'pathe' +import { fileURLToPath } from 'url' +import esbuild from 'esbuild' +type Plugin = Extract< + NonNullable['plugins']>[number], + { name: string } +> + +const libRoot = path.join(fileURLToPath(import.meta.url), '../../../lib') +export function vitePluginRequireResolve(): Plugin { + return { + name: 'vite-plugin-require.resolve', + transform(code, id, _options) { + if (id.startsWith(libRoot)) { + return code.replace(/require\.resolve/gu, '(function(){return 0})') + } + return undefined + } + } +} + +export function viteCommonjs(): Plugin { + return { + name: 'vite-plugin-cjs-to-esm', + apply: () => true, + async transform(code, id) { + if (!id.startsWith(libRoot)) { + return undefined + } + const base = transformRequire(code) + try { + const transformed = esbuild.transformSync(base, { + format: 'esm' + }) + return transformed.code + } catch (e) { + console.error('Transform error. base code:\n' + base, e) + } + return undefined + } + } +} + +/** + * Transform `require()` to `import` + */ +function transformRequire(code: string) { + if (!code.includes('require')) { + return code + } + const modules = new Map() + const replaced = code.replace( + /(\/\/[^\n\r]*|\/\*[\s\S]*?\*\/)|\brequire\s*\(\s*(["'].*?["'])\s*\)/gu, + (match, comment, moduleString) => { + if (comment) { + return match + } + + let id = + '__' + + moduleString.replace(/[^a-zA-Z0-9_$]+/gu, '_') + + Math.random().toString(32).substring(2) + while (code.includes(id) || modules.has(id)) { + id += Math.random().toString(32).substring(2) + } + modules.set(id, moduleString) + return id + '()' + } + ) + + return ( + [...modules] + .map(([id, moduleString]) => { + return `import * as __temp_${id} from ${moduleString}; +const ${id} = () => __temp_${id}.default || __temp_${id}; +` + }) + .join('') + + ';\n' + + replaced + ) +} diff --git a/docs/.vuepress/components/eslint-code-block.vue b/docs/.vuepress/components/eslint-code-block.vue deleted file mode 100644 index d7789c7bb..000000000 --- a/docs/.vuepress/components/eslint-code-block.vue +++ /dev/null @@ -1,136 +0,0 @@ - - - - - diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js deleted file mode 100644 index c12d341bd..000000000 --- a/docs/.vuepress/config.js +++ /dev/null @@ -1,71 +0,0 @@ -/** - * @author Toru Nagashima - * See LICENSE file in root directory for full license. - */ -'use strict' - -const rules = require('../../tools/lib/rules') -const categories = require('../../tools/lib/categories') - -const uncategorizedRules = rules.filter(rule => !rule.meta.docs.category && !rule.meta.deprecated) -const deprecatedRules = rules.filter(rule => rule.meta.deprecated) - -const extraCategories = [] -if (uncategorizedRules.length > 0) { - extraCategories.push({ - title: 'Uncategorized', - collapsable: false, - children: uncategorizedRules.map(({ ruleId, name }) => [`/rules/${name}`, ruleId]) - }) -} -if (deprecatedRules.length > 0) { - extraCategories.push({ - title: 'Deprecated', - collapsable: false, - children: deprecatedRules.map(({ ruleId, name }) => [`/rules/${name}`, ruleId]) - }) -} - -module.exports = { - base: '/eslint-plugin-vue/', - title: 'eslint-plugin-vue', - description: 'Official ESLint plugin for Vue.js', - serviceWorker: true, - evergreen: true, - - themeConfig: { - repo: 'vuejs/eslint-plugin-vue', - docsRepo: 'vuejs/eslint-plugin-vue', - docsDir: 'docs', - docsBranch: 'master', - editLinks: true, - lastUpdated: true, - serviceWorker: { - updatePopup: true - }, - - nav: [ - { text: 'User Guide', link: '/user-guide/' }, - { text: 'Developer Guide', link: '/developer-guide/' }, - { text: 'Rules', link: '/rules/' } - ], - - sidebar: { - '/rules/': [ - '/rules/', - - // Rules in each category. - ...categories.map(({ title, rules }) => ({ - title: title.replace(/ \(.+?\)/, ''), - collapsable: false, - children: rules.map(({ ruleId, name }) => [`/rules/${name}`, ruleId]) - })), - - // Rules in no category. - ...extraCategories - ], - - '/': ['/', '/user-guide/', '/developer-guide/', '/rules/'] - } - } -} diff --git a/docs/.vuepress/style.styl b/docs/.vuepress/style.styl deleted file mode 100644 index 564ebd26e..000000000 --- a/docs/.vuepress/style.styl +++ /dev/null @@ -1,20 +0,0 @@ -.theme-container.rule-details .content > h1 { - font-size: 1.8rem; - - + blockquote { - margin-top: -15px; - padding: 0; - border: 0; - font-weight: 500; - font-size: 1.4rem; - color: currentColor; - - ::first-letter { - text-transform: uppercase; - } - - p { - line-height: 1.2; - } - } -} diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index 953b51b5b..000000000 --- a/docs/README.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -sidebarDepth: 0 ---- - -# Introduction - -Official ESLint plugin for Vue.js. - -This plugin allows us to check the `