WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Commit 5b21eee

Browse files
authored
feat!: migrate to esm-only (#218)
This migrates to ESM only, meaning you must `import` the plugin in your flat config, or use a version of node which supports `require(esm)` (>=20). Also bumps the minimum node version to 18.
1 parent 4bf7228 commit 5b21eee

File tree

58 files changed

+822
-2228
lines changed

Some content is hidden

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

58 files changed

+822
-2228
lines changed

.github/workflows/main.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ jobs:
1010
runs-on: ubuntu-latest
1111
strategy:
1212
matrix:
13-
node-version: [16.x, 18.x, 20.x]
13+
node-version: [18.x, 20.x, 22.x]
1414
fail-fast: false
1515
steps:
1616
- name: Checkout

custom_types/requireindex.d.ts

Lines changed: 0 additions & 4 deletions
This file was deleted.

package-lock.json

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

package.json

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"name": "eslint-plugin-lit",
33
"version": "0.0.0-dev",
4+
"type": "module",
45
"description": "lit-html support for ESLint",
56
"main": "lib/index.js",
67
"files": [
@@ -10,13 +11,12 @@
1011
"custom_types"
1112
],
1213
"scripts": {
13-
"clean": "rimraf ./lib",
14+
"clean": "premove ./lib ./coverage",
1415
"lint": "eslint \"src/**/*.ts\"",
1516
"prebuild": "npm run clean",
1617
"build": "tsc",
17-
"start": "nodemon --watch src --ext ts --exec \"npm run dev\"",
18-
"dev": "npm run lint && npm run build && npm run test ",
19-
"test": "nyc --reporter=html --reporter=text-summary --reporter=lcov mocha \"lib/test/**/*_test.js\"",
18+
"dev": "npm run lint && npm run build && npm run test",
19+
"test": "c8 --reporter=lcov --reporter=text-summary mocha \"lib/test/**/*_test.js\"",
2020
"format": "prettier --write \"src/**/*.ts\"",
2121
"prepare": "npm run build",
2222
"prepublishOnly": "npm run lint && npm run test"
@@ -38,15 +38,14 @@
3838
},
3939
"homepage": "https://github.com/43081j/eslint-plugin-lit#readme",
4040
"engines": {
41-
"node": ">= 12"
41+
"node": ">= 18"
4242
},
4343
"dependencies": {
4444
"parse5": "^6.0.1",
45-
"parse5-htmlparser2-tree-adapter": "^6.0.1",
46-
"requireindex": "^1.2.0"
45+
"parse5-htmlparser2-tree-adapter": "^6.0.1"
4746
},
4847
"peerDependencies": {
49-
"eslint": ">= 5"
48+
"eslint": ">= 8"
5049
},
5150
"devDependencies": {
5251
"@babel/eslint-parser": "^7.24.5",
@@ -60,16 +59,15 @@
6059
"@types/parse5-htmlparser2-tree-adapter": "^6.0.0",
6160
"@typescript-eslint/eslint-plugin": "^6.9.0",
6261
"@typescript-eslint/parser": "^6.9.0",
62+
"c8": "^10.1.3",
6363
"chai": "^4.2.0",
6464
"eslint": "^8.23.0",
6565
"eslint-config-google": "^0.14.0",
6666
"eslint-plugin-eslint-plugin": "^5.0.6",
6767
"espree": "^9.0.0",
6868
"mocha": "^10.0.0",
69-
"nodemon": "^3.0.1",
70-
"nyc": "^15.1.0",
69+
"premove": "^4.0.0",
7170
"prettier": "^3.0.3",
72-
"rimraf": "^5.0.5",
7371
"typescript": "^5.2.2"
7472
}
7573
}

src/index.ts

