Skip to content
This repository was archived by the owner on Mar 7, 2025. It is now read-only.

Commit 02dd933

Browse files
committed
Add support for vue-i18n and vue-pug-sfc
1 parent 0815bc8 commit 02dd933

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+1125
-2
lines changed

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
"tsconfig.json"
4040
],
4141
"devDependencies": {
42+
"@intlify/eslint-plugin-vue-i18n": "~1.2.0",
4243
"@types/eslint": "~8.2.0",
4344
"@types/node": "~16.11.10",
4445
"@types/prettier": "~2.4.2",
@@ -54,6 +55,7 @@
5455
"eslint-plugin-spellcheck": "~0.0.19",
5556
"eslint-plugin-unicorn": "~39.0.0",
5657
"eslint-plugin-vue": "~8.1.1",
58+
"eslint-plugin-vue-pug-sfc": "~1.0.0-alpha.18",
5759
"esno": "~0.12.1",
5860
"json-schema-to-typescript": "~10.1.5",
5961
"prettier": "2.5.0",

pnpm-lock.yaml

Lines changed: 161 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

scripts/generate-rule-files.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
// @ts-expect-error
2+
import eslintPluginVueI18n from '@intlify/eslint-plugin-vue-i18n';
3+
// @ts-expect-error
24
import eslintPluginTypeScript from '@typescript-eslint/eslint-plugin';
3-
import { camelCase, pascalCase } from 'change-case';
5+
import { paramCase as kebabCase, pascalCase } from 'change-case';
46
import type { Rule } from 'eslint';
57
import * as eslint from 'eslint';
68
// @ts-expect-error
@@ -13,6 +15,8 @@ import eslintPluginSpellcheck from 'eslint-plugin-spellcheck';
1315
import eslintPluginUnicorn from 'eslint-plugin-unicorn';
1416
// @ts-expect-error
1517
import eslintPluginVue from 'eslint-plugin-vue';
18+
// @ts-expect-error
19+
import eslintPluginVuePugSfc from 'eslint-plugin-vue-pug-sfc';
1620
import * as fs from 'fs';
1721
import type { JSONSchema4 } from 'json-schema';
1822
import { compile } from 'json-schema-to-typescript';
@@ -70,6 +74,15 @@ const generationMap: Record<string, Plugin> = {
7074
vue: {
7175
name: 'Vue',
7276
rules: (eslintPluginVue as Plugin).rules
77+
},
78+
'vue-i18n': {
79+
name: 'VueI18n',
80+
prefix: '@intlify/vue-i18n',
81+
rules: (eslintPluginVueI18n as Plugin).rules
82+
},
83+
'vue-pug-sfc': {
84+
name: 'VuePugSfc',
85+
rules: (eslintPluginVuePugSfc as Plugin).rules
7386
}
7487
};
7588

@@ -233,7 +246,7 @@ export type ${ruleNamePascalCase}Options = ${
233246
* ${seeDocLink}
234247
*/
235248
'${
236-
pluginName !== 'eslint' ? `${prefix ?? camelCase(pluginName)}/` : ''
249+
pluginName !== 'eslint' ? `${prefix ?? kebabCase(pluginName)}/` : ''
237250
}${ruleName}': ${ruleNamePascalCase}RuleConfig;
238251
}
239252
`;
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/**
2+
* Eslint Vue Pug SFC extensions.
3+
*
4+
* @see [Eslint Vue Pug SFC extensions](https://eslint.vuejs.org/user-guide/#usage)
5+
*/
6+
export type VuePugSfcExtensions =
7+
| 'plugin:vue-pug-sfc/base'
8+
| 'plugin:vue-pug-sfc/vue3-essential'
9+
| 'plugin:vue-pug-sfc/vue3-strongly-recommended'
10+
| 'plugin:vue-pug-sfc/vue3-recommended'
11+
| 'plugin:vue-pug-sfc/essential'
12+
| 'plugin:vue-pug-sfc/strongly-recommended'
13+
| 'plugin:vue-pug-sfc/recommended';

src/extends/index.d.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import type { NodeExtensions } from './eslint-plugin-node';
66
import type { PrettierExtensions } from './eslint-plugin-prettier';
77
import type { UnicornExtensions } from './eslint-plugin-unicorn';
88
import type { VueExtensions } from './eslint-plugin-vue';
9+
import type { VuePugSfcExtensions } from './eslint-plugin-vue-pug-sfc';
10+
import type { IntlifyVueI18nExtensions } from './intlify-vue-i18n';
911
import type { TypescriptEslintExtensions } from './typescript-eslint';
1012

1113
/**
@@ -14,12 +16,14 @@ import type { TypescriptEslintExtensions } from './typescript-eslint';
1416
export type KnownExtensions = LiteralUnion<
1517
| EslintExtensions
1618
| ImportExtensions
19+
| IntlifyVueI18nExtensions
1720
| JsdocExtensions
1821
| NodeExtensions
1922
| PrettierExtensions
2023
| TypescriptEslintExtensions
2124
| UnicornExtensions
2225
| VueExtensions
26+
| VuePugSfcExtensions
2327
>;
2428

2529
/**

src/extends/intlify-vue-i18n.d.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
/**
2+
* Eslint Intlify VueI18n extensions.
3+
*
4+
* @see [Eslint Intlify VueI18n extensions](https://eslint-plugin-vue-i18n.intlify.dev/started.html)
5+
*/
6+
export type IntlifyVueI18nExtensions = 'plugin:@intlify/vue-i18n/recommended';

0 commit comments

Comments
 (0)