Skip to content

Commit faee198

Browse files
authored
chore: Convert internal build to ESM (#331)
1 parent 4c61256 commit faee198

File tree

109 files changed

+309
-299
lines changed

Some content is hidden

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

109 files changed

+309
-299
lines changed

eslint.config.mjs eslint.config.js

File renamed without changes.

index.cjs

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
// eslint-disable-next-line @typescript-eslint/no-require-imports
2+
module.exports = require('./dist/index.cjs')

index.d.mts index.d.ts

File renamed without changes.

index.js

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import plugin from './dist/index.cjs'
2+
3+
export default plugin

index.mjs

-3
This file was deleted.

package.json

+8-7
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,20 @@
1515
"engines": {
1616
"node": ">=16.6.0"
1717
},
18-
"type": "commonjs",
19-
"types": "./index.d.mts",
18+
"type": "module",
19+
"types": "./index.d.ts",
2020
"exports": {
2121
".": {
22-
"types": "./index.d.mts",
23-
"import": "./index.mjs",
24-
"require": "./dist/index.js"
22+
"types": "./index.d.ts",
23+
"import": "./index.js",
24+
"require": "./index.cjs"
2525
}
2626
},
2727
"files": [
2828
"dist",
29-
"index.mjs",
30-
"index.d.mts"
29+
"index.js",
30+
"index.cjs",
31+
"index.d.ts"
3132
],
3233
"scripts": {
3334
"build": "tsup src/index.ts --format cjs --out-dir dist",

src/index.ts

+50-48
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,52 @@
11
import globals from 'globals'
2-
import expectExpect from './rules/expect-expect'
3-
import maxExpects from './rules/max-expects'
4-
import maxNestedDescribe from './rules/max-nested-describe'
5-
import missingPlaywrightAwait from './rules/missing-playwright-await'
6-
import noCommentedOutTests from './rules/no-commented-out-tests'
7-
import noConditionalExpect from './rules/no-conditional-expect'
8-
import noConditionalInTest from './rules/no-conditional-in-test'
9-
import noDuplicateHooks from './rules/no-duplicate-hooks'
10-
import noElementHandle from './rules/no-element-handle'
11-
import noEval from './rules/no-eval'
12-
import noFocusedTest from './rules/no-focused-test'
13-
import noForceOption from './rules/no-force-option'
14-
import noGetByTitle from './rules/no-get-by-title'
15-
import noHooks from './rules/no-hooks'
16-
import noNestedStep from './rules/no-nested-step'
17-
import noNetworkidle from './rules/no-networkidle'
18-
import noNthMethods from './rules/no-nth-methods'
19-
import noPagePause from './rules/no-page-pause'
20-
import noRawLocators from './rules/no-raw-locators'
21-
import noRestrictedMatchers from './rules/no-restricted-matchers'
22-
import noSkippedTest from './rules/no-skipped-test'
23-
import noStandaloneExpect from './rules/no-standalone-expect'
24-
import noUnsafeReferences from './rules/no-unsafe-references'
25-
import noUselessAwait from './rules/no-useless-await'
26-
import noUselessNot from './rules/no-useless-not'
27-
import noWaitForSelector from './rules/no-wait-for-selector'
28-
import noWaitForTimeout from './rules/no-wait-for-timeout'
29-
import preferComparisonMatcher from './rules/prefer-comparison-matcher'
30-
import preferEqualityMatcher from './rules/prefer-equality-matcher'
31-
import preferHooksInOrder from './rules/prefer-hooks-in-order'
32-
import preferHooksOnTop from './rules/prefer-hooks-on-top'
33-
import preferLocator from './rules/prefer-locator'
34-
import preferLowercaseTitle from './rules/prefer-lowercase-title'
35-
import preferNativeLocators from './rules/prefer-native-locators'
36-
import preferStrictEqual from './rules/prefer-strict-equal'
37-
import preferToBe from './rules/prefer-to-be'
38-
import preferToContain from './rules/prefer-to-contain'
39-
import preferToHaveCount from './rules/prefer-to-have-count'
40-
import preferToHaveLength from './rules/prefer-to-have-length'
41-
import preferWebFirstAssertions from './rules/prefer-web-first-assertions'
42-
import requireHook from './rules/require-hook'
43-
import requireSoftAssertions from './rules/require-soft-assertions'
44-
import requireToThrowMessage from './rules/require-to-throw-message'
45-
import requireTopLevelDescribe from './rules/require-top-level-describe'
46-
import validDescribeCallback from './rules/valid-describe-callback'
47-
import validExpect from './rules/valid-expect'
48-
import validExpectInPromise from './rules/valid-expect-in-promise'
49-
import validTitle from './rules/valid-title'
2+
import expectExpect from './rules/expect-expect.js'
3+
import maxExpects from './rules/max-expects.js'
4+
import maxNestedDescribe from './rules/max-nested-describe.js'
5+
import missingPlaywrightAwait from './rules/missing-playwright-await.js'
6+
import noCommentedOutTests from './rules/no-commented-out-tests.js'
7+
import noConditionalExpect from './rules/no-conditional-expect.js'
8+
import noConditionalInTest from './rules/no-conditional-in-test.js'
9+
import noDuplicateHooks from './rules/no-duplicate-hooks.js'
10+
import noElementHandle from './rules/no-element-handle.js'
11+
import noEval from './rules/no-eval.js'
12+
import noFocusedTest from './rules/no-focused-test.js'
13+
import noForceOption from './rules/no-force-option.js'
14+
import noGetByTitle from './rules/no-get-by-title.js'
15+
import noHooks from './rules/no-hooks.js'
16+
import noNestedStep from './rules/no-nested-step.js'
17+
import noNetworkidle from './rules/no-networkidle.js'
18+
import noNthMethods from './rules/no-nth-methods.js'
19+
import noPagePause from './rules/no-page-pause.js'
20+
import noRawLocators from './rules/no-raw-locators.js'
21+
import noRestrictedMatchers from './rules/no-restricted-matchers.js'
22+
import noSkippedTest from './rules/no-skipped-test.js'
23+
import noStandaloneExpect from './rules/no-standalone-expect.js'
24+
import noUnsafeReferences from './rules/no-unsafe-references.js'
25+
import noUselessAwait from './rules/no-useless-await.js'
26+
import noUselessNot from './rules/no-useless-not.js'
27+
import noWaitForSelector from './rules/no-wait-for-selector.js'
28+
import noWaitForTimeout from './rules/no-wait-for-timeout.js'
29+
import preferComparisonMatcher from './rules/prefer-comparison-matcher.js'
30+
import preferEqualityMatcher from './rules/prefer-equality-matcher.js'
31+
import preferHooksInOrder from './rules/prefer-hooks-in-order.js'
32+
import preferHooksOnTop from './rules/prefer-hooks-on-top.js'
33+
import preferLocator from './rules/prefer-locator.js'
34+
import preferLowercaseTitle from './rules/prefer-lowercase-title.js'
35+
import preferNativeLocators from './rules/prefer-native-locators.js'
36+
import preferStrictEqual from './rules/prefer-strict-equal.js'
37+
import preferToBe from './rules/prefer-to-be.js'
38+
import preferToContain from './rules/prefer-to-contain.js'
39+
import preferToHaveCount from './rules/prefer-to-have-count.js'
40+
import preferToHaveLength from './rules/prefer-to-have-length.js'
41+
import preferWebFirstAssertions from './rules/prefer-web-first-assertions.js'
42+
import requireHook from './rules/require-hook.js'
43+
import requireSoftAssertions from './rules/require-soft-assertions.js'
44+
import requireToThrowMessage from './rules/require-to-throw-message.js'
45+
import requireTopLevelDescribe from './rules/require-top-level-describe.js'
46+
import validDescribeCallback from './rules/valid-describe-callback.js'
47+
import validExpect from './rules/valid-expect.js'
48+
import validExpectInPromise from './rules/valid-expect-in-promise.js'
49+
import validTitle from './rules/valid-title.js'
5050

5151
const index = {
5252
configs: {},
@@ -150,6 +150,8 @@ const flatConfig = {
150150
},
151151
}
152152

153+
// @ts-expect-error We author this plugin in ESM, but export as CJS for
154+
// compatibility with ESLint<9. Long term, this will be changed to `export default`.
153155
export = {
154156
...index,
155157
configs: {

src/rules/expect-expect.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import rule from '../../src/rules/expect-expect'
2-
import { javascript, runRuleTester } from '../utils/rule-tester'
1+
import rule from '../../src/rules/expect-expect.js'
2+
import { javascript, runRuleTester } from '../utils/rule-tester.js'
33

44
runRuleTester('expect-expect', rule, {
55
invalid: [

src/rules/expect-expect.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import ESTree from 'estree'
2-
import { dig } from '../utils/ast'
3-
import { createRule } from '../utils/createRule'
4-
import { parseFnCall } from '../utils/parseFnCall'
2+
import { dig } from '../utils/ast.js'
3+
import { createRule } from '../utils/createRule.js'
4+
import { parseFnCall } from '../utils/parseFnCall.js'
55

66
export default createRule({
77
create(context) {

src/rules/max-expects.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import rule from '../../src/rules/max-expects'
2-
import { javascript, runRuleTester } from '../utils/rule-tester'
1+
import rule from '../../src/rules/max-expects.js'
2+
import { javascript, runRuleTester } from '../utils/rule-tester.js'
33

44
runRuleTester('max-expects', rule, {
55
invalid: [

src/rules/max-expects.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import * as ESTree from 'estree'
2-
import { getParent } from '../utils/ast'
3-
import { createRule } from '../utils/createRule'
4-
import { isTypeOfFnCall, parseFnCall } from '../utils/parseFnCall'
2+
import { getParent } from '../utils/ast.js'
3+
import { createRule } from '../utils/createRule.js'
4+
import { isTypeOfFnCall, parseFnCall } from '../utils/parseFnCall.js'
55

66
export default createRule({
77
create(context) {

src/rules/max-nested-describe.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import rule from '../../src/rules/max-nested-describe'
2-
import { javascript, runRuleTester } from '../utils/rule-tester'
1+
import rule from '../../src/rules/max-nested-describe.js'
2+
import { javascript, runRuleTester } from '../utils/rule-tester.js'
33

44
const messageId = 'exceededMaxDepth'
55

src/rules/max-nested-describe.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as ESTree from 'estree'
2-
import { createRule } from '../utils/createRule'
3-
import { isTypeOfFnCall } from '../utils/parseFnCall'
2+
import { createRule } from '../utils/createRule.js'
3+
import { isTypeOfFnCall } from '../utils/parseFnCall.js'
44

55
export default createRule({
66
create(context) {

src/rules/missing-playwright-await.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import dedent from 'dedent'
2-
import rule from '../../src/rules/missing-playwright-await'
3-
import { javascript, runRuleTester, test } from '../utils/rule-tester'
2+
import rule from '../../src/rules/missing-playwright-await.js'
3+
import { javascript, runRuleTester, test } from '../utils/rule-tester.js'
44

55
runRuleTester('missing-playwright-await', rule, {
66
invalid: [

src/rules/missing-playwright-await.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { Rule } from 'eslint'
22
import ESTree from 'estree'
3-
import { getParent, getStringValue, isIdentifier } from '../utils/ast'
4-
import { createRule } from '../utils/createRule'
5-
import { ParsedFnCall, parseFnCall } from '../utils/parseFnCall'
3+
import { getParent, getStringValue, isIdentifier } from '../utils/ast.js'
4+
import { createRule } from '../utils/createRule.js'
5+
import { ParsedFnCall, parseFnCall } from '../utils/parseFnCall.js'
66

77
const validTypes = new Set([
88
'AwaitExpression',

src/rules/no-commented-out-tests.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import rule from '../../src/rules/no-commented-out-tests'
2-
import { javascript, runRuleTester } from '../utils/rule-tester'
1+
import rule from '../../src/rules/no-commented-out-tests.js'
2+
import { javascript, runRuleTester } from '../utils/rule-tester.js'
33

44
const messageId = 'commentedTests'
55

src/rules/no-commented-out-tests.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Rule } from 'eslint'
22
import * as ESTree from 'estree'
3-
import { createRule } from '../utils/createRule'
3+
import { createRule } from '../utils/createRule.js'
44

55
function getTestNames(context: Rule.RuleContext) {
66
const aliases = context.settings.playwright?.globalAliases?.test ?? []

src/rules/no-conditional-expect.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import rule from '../../src/rules/no-conditional-expect'
2-
import { javascript, runRuleTester } from '../utils/rule-tester'
1+
import rule from '../../src/rules/no-conditional-expect.js'
2+
import { javascript, runRuleTester } from '../utils/rule-tester.js'
33

44
const messageId = 'conditionalExpect'
55

src/rules/no-conditional-expect.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { Rule, Scope } from 'eslint'
22
import * as ESTree from 'estree'
3-
import { getParent, isPropertyAccessor } from '../utils/ast'
4-
import { createRule } from '../utils/createRule'
5-
import { isTypeOfFnCall, parseFnCall } from '../utils/parseFnCall'
6-
import { KnownCallExpression } from '../utils/types'
3+
import { getParent, isPropertyAccessor } from '../utils/ast.js'
4+
import { createRule } from '../utils/createRule.js'
5+
import { isTypeOfFnCall, parseFnCall } from '../utils/parseFnCall.js'
6+
import { KnownCallExpression } from '../utils/types.js'
77

88
const isCatchCall = (
99
node: ESTree.CallExpression,

src/rules/no-conditional-in-test.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import rule from '../../src/rules/no-conditional-in-test'
2-
import { javascript, runRuleTester } from '../utils/rule-tester'
1+
import rule from '../../src/rules/no-conditional-in-test.js'
2+
import { javascript, runRuleTester } from '../utils/rule-tester.js'
33

44
const messageId = 'conditionalInTest'
55

src/rules/no-conditional-in-test.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Rule } from 'eslint'
2-
import { findParent } from '../utils/ast'
3-
import { createRule } from '../utils/createRule'
4-
import { isTypeOfFnCall } from '../utils/parseFnCall'
2+
import { findParent } from '../utils/ast.js'
3+
import { createRule } from '../utils/createRule.js'
4+
import { isTypeOfFnCall } from '../utils/parseFnCall.js'
55

66
export default createRule({
77
create(context) {

src/rules/no-duplicate-hooks.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import rule from '../../src/rules/no-duplicate-hooks'
2-
import { javascript, runRuleTester } from '../utils/rule-tester'
1+
import rule from '../../src/rules/no-duplicate-hooks.js'
2+
import { javascript, runRuleTester } from '../utils/rule-tester.js'
33

44
runRuleTester('basic describe block', rule, {
55
invalid: [

src/rules/no-duplicate-hooks.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { getStringValue } from '../utils/ast'
2-
import { createRule } from '../utils/createRule'
3-
import { isTypeOfFnCall, parseFnCall } from '../utils/parseFnCall'
1+
import { getStringValue } from '../utils/ast.js'
2+
import { createRule } from '../utils/createRule.js'
3+
import { isTypeOfFnCall, parseFnCall } from '../utils/parseFnCall.js'
44

55
export default createRule({
66
create(context) {

src/rules/no-element-handle.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import rule from '../../src/rules/no-element-handle'
2-
import { runRuleTester, test } from '../utils/rule-tester'
1+
import rule from '../../src/rules/no-element-handle.js'
2+
import { runRuleTester, test } from '../utils/rule-tester.js'
33

44
runRuleTester('no-element-handle', rule, {
55
invalid: [

src/rules/no-element-handle.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { AST } from 'eslint'
22
import ESTree from 'estree'
3-
import { isPageMethod } from '../utils/ast'
4-
import { createRule } from '../utils/createRule'
3+
import { isPageMethod } from '../utils/ast.js'
4+
import { createRule } from '../utils/createRule.js'
55

66
function getPropertyRange(node: ESTree.Node): AST.Range {
77
return node.type === 'Identifier'

src/rules/no-eval.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import rule from '../../src/rules/no-eval'
2-
import { javascript, runRuleTester, test } from '../utils/rule-tester'
1+
import rule from '../../src/rules/no-eval.js'
2+
import { javascript, runRuleTester, test } from '../utils/rule-tester.js'
33

44
runRuleTester('no-eval', rule, {
55
invalid: [

src/rules/no-eval.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { isPageMethod } from '../utils/ast'
2-
import { createRule } from '../utils/createRule'
1+
import { isPageMethod } from '../utils/ast.js'
2+
import { createRule } from '../utils/createRule.js'
33

44
export default createRule({
55
create(context) {

src/rules/no-focused-test.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import rule from '../../src/rules/no-focused-test'
2-
import { runRuleTester } from '../utils/rule-tester'
1+
import rule from '../../src/rules/no-focused-test.js'
2+
import { runRuleTester } from '../utils/rule-tester.js'
33

44
const messageId = 'noFocusedTest'
55

src/rules/no-focused-test.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { getStringValue } from '../utils/ast'
2-
import { createRule } from '../utils/createRule'
3-
import { parseFnCall } from '../utils/parseFnCall'
1+
import { getStringValue } from '../utils/ast.js'
2+
import { createRule } from '../utils/createRule.js'
3+
import { parseFnCall } from '../utils/parseFnCall.js'
44

55
export default createRule({
66
create(context) {

src/rules/no-force-option.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import rule from '../../src/rules/no-force-option'
2-
import { runRuleTester, test } from '../utils/rule-tester'
1+
import rule from '../../src/rules/no-force-option.js'
2+
import { runRuleTester, test } from '../utils/rule-tester.js'
33

44
const messageId = 'noForceOption'
55

src/rules/no-force-option.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import ESTree from 'estree'
2-
import { getStringValue, isBooleanLiteral } from '../utils/ast'
3-
import { createRule } from '../utils/createRule'
2+
import { getStringValue, isBooleanLiteral } from '../utils/ast.js'
3+
import { createRule } from '../utils/createRule.js'
44

55
function isForceOptionEnabled(node: ESTree.CallExpression) {
66
const arg = node.arguments.at(-1)

src/rules/no-get-by-title.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import rule from '../../src/rules/no-get-by-title'
2-
import { runRuleTester, test } from '../utils/rule-tester'
1+
import rule from '../../src/rules/no-get-by-title.js'
2+
import { runRuleTester, test } from '../utils/rule-tester.js'
33

44
const messageId = 'noGetByTitle'
55

src/rules/no-get-by-title.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { isPageMethod } from '../utils/ast'
2-
import { createRule } from '../utils/createRule'
1+
import { isPageMethod } from '../utils/ast.js'
2+
import { createRule } from '../utils/createRule.js'
33

44
export default createRule({
55
create(context) {

src/rules/no-hooks.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import rule from '../../src/rules/no-hooks'
2-
import { runRuleTester } from '../utils/rule-tester'
1+
import rule from '../../src/rules/no-hooks.js'
2+
import { runRuleTester } from '../utils/rule-tester.js'
33

44
const messageId = 'unexpectedHook'
55

0 commit comments

Comments
 (0)