Lines changed: 55 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,60 @@
1+
/* eslint-disable max-len */
12
import type {Rule, ESLint} from 'eslint';
2-
import {configFactory as configAll} from './configs/all';
3-
import {config as configLegacyAll} from './configs/legacy-all';
4-
import {config as configLegacyRecommended} from './configs/legacy-recommended';
5-
import {configFactory as configRecommended} from './configs/recommended';
6-
import requireIndex = require('requireindex');
3+
import {configFactory as configAll} from './configs/all.js';
4+
import {config as configLegacyAll} from './configs/legacy-all.js';
5+
import {config as configLegacyRecommended} from './configs/legacy-recommended.js';
6+
import {configFactory as configRecommended} from './configs/recommended.js';
7+
import {rule as ruleAttributeNames} from './rules/attribute-names.js';
8+
import {rule as ruleAttributeValueEntities} from './rules/attribute-value-entities.js';
9+
import {rule as ruleBanAttributes} from './rules/ban-attributes.js';
10+
import {rule as ruleBindingPositions} from './rules/binding-positions.js';
11+
import {rule as ruleLifecycleSuper} from './rules/lifecycle-super.js';
12+
import {rule as ruleNoClassfieldShadowing} from './rules/no-classfield-shadowing.js';
13+
import {rule as ruleNoDuplicateTemplateBindings} from './rules/no-duplicate-template-bindings.js';
14+
import {rule as ruleNoInvalidEscapeSequences} from './rules/no-invalid-escape-sequences.js';
15+
import {rule as ruleNoInvalidHtml} from './rules/no-invalid-html.js';
16+
import {rule as ruleNoLegacyImports} from './rules/no-legacy-imports.js';
17+
import {rule as ruleNoLegacyTemplateSyntax} from './rules/no-legacy-template-syntax.js';
18+
import {rule as ruleNoNativeAttributes} from './rules/no-native-attributes.js';
19+
import {rule as ruleNoPrivateProperties} from './rules/no-private-properties.js';
20+
import {rule as ruleNoPropertyChangeUpdate} from './rules/no-property-change-update.js';
21+
import {rule as ruleNoTemplateArrow} from './rules/no-template-arrow.js';
22+
import {rule as ruleNoTemplateBind} from './rules/no-template-bind.js';
23+
import {rule as ruleNoTemplateMap} from './rules/no-template-map.js';
24+
import {rule as ruleNoThisAssign} from './rules/no-this-assign-in-render.js';
25+
import {rule as ruleNoUselessTemplateLiterals} from './rules/no-useless-template-literals.js';
26+
import {rule as ruleNoValueAttribute} from './rules/no-value-attribute.js';
27+
import {rule as rulePreferNothing} from './rules/prefer-nothing.js';
28+
import {rule as rulePreferStaticStyles} from './rules/prefer-static-styles.js';
29+
import {rule as ruleQuotedExpressions} from './rules/quoted-expressions.js';
30+
import {rule as ruleValueAfterConstraints} from './rules/value-after-constraints.js';
731

8-
export const rules = requireIndex(`${__dirname}/rules`) as Record<
9-
string,
10-
Rule.RuleModule
11-
>;
32+
export const rules: Record<string, Rule.RuleModule> = {
33+
'attribute-names': ruleAttributeNames,
34+
'attribute-value-entities': ruleAttributeValueEntities,
35+
'ban-attributes': ruleBanAttributes,
36+
'binding-positions': ruleBindingPositions,
37+
'lifecycle-super': ruleLifecycleSuper,
38+
'no-classfield-shadowing': ruleNoClassfieldShadowing,
39+
'no-duplicate-template-bindings': ruleNoDuplicateTemplateBindings,
40+
'no-invalid-escape-sequences': ruleNoInvalidEscapeSequences,
41+
'no-invalid-html': ruleNoInvalidHtml,
42+
'no-legacy-imports': ruleNoLegacyImports,
43+
'no-legacy-template-syntax': ruleNoLegacyTemplateSyntax,
44+
'no-native-attributes': ruleNoNativeAttributes,
45+
'no-private-properties': ruleNoPrivateProperties,
46+
'no-property-change-update': ruleNoPropertyChangeUpdate,
47+
'no-template-arrow': ruleNoTemplateArrow,
48+
'no-template-bind': ruleNoTemplateBind,
49+
'no-template-map': ruleNoTemplateMap,
50+
'no-this-assign-in-render': ruleNoThisAssign,
51+
'no-useless-template-literals': ruleNoUselessTemplateLiterals,
52+
'no-value-attribute': ruleNoValueAttribute,
53+
'prefer-nothing': rulePreferNothing,
54+
'prefer-static-styles': rulePreferStaticStyles,
55+
'quoted-expressions': ruleQuotedExpressions,
56+
'value-after-constraints': ruleValueAfterConstraints
57+
};
1258

