diff --git a/src/find-variable.js b/src/find-variable.js
index c67b02f..dc6edad 100644
--- a/src/find-variable.js
+++ b/src/find-variable.js
@@ -1,4 +1,4 @@
-import { getInnermostScope } from "./get-innermost-scope"
+import { getInnermostScope } from "./get-innermost-scope.js";
 
 /**
  * Find the variable of a given name.
diff --git a/src/get-function-head-location.js b/src/get-function-head-location.js
index 4f45481..2dc26a6 100644
--- a/src/get-function-head-location.js
+++ b/src/get-function-head-location.js
@@ -1,4 +1,4 @@
-import { isArrowToken, isOpeningParenToken } from "./token-predicate"
+import { isArrowToken, isOpeningParenToken } from "./token-predicate.js"
 
 /**
  * Get the `(` token of the given function node.
diff --git a/src/get-function-name-with-kind.js b/src/get-function-name-with-kind.js
index fa58adc..fc93f33 100644
--- a/src/get-function-name-with-kind.js
+++ b/src/get-function-name-with-kind.js
@@ -1,4 +1,4 @@
-import { getPropertyName } from "./get-property-name"
+import { getPropertyName } from "./get-property-name.js"
 
 /**
  * Get the name and kind of the given function node.
diff --git a/src/get-property-name.js b/src/get-property-name.js
index f1d43cb..bdc6e9f 100644
--- a/src/get-property-name.js
+++ b/src/get-property-name.js
@@ -1,4 +1,4 @@
-import { getStringIfConstant } from "./get-string-if-constant"
+import { getStringIfConstant } from "./get-string-if-constant.js"
 
 /**
  * Get the property name from a MemberExpression node or a Property node.
diff --git a/src/get-static-value.js b/src/get-static-value.js
index f3a3643..d2dcc44 100644
--- a/src/get-static-value.js
+++ b/src/get-static-value.js
@@ -1,6 +1,6 @@
 /* globals globalThis, global, self, window */
 
-import { findVariable } from "./find-variable"
+import { findVariable } from "./find-variable.js"
 
 const globalObject =
     typeof globalThis !== "undefined"
