@fluid-topics/ft-eslint 2.0.32 → 2.0.34
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/build/index.d.ts +1 -0
- package/build/index.js +1 -0
- package/build/plugin.d.ts +27 -9
- package/build/rules/custom-elements.d.ts +4 -2
- package/build/rules/custom-elements.js +6 -4
- package/build/rules/ft-css-variable-names.d.ts +4 -2
- package/build/rules/ft-css-variable-names.js +5 -2
- package/build/rules/index-define-import.d.ts +4 -2
- package/build/rules/index-define-import.js +6 -4
- package/build/rules/interface-no-commas.d.ts +4 -2
- package/build/rules/interface-no-commas.js +6 -4
- package/build/rules/lit-async-lifecycle.d.ts +4 -2
- package/build/rules/lit-async-lifecycle.js +6 -3
- package/build/rules/lower-case-ft-css-variables.d.ts +4 -2
- package/build/rules/lower-case-ft-css-variables.js +5 -2
- package/build/rules/number-property.d.ts +4 -2
- package/build/rules/number-property.js +6 -3
- package/build/rules/quoted-attributes.d.ts +4 -2
- package/build/rules/quoted-attributes.js +6 -3
- package/build/rules/typography-variant.d.ts +4 -2
- package/build/rules/typography-variant.js +8 -4
- package/build/rules/utils.d.ts +8 -0
- package/build/rules/utils.js +2 -0
- package/package.json +14 -4
package/build/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { defaultConfig } from "./default-config";
|
package/build/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { defaultConfig } from "./default-config";
|
package/build/plugin.d.ts
CHANGED
|
@@ -4,15 +4,33 @@ declare const plugin: {
|
|
|
4
4
|
namespace: string;
|
|
5
5
|
};
|
|
6
6
|
rules: {
|
|
7
|
-
"quoted-attributes": import("eslint").
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
"
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
"
|
|
14
|
-
|
|
15
|
-
|
|
7
|
+
"quoted-attributes": import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<string, unknown[], import("./rules/utils").FtTypedRuleDocs, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener> & {
|
|
8
|
+
name: string;
|
|
9
|
+
};
|
|
10
|
+
"typography-variant": import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<string, unknown[], import("./rules/utils").FtTypedRuleDocs, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener> & {
|
|
11
|
+
name: string;
|
|
12
|
+
};
|
|
13
|
+
"interface-no-commas": import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<string, unknown[], import("./rules/utils").FtTypedRuleDocs, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener> & {
|
|
14
|
+
name: string;
|
|
15
|
+
};
|
|
16
|
+
"number-property": import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<string, unknown[], import("./rules/utils").FtTypedRuleDocs, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener> & {
|
|
17
|
+
name: string;
|
|
18
|
+
};
|
|
19
|
+
"lower-case-ft-css-variables": import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<"upperCaseCssVariable", readonly unknown[], import("./rules/utils").FtTypedRuleDocs, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener> & {
|
|
20
|
+
name: string;
|
|
21
|
+
};
|
|
22
|
+
"ft-css-variable-names": import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<"useTypescriptModelsOfVariables", readonly unknown[], import("./rules/utils").FtTypedRuleDocs, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener> & {
|
|
23
|
+
name: string;
|
|
24
|
+
};
|
|
25
|
+
"custom-elements": import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<string, unknown[], import("./rules/utils").FtTypedRuleDocs, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener> & {
|
|
26
|
+
name: string;
|
|
27
|
+
};
|
|
28
|
+
"index-define-imports": import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<string, unknown[], import("./rules/utils").FtTypedRuleDocs, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener> & {
|
|
29
|
+
name: string;
|
|
30
|
+
};
|
|
31
|
+
"lit-async-lifecycle": import("@typescript-eslint/utils/dist/ts-eslint").RuleModule<string, unknown[], import("./rules/utils").FtTypedRuleDocs, import("@typescript-eslint/utils/dist/ts-eslint").RuleListener> & {
|
|
32
|
+
name: string;
|
|
33
|
+
};
|
|
16
34
|
};
|
|
17
35
|
configs: {
|
|
18
36
|
recommended: {};
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const customElementsRule:
|
|
1
|
+
import { TSESLint } from "@typescript-eslint/utils";
|
|
2
|
+
export declare const customElementsRule: TSESLint.RuleModule<string, unknown[], import("./utils").FtTypedRuleDocs, TSESLint.RuleListener> & {
|
|
3
|
+
name: string;
|
|
4
|
+
};
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import { createRule } from "./utils";
|
|
2
|
+
export const customElementsRule = createRule({
|
|
3
|
+
name: "custom-elements",
|
|
2
4
|
meta: {
|
|
5
|
+
type: "problem",
|
|
3
6
|
docs: {
|
|
4
7
|
description: "Enforces that customElement definitions are in define.ts",
|
|
5
8
|
recommended: false,
|
|
@@ -14,9 +17,8 @@ export const customElementsRule = {
|
|
|
14
17
|
},
|
|
15
18
|
create(context) {
|
|
16
19
|
return {
|
|
17
|
-
"ClassDeclaration": (
|
|
20
|
+
"ClassDeclaration": (tsClass) => {
|
|
18
21
|
var _a;
|
|
19
|
-
const tsClass = node;
|
|
20
22
|
for (const decorator of (_a = tsClass.decorators) !== null && _a !== void 0 ? _a : []) {
|
|
21
23
|
if (decorator.expression.type !== "CallExpression") {
|
|
22
24
|
continue;
|
|
@@ -47,4 +49,4 @@ export const customElementsRule = {
|
|
|
47
49
|
},
|
|
48
50
|
};
|
|
49
51
|
},
|
|
50
|
-
};
|
|
52
|
+
});
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const ftCssVariableNames:
|
|
1
|
+
import { TSESLint } from "@typescript-eslint/utils";
|
|
2
|
+
export declare const ftCssVariableNames: TSESLint.RuleModule<"useTypescriptModelsOfVariables", readonly unknown[], import("./utils").FtTypedRuleDocs, TSESLint.RuleListener> & {
|
|
3
|
+
name: string;
|
|
4
|
+
};
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import { createRule } from "./utils";
|
|
2
|
+
export const ftCssVariableNames = createRule({
|
|
3
|
+
name: "ft-css-variable-names",
|
|
2
4
|
meta: {
|
|
5
|
+
type: "suggestion",
|
|
3
6
|
docs: {
|
|
4
7
|
description: "Prevents the usage of --ft- CSS variables names directly.",
|
|
5
8
|
recommended: false,
|
|
@@ -47,4 +50,4 @@ export const ftCssVariableNames = {
|
|
|
47
50
|
},
|
|
48
51
|
};
|
|
49
52
|
},
|
|
50
|
-
};
|
|
53
|
+
});
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const indexDefineImportRule:
|
|
1
|
+
import { TSESLint } from "@typescript-eslint/utils";
|
|
2
|
+
export declare const indexDefineImportRule: TSESLint.RuleModule<string, unknown[], import("./utils").FtTypedRuleDocs, TSESLint.RuleListener> & {
|
|
3
|
+
name: string;
|
|
4
|
+
};
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import { createRule } from "./utils";
|
|
2
|
+
export const indexDefineImportRule = createRule({
|
|
3
|
+
name: "index-define-imports",
|
|
2
4
|
meta: {
|
|
5
|
+
type: "problem",
|
|
3
6
|
docs: {
|
|
4
7
|
description: "Enforces full imports in the form \"@fluid-topics/ft-component/build/define\"",
|
|
5
8
|
recommended: false,
|
|
@@ -13,12 +16,11 @@ export const indexDefineImportRule = {
|
|
|
13
16
|
},
|
|
14
17
|
create(context) {
|
|
15
18
|
return {
|
|
16
|
-
|
|
19
|
+
ImportDeclaration: (node) => {
|
|
17
20
|
if (node.specifiers.length !== 0) {
|
|
18
21
|
return;
|
|
19
22
|
}
|
|
20
23
|
const packageName = node.source.value;
|
|
21
|
-
console.log(packageName);
|
|
22
24
|
if (packageName.startsWith("@fluid-topics/ft") && !packageName.endsWith("/build/define")) {
|
|
23
25
|
const cleanName = packageName.replace(/\/$/, "");
|
|
24
26
|
context.report({
|
|
@@ -30,4 +32,4 @@ export const indexDefineImportRule = {
|
|
|
30
32
|
},
|
|
31
33
|
};
|
|
32
34
|
},
|
|
33
|
-
};
|
|
35
|
+
});
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const interfaceNoCommaRule:
|
|
1
|
+
import { TSESLint } from "@typescript-eslint/utils";
|
|
2
|
+
export declare const interfaceNoCommaRule: TSESLint.RuleModule<string, unknown[], import("./utils").FtTypedRuleDocs, TSESLint.RuleListener> & {
|
|
3
|
+
name: string;
|
|
4
|
+
};
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import { createRule } from "./utils";
|
|
2
|
+
export const interfaceNoCommaRule = createRule({
|
|
3
|
+
name: "interface-no-commas",
|
|
2
4
|
meta: {
|
|
5
|
+
type: "layout",
|
|
3
6
|
docs: {
|
|
4
7
|
description: "Enforces that interfaces declarations do not use commas",
|
|
5
8
|
recommended: false,
|
|
@@ -17,8 +20,7 @@ export const interfaceNoCommaRule = {
|
|
|
17
20
|
if (element.type !== "TSPropertySignature") {
|
|
18
21
|
continue;
|
|
19
22
|
}
|
|
20
|
-
const
|
|
21
|
-
const lastToken = context.sourceCode.getLastToken(property);
|
|
23
|
+
const lastToken = context.sourceCode.getLastToken(element);
|
|
22
24
|
if ((lastToken === null || lastToken === void 0 ? void 0 : lastToken.type) === "Punctuator" && lastToken.value === ",") {
|
|
23
25
|
context.report({
|
|
24
26
|
loc: lastToken.loc,
|
|
@@ -30,4 +32,4 @@ export const interfaceNoCommaRule = {
|
|
|
30
32
|
},
|
|
31
33
|
};
|
|
32
34
|
},
|
|
33
|
-
};
|
|
35
|
+
});
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const litAsyncLifecycleRule:
|
|
1
|
+
import { TSESLint } from "@typescript-eslint/utils";
|
|
2
|
+
export declare const litAsyncLifecycleRule: TSESLint.RuleModule<string, unknown[], import("./utils").FtTypedRuleDocs, TSESLint.RuleListener> & {
|
|
3
|
+
name: string;
|
|
4
|
+
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createRule } from "./utils";
|
|
1
2
|
const LIT_LIFECYCLE_METHODS = [
|
|
2
3
|
"willUpdate",
|
|
3
4
|
"willRender",
|
|
@@ -6,8 +7,10 @@ const LIT_LIFECYCLE_METHODS = [
|
|
|
6
7
|
"firstUpdated",
|
|
7
8
|
"update",
|
|
8
9
|
];
|
|
9
|
-
export const litAsyncLifecycleRule = {
|
|
10
|
+
export const litAsyncLifecycleRule = createRule({
|
|
11
|
+
name: "lit-async-lifecycle",
|
|
10
12
|
meta: {
|
|
13
|
+
type: "problem",
|
|
11
14
|
docs: {
|
|
12
15
|
description: "Warns when LIT lifecycle methods are marked as async, as LIT does not await them",
|
|
13
16
|
recommended: true,
|
|
@@ -21,7 +24,7 @@ export const litAsyncLifecycleRule = {
|
|
|
21
24
|
},
|
|
22
25
|
create(context) {
|
|
23
26
|
return {
|
|
24
|
-
|
|
27
|
+
MethodDefinition: (node) => {
|
|
25
28
|
const tsMethod = node;
|
|
26
29
|
if (tsMethod.kind === "get" || tsMethod.kind === "set") {
|
|
27
30
|
return;
|
|
@@ -60,4 +63,4 @@ export const litAsyncLifecycleRule = {
|
|
|
60
63
|
},
|
|
61
64
|
};
|
|
62
65
|
},
|
|
63
|
-
};
|
|
66
|
+
});
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const lowerCaseFtCssVariables:
|
|
1
|
+
import { TSESLint } from "@typescript-eslint/utils";
|
|
2
|
+
export declare const lowerCaseFtCssVariables: TSESLint.RuleModule<"upperCaseCssVariable", readonly unknown[], import("./utils").FtTypedRuleDocs, TSESLint.RuleListener> & {
|
|
3
|
+
name: string;
|
|
4
|
+
};
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import { createRule } from "./utils";
|
|
2
|
+
export const lowerCaseFtCssVariables = createRule({
|
|
3
|
+
name: "lower-case-ft-css-variables",
|
|
2
4
|
meta: {
|
|
5
|
+
type: "problem",
|
|
3
6
|
docs: {
|
|
4
7
|
description: "Enforces the format of --ft- CSS variables to lower case.",
|
|
5
8
|
recommended: false,
|
|
@@ -55,4 +58,4 @@ export const lowerCaseFtCssVariables = {
|
|
|
55
58
|
},
|
|
56
59
|
};
|
|
57
60
|
},
|
|
58
|
-
};
|
|
61
|
+
});
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const numberPropertyRule:
|
|
1
|
+
import { TSESLint } from "@typescript-eslint/utils";
|
|
2
|
+
export declare const numberPropertyRule: TSESLint.RuleModule<string, unknown[], import("./utils").FtTypedRuleDocs, TSESLint.RuleListener> & {
|
|
3
|
+
name: string;
|
|
4
|
+
};
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
import { createRule } from "./utils";
|
|
2
|
+
export const numberPropertyRule = createRule({
|
|
3
|
+
name: "number-property",
|
|
2
4
|
meta: {
|
|
5
|
+
type: "problem",
|
|
3
6
|
docs: {
|
|
4
|
-
description: "Enforces that
|
|
7
|
+
description: "Enforces that number properties use @numberProperty",
|
|
5
8
|
recommended: false,
|
|
6
9
|
},
|
|
7
10
|
fixable: "code",
|
|
@@ -41,4 +44,4 @@ export const numberPropertyRule = {
|
|
|
41
44
|
},
|
|
42
45
|
};
|
|
43
46
|
},
|
|
44
|
-
};
|
|
47
|
+
});
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const quotedAttributesRule:
|
|
1
|
+
import { TSESLint } from "@typescript-eslint/utils";
|
|
2
|
+
export declare const quotedAttributesRule: TSESLint.RuleModule<string, unknown[], import("./utils").FtTypedRuleDocs, TSESLint.RuleListener> & {
|
|
3
|
+
name: string;
|
|
4
|
+
};
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { createRule } from "./utils";
|
|
2
|
+
/* Inspired by lit/quoted-expressions */
|
|
3
|
+
export const quotedAttributesRule = createRule({
|
|
4
|
+
name: "quoted-attributes",
|
|
3
5
|
meta: {
|
|
6
|
+
type: "layout",
|
|
4
7
|
docs: {
|
|
5
8
|
description: "Enforces the presence or absence of quotes around expressions",
|
|
6
9
|
recommended: false,
|
|
@@ -81,4 +84,4 @@ export const quotedAttributesRule = {
|
|
|
81
84
|
},
|
|
82
85
|
};
|
|
83
86
|
},
|
|
84
|
-
};
|
|
87
|
+
});
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const typographyVariantRule:
|
|
1
|
+
import { TSESLint } from "@typescript-eslint/utils";
|
|
2
|
+
export declare const typographyVariantRule: TSESLint.RuleModule<string, unknown[], import("./utils").FtTypedRuleDocs, TSESLint.RuleListener> & {
|
|
3
|
+
name: string;
|
|
4
|
+
};
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { TemplateAnalyzer } from "eslint-plugin-lit/lib/template-analyzer";
|
|
2
2
|
import { isExpressionPlaceholder } from "eslint-plugin-lit/lib/util";
|
|
3
|
-
|
|
3
|
+
import { createRule } from "./utils";
|
|
4
|
+
export const typographyVariantRule = createRule({
|
|
5
|
+
name: "typography-variant",
|
|
4
6
|
meta: {
|
|
7
|
+
type: "suggestion",
|
|
5
8
|
docs: {
|
|
6
9
|
description: "Enforces that variant attribute uses enum values",
|
|
7
10
|
recommended: false,
|
|
@@ -21,12 +24,13 @@ export const typographyVariantRule = {
|
|
|
21
24
|
|| node.tag.name !== "html") {
|
|
22
25
|
return;
|
|
23
26
|
}
|
|
27
|
+
const sourceCode = context.sourceCode;
|
|
24
28
|
const analyzer = TemplateAnalyzer.create(node);
|
|
25
29
|
analyzer.traverse({
|
|
26
30
|
enterElement: (element) => {
|
|
27
31
|
if (element.tagName === "ft-typography" || element.tagName === "ftds-typography") {
|
|
28
32
|
if (!("variant" in element.attribs)) {
|
|
29
|
-
const loc = analyzer.resolveLocation(element.sourceCodeLocation,
|
|
33
|
+
const loc = analyzer.resolveLocation(element.sourceCodeLocation, sourceCode);
|
|
30
34
|
context.report({
|
|
31
35
|
loc,
|
|
32
36
|
messageId: "mandatoryVariant",
|
|
@@ -34,7 +38,7 @@ export const typographyVariantRule = {
|
|
|
34
38
|
return;
|
|
35
39
|
}
|
|
36
40
|
if (!isExpressionPlaceholder(element.attribs["variant"])) {
|
|
37
|
-
const loc = analyzer.getLocationForAttribute(element, "variant",
|
|
41
|
+
const loc = analyzer.getLocationForAttribute(element, "variant", sourceCode);
|
|
38
42
|
context.report({
|
|
39
43
|
loc,
|
|
40
44
|
messageId: "variantUsesEnum",
|
|
@@ -46,4 +50,4 @@ export const typographyVariantRule = {
|
|
|
46
50
|
},
|
|
47
51
|
};
|
|
48
52
|
},
|
|
49
|
-
};
|
|
53
|
+
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ESLintUtils } from "@typescript-eslint/utils";
|
|
2
|
+
export interface FtTypedRuleDocs {
|
|
3
|
+
description: string;
|
|
4
|
+
recommended?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare const createRule: <Options extends readonly unknown[], MessageIds extends string>({ meta, name, ...rule }: Readonly<ESLintUtils.RuleWithMetaAndName<Options, MessageIds, FtTypedRuleDocs>>) => ESLintUtils.RuleModule<MessageIds, Options, FtTypedRuleDocs, ESLintUtils.RuleListener> & {
|
|
7
|
+
name: string;
|
|
8
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluid-topics/ft-eslint",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.34",
|
|
4
4
|
"description": "ESlint rules for web components",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Lit"
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
"author": "Fluid Topics <devtopics@antidot.net>",
|
|
9
9
|
"license": "ISC",
|
|
10
10
|
"main": "build/index.js",
|
|
11
|
-
"web": "build/ft-eslint.min.js",
|
|
12
11
|
"typings": "build/index",
|
|
13
12
|
"files": [
|
|
14
13
|
"build/**/*.js",
|
|
@@ -19,7 +18,18 @@
|
|
|
19
18
|
"url": "ssh://git@scm.mrs.antidot.net:2222/fluidtopics/ft-web-components.git"
|
|
20
19
|
},
|
|
21
20
|
"dependencies": {
|
|
22
|
-
"
|
|
21
|
+
"@eslint/js": "10.0.1",
|
|
22
|
+
"@stylistic/eslint-plugin": "5.10.0",
|
|
23
|
+
"eslint-plugin-lit": "2.3.1",
|
|
24
|
+
"eslint-plugin-wc": "3.1.0",
|
|
25
|
+
"globals": "17.6.0",
|
|
26
|
+
"typescript-eslint": "8.61.1"
|
|
23
27
|
},
|
|
24
|
-
"
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"eslint": "10.5.0"
|
|
30
|
+
},
|
|
31
|
+
"peerDependencies": {
|
|
32
|
+
"eslint": "^10.0.0"
|
|
33
|
+
},
|
|
34
|
+
"gitHead": "4d4baba1c07ce52b8763655aaeacc33a9c4ac9b8"
|
|
25
35
|
}
|