1359
const plugin: ESLint.Plugin = {rules};
1460

src/rules/attribute-names.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55

66
import {Rule} from 'eslint';
77
import * as ESTree from 'estree';
8-
import {getPropertyMap, isLitClass, toKebabCase, toSnakeCase} from '../util';
8+
import {getPropertyMap, isLitClass, toKebabCase, toSnakeCase} from '../util.js';
99

1010
//------------------------------------------------------------------------------
1111
// Rule Definition
1212
//------------------------------------------------------------------------------
1313

14-
const rule: Rule.RuleModule = {
14+
export const rule: Rule.RuleModule = {
1515
meta: {
1616
docs: {
1717
description: 'Enforces attribute naming conventions',
@@ -107,5 +107,3 @@ const rule: Rule.RuleModule = {
107107
};
108108
}
109109
};
110-
111-
export = rule;

src/rules/attribute-value-entities.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55

66
import {Rule} from 'eslint';
77
import * as ESTree from 'estree';
8-
import {TemplateAnalyzer} from '../template-analyzer';
8+
import {TemplateAnalyzer} from '../template-analyzer.js';
99

1010
//------------------------------------------------------------------------------
1111
// Rule Definition
1212
//------------------------------------------------------------------------------
1313

14-
const rule: Rule.RuleModule = {
14+
export const rule: Rule.RuleModule = {
1515
meta: {
1616
docs: {
1717
description: 'Disallows unencoded HTML entities in attribute values',
@@ -98,5 +98,3 @@ const rule: Rule.RuleModule = {
9898
};
9999
}
100100
};
101-
102-
export = rule;

src/rules/ban-attributes.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55

66
import {Rule} from 'eslint';
77
import * as ESTree from 'estree';
8-
import {TemplateAnalyzer} from '../template-analyzer';
8+
import {TemplateAnalyzer} from '../template-analyzer.js';
99

1010
//------------------------------------------------------------------------------
1111
// Rule Definition
1212
//------------------------------------------------------------------------------
1313

14-
const rule: Rule.RuleModule = {
14+
export const rule: Rule.RuleModule = {
1515
meta: {
1616
docs: {
1717
description: 'Disallows a set of attributes from being used in templates',
@@ -79,5 +79,3 @@ const rule: Rule.RuleModule = {
7979
};
8080
}
8181
};
82-
83-
export = rule;

src/rules/binding-positions.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import * as ESTree from 'estree';
1010
// Rule Definition
1111
//------------------------------------------------------------------------------
1212

13-
const rule: Rule.RuleModule = {
13+
export const rule: Rule.RuleModule = {
1414
meta: {
1515
docs: {
1616
description: 'Disallows invalid binding positions in templates',
@@ -96,5 +96,3 @@ const rule: Rule.RuleModule = {
9696
};
9797
}
9898
};
99-
100-
export = rule;

src/rules/lifecycle-super.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@
55

66
import {Rule} from 'eslint';
77
import * as ESTree from 'estree';
8-
import {isLitClass} from '../util';
8+
import {isLitClass} from '../util.js';
99

1010
const methodNames = ['connectedCallback', 'disconnectedCallback', 'update'];
1111

1212
//------------------------------------------------------------------------------
1313
// Rule Definition
1414
//------------------------------------------------------------------------------
1515

16-
const rule: Rule.RuleModule = {
16+
export const rule: Rule.RuleModule = {
1717
meta: {
1818
docs: {
1919
description: 'Enforces calling `super` in lifecycle methods',
@@ -141,5 +141,3 @@ const rule: Rule.RuleModule = {
141141
};
142142
}
143143
};
144-
145-
export = rule;

0 commit comments

Comments
 (0)