diff --git a/src/get-string-if-constant.js b/src/get-string-if-constant.js
index 751018a..7db2a66 100644
--- a/src/get-string-if-constant.js
+++ b/src/get-string-if-constant.js
@@ -1,4 +1,4 @@
-import { getStaticValue } from "./get-static-value"
+import { getStaticValue } from "./get-static-value.js"
 
 /**
  * Get the value of a given node if it's a literal or a template literal.
diff --git a/src/index.js b/src/index.js
index 4641431..5adfc86 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,13 +1,13 @@
-import { findVariable } from "./find-variable"
-import { getFunctionHeadLocation } from "./get-function-head-location"
-import { getFunctionNameWithKind } from "./get-function-name-with-kind"
-import { getInnermostScope } from "./get-innermost-scope"
-import { getPropertyName } from "./get-property-name"
-import { getStaticValue } from "./get-static-value"
-import { getStringIfConstant } from "./get-string-if-constant"
-import { hasSideEffect } from "./has-side-effect"
-import { isParenthesized } from "./is-parenthesized"
-import { PatternMatcher } from "./pattern-matcher"
+import { findVariable } from "./find-variable.js"
+import { getFunctionHeadLocation } from "./get-function-head-location.js"
+import { getFunctionNameWithKind } from "./get-function-name-with-kind.js"
+import { getInnermostScope } from "./get-innermost-scope.js"
+import { getPropertyName } from "./get-property-name.js"
+import { getStaticValue } from "./get-static-value.js"
+import { getStringIfConstant } from "./get-string-if-constant.js"
+import { hasSideEffect } from "./has-side-effect.js"
+import { isParenthesized } from "./is-parenthesized.js"
+import { PatternMatcher } from "./pattern-matcher.js"
 import {
     CALL,
     CONSTRUCT,
@@ -37,8 +37,8 @@ import {
     isOpeningBraceToken,
     isOpeningBracketToken,
     isOpeningParenToken,
-    isSemicolonToken,
-} from "./token-predicate"
+    isSemicolonToken
+} from "./token-predicate.js"
 
 export default {
     CALL,
diff --git a/src/is-parenthesized.js b/src/is-parenthesized.js
index 69ec3a3..4056800 100644
--- a/src/is-parenthesized.js
+++ b/src/is-parenthesized.js
@@ -1,4 +1,4 @@
-import { isClosingParenToken, isOpeningParenToken } from "./token-predicate"
+import { isClosingParenToken, isOpeningParenToken } from "./token-predicate.js"
 
 /**
  * Get the left parenthesis of the parent node syntax if it exists.
diff --git a/src/reference-tracker.js b/src/reference-tracker.js
index faa7130..a75a12d 100644
--- a/src/reference-tracker.js
+++ b/src/reference-tracker.js
@@ -1,6 +1,6 @@
-import { findVariable } from "./find-variable"
-import { getPropertyName } from "./get-property-name"
-import { getStringIfConstant } from "./get-string-if-constant"
+import { findVariable } from "./find-variable.js"
+import { getPropertyName } from "./get-property-name.js"
+import { getStringIfConstant } from "./get-string-if-constant.js"
 
 const IMPORT_TYPE = /^(?:Import|Export(?:All|Default|Named))Declaration$/u
 const has = Function.call.bind(Object.hasOwnProperty)
diff --git a/test/find-variable.js b/test/find-variable.js
index 6d884e6..b2fc1f0 100644
--- a/test/find-variable.js
+++ b/test/find-variable.js
@@ -1,6 +1,6 @@
 import assert from "assert"
 import eslint from "eslint"
-import { findVariable } from "../src/"
+import { findVariable } from "../src/index.js"
 
 describe("The 'findVariable' function", () => {
     function getVariable(code, selector, withString = null) {
diff --git a/test/get-function-head-location.js b/test/get-function-head-location.js
index 885f27f..1aedefd 100644
--- a/test/get-function-head-location.js
+++ b/test/get-function-head-location.js
@@ -1,7 +1,7 @@
 import assert from "assert"
 import eslint from "eslint"
 import semver from "semver"
-import { getFunctionHeadLocation } from "../src/"
+import { getFunctionHeadLocation } from "../src/index.js"
 
 describe("The 'getFunctionHeadLocation' function", () => {
     const expectedResults = {
diff --git a/test/get-function-name-with-kind.js b/test/get-function-name-with-kind.js
index 4da4455..4739b5a 100644
--- a/test/get-function-name-with-kind.js
+++ b/test/get-function-name-with-kind.js
@@ -1,7 +1,7 @@
 import assert from "assert"
 import eslint from "eslint"
 import semver from "semver"
-import { getFunctionNameWithKind } from "../src/"
+import { getFunctionNameWithKind } from "../src/index.js"
 
 describe("The 'getFunctionNameWithKind' function", () => {
     const expectedResults = {
diff --git a/test/get-innermost-scope.js b/test/get-innermost-scope.js
index e4ecc6d..ce85f0d 100644
--- a/test/get-innermost-scope.js
+++ b/test/get-innermost-scope.js
@@ -1,6 +1,6 @@
 import assert from "assert"
 import eslint from "eslint"
-import { getInnermostScope } from "../src/"
+import { getInnermostScope } from "../src/index.js"
 
 describe("The 'getInnermostScope' function", () => {
     let i = 0
diff --git a/test/get-property-name.js b/test/get-property-name.js
index afaef3e..6f39fe3 100644
--- a/test/get-property-name.js
+++ b/test/get-property-name.js
@@ -1,7 +1,7 @@
 import assert from "assert"
 import eslint from "eslint"
 import semver from "semver"
-import { getPropertyName } from "../src/"
+import { getPropertyName } from "../src/index.js"
 
 describe("The 'getPropertyName' function", () => {
     for (const { code, expected } of [
diff --git a/test/get-static-value.js b/test/get-static-value.js
index 62d878e..4387379 100644
--- a/test/get-static-value.js
+++ b/test/get-static-value.js
@@ -1,7 +1,7 @@
 import assert from "assert"
 import eslint from "eslint"
 import semver from "semver"
-import { getStaticValue } from "../src/"
+import { getStaticValue } from "../src/index.js"
 
 describe("The 'getStaticValue' function", () => {
     for (const { code, expected, noScope = false } of [
diff --git a/test/get-string-if-constant.js b/test/get-string-if-constant.js
index d2afc58..a14a877 100644
--- a/test/get-string-if-constant.js
+++ b/test/get-string-if-constant.js
@@ -1,6 +1,6 @@
 import assert from "assert"
 import eslint from "eslint"
-import { getStringIfConstant } from "../src/"
+import { getStringIfConstant } from "../src/index.js"
 
 describe("The 'getStringIfConstant' function", () => {
     for (const { code, expected } of [
diff --git a/test/has-side-effect.js b/test/has-side-effect.js
index 0542abf..36f11c9 100644
--- a/test/has-side-effect.js
+++ b/test/has-side-effect.js
@@ -2,7 +2,7 @@ import assert from "assert"
 import eslint from "eslint"
 import semver from "semver"
 import dp from "dot-prop"
-import { hasSideEffect } from "../src/"
+import { hasSideEffect } from "../src/index.js"
 
 describe("The 'hasSideEffect' function", () => {
     for (const { code, key = "body.0.expression", options, expected } of [
diff --git a/test/is-parenthesized.js b/test/is-parenthesized.js
index 7ca49eb..bbf07ac 100644
--- a/test/is-parenthesized.js
+++ b/test/is-parenthesized.js
@@ -1,7 +1,7 @@
 import assert from "assert"
 import dotProp from "dot-prop"
 import eslint from "eslint"
-import { isParenthesized } from "../src/"
+import { isParenthesized } from "../src/index.js"
 
 describe("The 'isParenthesized' function", () => {
     for (const { code, expected } of [
diff --git a/test/pattern-matcher.js b/test/pattern-matcher.js
index 5c3b76c..078ee87 100644
--- a/test/pattern-matcher.js
+++ b/test/pattern-matcher.js
@@ -1,5 +1,5 @@
 import assert from "assert"
-import { PatternMatcher } from "../src/"
+import { PatternMatcher } from "../src/index.js"
 
 const NAMED_CAPTURE_GROUP_SUPPORTED = (() => {
     try {
diff --git a/test/reference-tracker.js b/test/reference-tracker.js
index 65378d3..0fb1d87 100644
--- a/test/reference-tracker.js
+++ b/test/reference-tracker.js
@@ -1,7 +1,7 @@
 import assert from "assert"
 import eslint from "eslint"
 import semver from "semver"
-import { CALL, CONSTRUCT, ESM, READ, ReferenceTracker } from "../src/"
+import { CALL, CONSTRUCT, ESM, READ, ReferenceTracker } from "../src/index.js"
 
 const config = {
     parserOptions: {
diff --git a/test/token-predicate.js b/test/token-predicate.js
index fc9fa07..4ea8993 100644
--- a/test/token-predicate.js
+++ b/test/token-predicate.js
@@ -21,8 +21,8 @@ import {
     isOpeningBraceToken,
     isOpeningBracketToken,
     isOpeningParenToken,
-    isSemicolonToken,
-} from "../src/"
+    isSemicolonToken
+} from "../src/index.js"
 
 describe("The predicate functions for tokens", () => {
     for (const { positive, negative, patterns } of [