From f2b9ccc7a60966c02eefc4fd3e7e8d81e893b0ef Mon Sep 17 00:00:00 2001 From: Yosuke Ota Date: Fri, 25 Jun 2021 16:04:05 +0900 Subject: [PATCH] Improved indent rules to support TypeScript syntax (#1520) * Make the indent rules supports TypeScript * fix * Update docs * update * update ci * update ci * update testcase for node 8 * Fix decorator indent * update --- .circleci/config.yml | 2 +- docs/rules/html-indent.md | 2 +- docs/rules/script-indent.md | 4 +- lib/rules/no-restricted-component-options.js | 18 +- lib/rules/order-in-components.js | 2 + lib/rules/sort-keys.js | 4 +- lib/utils/html-comments.js | 4 +- lib/utils/indent-common.js | 925 +++++------- lib/utils/indent-ts.js | 1264 +++++++++++++++++ lib/utils/indent-utils.js | 117 ++ package.json | 5 +- tests/fixtures/script-indent/ignore-01.vue | 19 + tests/fixtures/script-indent/ignore-02.vue | 19 + tests/fixtures/script-indent/jsx-01.vue | 16 + tests/fixtures/script-indent/jsx-02.vue | 23 + .../script-indent/method-definition-02.vue | 10 + .../ts-abstract-class-property-01.vue | 22 + .../ts-abstract-class-property-02.vue | 17 + .../ts-abstract-method-definition-01.vue | 30 + .../script-indent/ts-as-expression-01.vue | 6 + .../ts-call-signature-declaration-01.vue | 13 + .../ts-call-signature-declaration-02.vue | 13 + .../script-indent/ts-class-declaration-01.vue | 11 + .../script-indent/ts-class-declaration-02.vue | 16 + .../script-indent/ts-class-declaration-03.vue | 26 + .../script-indent/ts-class-declaration-04.vue | 26 + .../script-indent/ts-class-declaration-05.vue | 14 + .../script-indent/ts-class-declaration-06.vue | 28 + .../script-indent/ts-class-declaration-07.vue | 9 + .../ts-class-fields-private-methods-01.vue | 64 + .../ts-class-fields-private-properties-01.vue | 22 + .../script-indent/ts-class-property-01.vue | 15 + .../script-indent/ts-class-property-02.vue | 17 + .../script-indent/ts-class-property-03.vue | 36 + .../script-indent/ts-conditional-type-01.vue | 10 + .../script-indent/ts-conditional-type-02.vue | 10 + .../script-indent/ts-conditional-type-03.vue | 17 + .../script-indent/ts-constructor-type-01.vue | 21 + .../script-indent/ts-declare-function-01.vue | 12 + .../script-indent/ts-declare-function-02.vue | 12 + .../script-indent/ts-declare-function-03.vue | 12 + .../script-indent/ts-declare-function-04.vue | 16 + .../script-indent/ts-decorator-01.vue | 205 +++ .../script-indent/ts-decorator-02.vue | 14 + tests/fixtures/script-indent/ts-enum-01.vue | 9 + tests/fixtures/script-indent/ts-enum-02.vue | 9 + tests/fixtures/script-indent/ts-enum-03.vue | 12 + tests/fixtures/script-indent/ts-enum-04.vue | 7 + tests/fixtures/script-indent/ts-enum-05.vue | 8 + tests/fixtures/script-indent/ts-enum-06.vue | 10 + .../script-indent/ts-enum-member-01.vue | 15 + .../script-indent/ts-enum-member-02.vue | 26 + .../script-indent/ts-export-assignment-01.vue | 5 + .../script-indent/ts-export-assignment-02.vue | 13 + .../script-indent/ts-export-namespace-01.vue | 8 + .../script-indent/ts-function-type-01.vue | 6 + .../script-indent/ts-function-type-02.vue | 17 + .../script-indent/ts-import-equal-01.vue | 6 + .../script-indent/ts-import-equal-02.vue | 19 + .../script-indent/ts-import-equal-03.vue | 13 + .../script-indent/ts-import-type-01.vue | 8 + .../script-indent/ts-import-type-02.vue | 18 + .../script-indent/ts-import-type-03.vue | 9 + .../ts-indexed-access-type-01.vue | 9 + .../ts-indexed-access-type-02.vue | 11 + tests/fixtures/script-indent/ts-infer-01.vue | 7 + .../ts-interface-declaration-01.vue | 7 + .../ts-interface-declaration-02.vue | 15 + .../ts-interface-declaration-03.vue | 17 + .../ts-interface-declaration-04.vue | 19 + .../ts-interface-declaration-05.vue | 13 + .../ts-interface-declaration-06.vue | 17 + .../ts-interface-declaration-07.vue | 25 + .../ts-interface-declaration-08.vue | 27 + .../script-indent/ts-mapped-type-01.vue | 12 + .../ts-module-declaration-01.vue | 14 + .../script-indent/ts-qualified-name-01.vue | 7 + .../ts-template-literal-type-01.vue | 40 + tests/fixtures/script-indent/ts-tuple-01.vue | 9 + tests/fixtures/script-indent/ts-tuple-02.vue | 15 + .../ts-type-alias-seclaration-01.vue | 21 + .../script-indent/ts-type-annotation-01.vue | 9 + .../script-indent/ts-type-annotation-02.vue | 33 + .../script-indent/ts-type-annotation-03.vue | 28 + .../script-indent/ts-type-annotation-04.vue | 25 + .../script-indent/ts-type-annotation-05.vue | 21 + .../script-indent/ts-type-annotation-06.vue | 17 + .../script-indent/ts-type-assertion-01.vue | 10 + .../script-indent/ts-type-literal-01.vue | 7 + .../script-indent/ts-type-paramater-01.vue | 24 + .../ts-type-parameter-seclaration-01.vue | 17 + .../ts-union-intersection-01.vue | 28 + tests/lib/rules/script-indent.js | 47 +- .../util-types/ast/ts-ast.ts | 1 + .../util-types/indent-helper.ts | 14 + typings/eslint-utils/index.d.ts | 21 + 96 files changed, 3382 insertions(+), 571 deletions(-) create mode 100644 lib/utils/indent-ts.js create mode 100644 lib/utils/indent-utils.js create mode 100644 tests/fixtures/script-indent/ignore-01.vue create mode 100644 tests/fixtures/script-indent/ignore-02.vue create mode 100644 tests/fixtures/script-indent/jsx-01.vue create mode 100644 tests/fixtures/script-indent/jsx-02.vue create mode 100644 tests/fixtures/script-indent/method-definition-02.vue create mode 100644 tests/fixtures/script-indent/ts-abstract-class-property-01.vue create mode 100644 tests/fixtures/script-indent/ts-abstract-class-property-02.vue create mode 100644 tests/fixtures/script-indent/ts-abstract-method-definition-01.vue create mode 100644 tests/fixtures/script-indent/ts-as-expression-01.vue create mode 100644 tests/fixtures/script-indent/ts-call-signature-declaration-01.vue create mode 100644 tests/fixtures/script-indent/ts-call-signature-declaration-02.vue create mode 100644 tests/fixtures/script-indent/ts-class-declaration-01.vue create mode 100644 tests/fixtures/script-indent/ts-class-declaration-02.vue create mode 100644 tests/fixtures/script-indent/ts-class-declaration-03.vue create mode 100644 tests/fixtures/script-indent/ts-class-declaration-04.vue create mode 100644 tests/fixtures/script-indent/ts-class-declaration-05.vue create mode 100644 tests/fixtures/script-indent/ts-class-declaration-06.vue create mode 100644 tests/fixtures/script-indent/ts-class-declaration-07.vue create mode 100644 tests/fixtures/script-indent/ts-class-fields-private-methods-01.vue create mode 100644 tests/fixtures/script-indent/ts-class-fields-private-properties-01.vue create mode 100644 tests/fixtures/script-indent/ts-class-property-01.vue create mode 100644 tests/fixtures/script-indent/ts-class-property-02.vue create mode 100644 tests/fixtures/script-indent/ts-class-property-03.vue create mode 100644 tests/fixtures/script-indent/ts-conditional-type-01.vue create mode 100644 tests/fixtures/script-indent/ts-conditional-type-02.vue create mode 100644 tests/fixtures/script-indent/ts-conditional-type-03.vue create mode 100644 tests/fixtures/script-indent/ts-constructor-type-01.vue create mode 100644 tests/fixtures/script-indent/ts-declare-function-01.vue create mode 100644 tests/fixtures/script-indent/ts-declare-function-02.vue create mode 100644 tests/fixtures/script-indent/ts-declare-function-03.vue create mode 100644 tests/fixtures/script-indent/ts-declare-function-04.vue create mode 100644 tests/fixtures/script-indent/ts-decorator-01.vue create mode 100644 tests/fixtures/script-indent/ts-decorator-02.vue create mode 100644 tests/fixtures/script-indent/ts-enum-01.vue create mode 100644 tests/fixtures/script-indent/ts-enum-02.vue create mode 100644 tests/fixtures/script-indent/ts-enum-03.vue create mode 100644 tests/fixtures/script-indent/ts-enum-04.vue create mode 100644 tests/fixtures/script-indent/ts-enum-05.vue create mode 100644 tests/fixtures/script-indent/ts-enum-06.vue create mode 100644 tests/fixtures/script-indent/ts-enum-member-01.vue create mode 100644 tests/fixtures/script-indent/ts-enum-member-02.vue create mode 100644 tests/fixtures/script-indent/ts-export-assignment-01.vue create mode 100644 tests/fixtures/script-indent/ts-export-assignment-02.vue create mode 100644 tests/fixtures/script-indent/ts-export-namespace-01.vue create mode 100644 tests/fixtures/script-indent/ts-function-type-01.vue create mode 100644 tests/fixtures/script-indent/ts-function-type-02.vue create mode 100644 tests/fixtures/script-indent/ts-import-equal-01.vue create mode 100644 tests/fixtures/script-indent/ts-import-equal-02.vue create mode 100644 tests/fixtures/script-indent/ts-import-equal-03.vue create mode 100644 tests/fixtures/script-indent/ts-import-type-01.vue create mode 100644 tests/fixtures/script-indent/ts-import-type-02.vue create mode 100644 tests/fixtures/script-indent/ts-import-type-03.vue create mode 100644 tests/fixtures/script-indent/ts-indexed-access-type-01.vue create mode 100644 tests/fixtures/script-indent/ts-indexed-access-type-02.vue create mode 100644 tests/fixtures/script-indent/ts-infer-01.vue create mode 100644 tests/fixtures/script-indent/ts-interface-declaration-01.vue create mode 100644 tests/fixtures/script-indent/ts-interface-declaration-02.vue create mode 100644 tests/fixtures/script-indent/ts-interface-declaration-03.vue create mode 100644 tests/fixtures/script-indent/ts-interface-declaration-04.vue create mode 100644 tests/fixtures/script-indent/ts-interface-declaration-05.vue create mode 100644 tests/fixtures/script-indent/ts-interface-declaration-06.vue create mode 100644 tests/fixtures/script-indent/ts-interface-declaration-07.vue create mode 100644 tests/fixtures/script-indent/ts-interface-declaration-08.vue create mode 100644 tests/fixtures/script-indent/ts-mapped-type-01.vue create mode 100644 tests/fixtures/script-indent/ts-module-declaration-01.vue create mode 100644 tests/fixtures/script-indent/ts-qualified-name-01.vue create mode 100644 tests/fixtures/script-indent/ts-template-literal-type-01.vue create mode 100644 tests/fixtures/script-indent/ts-tuple-01.vue create mode 100644 tests/fixtures/script-indent/ts-tuple-02.vue create mode 100644 tests/fixtures/script-indent/ts-type-alias-seclaration-01.vue create mode 100644 tests/fixtures/script-indent/ts-type-annotation-01.vue create mode 100644 tests/fixtures/script-indent/ts-type-annotation-02.vue create mode 100644 tests/fixtures/script-indent/ts-type-annotation-03.vue create mode 100644 tests/fixtures/script-indent/ts-type-annotation-04.vue create mode 100644 tests/fixtures/script-indent/ts-type-annotation-05.vue create mode 100644 tests/fixtures/script-indent/ts-type-annotation-06.vue create mode 100644 tests/fixtures/script-indent/ts-type-assertion-01.vue create mode 100644 tests/fixtures/script-indent/ts-type-literal-01.vue create mode 100644 tests/fixtures/script-indent/ts-type-paramater-01.vue create mode 100644 tests/fixtures/script-indent/ts-type-parameter-seclaration-01.vue create mode 100644 tests/fixtures/script-indent/ts-union-intersection-01.vue create mode 100644 typings/eslint-plugin-vue/util-types/indent-helper.ts diff --git a/.circleci/config.yml b/.circleci/config.yml index d593e239e..c10b2139e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -43,7 +43,7 @@ jobs: - run: name: Install eslint@6 command: | - npm install -D eslint@6.2.0 + npm install --save-exact eslint@6.8.0 @typescript-eslint/parser@3.10.1 typescript@4.0.8 - run: name: Install dependencies command: npm install diff --git a/docs/rules/html-indent.md b/docs/rules/html-indent.md index 61ecf57be..18fddf12d 100644 --- a/docs/rules/html-indent.md +++ b/docs/rules/html-indent.md @@ -17,7 +17,7 @@ since: v3.14.0 This rule enforces a consistent indentation style in `