diff --git a/.eslintrc.cjs b/.eslintrc.cjs index e3fe32477..050c03087 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -187,13 +187,6 @@ module.exports = { "unicorn/prefer-module": "off", }, }, - // `esbuild` don't support - { - files: ["bin/**/*.js", "src/**/*.js"], - rules: { - "unicorn/prefer-node-protocol": "off", - }, - }, { files: [ "tests/format/**/jsfmt.spec.js", diff --git a/scripts/build/bundler.mjs b/scripts/build/bundler.mjs index 28bcc8673..4d8151bfb 100644 --- a/scripts/build/bundler.mjs +++ b/scripts/build/bundler.mjs @@ -11,6 +11,7 @@ import esbuildPluginLicense from "./esbuild-plugins/license.mjs"; import esbuildPluginUmd from "./esbuild-plugins/umd.mjs"; import esbuildPluginInteropDefault from "./esbuild-plugins/interop-default.mjs"; import esbuildPluginVisualizer from "./esbuild-plugins/visualizer.mjs"; +import esbuildPluginStripNodeProtocol from "./esbuild-plugins/strip-node-protocol.mjs"; import bundles from "./config.mjs"; const { __dirname, readJsonSync, require } = createEsmUtils(import.meta); @@ -121,6 +122,7 @@ function* getEsbuildOptions(bundle, buildOptions) { metafile: true, plugins: [ esbuildPluginEvaluate(), + esbuildPluginStripNodeProtocol(), esbuildPluginReplaceModule({ ...replaceModule, ...bundle.replaceModule }), bundle.target === "universal" && esbuildPluginNodeModulePolyfills(), esbuildPluginTextReplace({ diff --git a/scripts/build/esbuild-plugins/strip-node-protocol.mjs b/scripts/build/esbuild-plugins/strip-node-protocol.mjs new file mode 100644 index 000000000..e4c35cf60 --- /dev/null +++ b/scripts/build/esbuild-plugins/strip-node-protocol.mjs @@ -0,0 +1,10 @@ +export default function esbuildPluginStripNodeProtocol() { + return { + name: "strip-node-protocol", + setup(build) { + build.onResolve({ filter: /^node:/ }, ({ path }) => + build.resolve(path.slice(5)) + ); + }, + }; +} diff --git a/src/cli/expand-patterns.js b/src/cli/expand-patterns.js index 25d15feab..67f1e3d4f 100644 --- a/src/cli/expand-patterns.js +++ b/src/cli/expand-patterns.js @@ -1,5 +1,5 @@ -import path from "path"; -import { promises as fs } from "fs"; +import path from "node:path"; +import { promises as fs } from "node:fs"; import fastGlob from "fast-glob"; /** @typedef {import('./context').Context} Context */ diff --git a/src/cli/find-config-path.js b/src/cli/find-config-path.js index bf74b8dee..ed556cc84 100644 --- a/src/cli/find-config-path.js +++ b/src/cli/find-config-path.js @@ -1,4 +1,4 @@ -import path from "path"; +import path from "node:path"; import prettier from "../index.js"; async function logResolvedConfigPathOrDie(context) { diff --git a/src/cli/format.js b/src/cli/format.js index d8140bbdd..c36caecd3 100644 --- a/src/cli/format.js +++ b/src/cli/format.js @@ -1,5 +1,5 @@ -import { promises as fs } from "fs"; -import path from "path"; +import { promises as fs } from "node:fs"; +import path from "node:path"; import chalk from "chalk"; import prettier from "../index.js"; import thirdParty from "../common/third-party.cjs"; diff --git a/src/cli/logger.js b/src/cli/logger.js index d33905cb6..13947d79e 100644 --- a/src/cli/logger.js +++ b/src/cli/logger.js @@ -1,4 +1,4 @@ -import readline from "readline"; +import readline from "node:readline"; import chalk from "chalk"; import stripAnsi from "strip-ansi"; import wcwidth from "wcwidth"; diff --git a/src/common/create-ignorer.js b/src/common/create-ignorer.js index b7c7ade6b..f72086a0c 100644 --- a/src/common/create-ignorer.js +++ b/src/common/create-ignorer.js @@ -1,4 +1,4 @@ -import path from "path"; +import path from "node:path"; import ignore from "ignore"; import getFileContentOrNull from "../utils/get-file-content-or-null.js"; diff --git a/src/common/get-file-info.js b/src/common/get-file-info.js index 4799680b1..631fc6fc7 100644 --- a/src/common/get-file-info.js +++ b/src/common/get-file-info.js @@ -1,4 +1,4 @@ -import path from "path"; +import path from "node:path"; import { inferParser } from "../main/options.js"; import * as config from "../config/resolve-config.js"; import createIgnorer from "./create-ignorer.js"; diff --git a/src/common/load-plugins.js b/src/common/load-plugins.js index 851c17ab8..8f0b21304 100644 --- a/src/common/load-plugins.js +++ b/src/common/load-plugins.js @@ -1,7 +1,7 @@ -import { createRequire } from "module"; -import fs from "fs"; -import path from "path"; -import { fileURLToPath } from "url"; +import { createRequire } from "node:module"; +import fs from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; import { uniqBy, partition } from "lodash-es"; import fastGlob from "fast-glob"; import mem, { memClear } from "mem"; diff --git a/src/common/resolve.js b/src/common/resolve.js index 0dd18ec61..b40cf7496 100644 --- a/src/common/resolve.js +++ b/src/common/resolve.js @@ -1,4 +1,4 @@ -import { createRequire } from "module"; +import { createRequire } from "node:module"; const require = createRequire(import.meta.url); diff --git a/src/config/find-project-root.js b/src/config/find-project-root.js index 011c224c3..26350318c 100644 --- a/src/config/find-project-root.js +++ b/src/config/find-project-root.js @@ -1,8 +1,8 @@ // Simple version of `find-project-root` // https://github.com/kirstein/find-project-root/blob/master/index.js -import fs from "fs"; -import path from "path"; +import fs from "node:fs"; +import path from "node:path"; const MARKERS = [".git", ".hg"]; diff --git a/src/config/resolve-config-editorconfig.js b/src/config/resolve-config-editorconfig.js index df790dc30..cff5e88e6 100644 --- a/src/config/resolve-config-editorconfig.js +++ b/src/config/resolve-config-editorconfig.js @@ -1,4 +1,4 @@ -import path from "path"; +import path from "node:path"; import editorconfig from "editorconfig"; import editorConfigToPrettier from "editorconfig-to-prettier"; diff --git a/src/config/resolve-config.js b/src/config/resolve-config.js index 366232cea..fd14ee718 100644 --- a/src/config/resolve-config.js +++ b/src/config/resolve-config.js @@ -1,5 +1,5 @@ -import { createRequire } from "module"; -import path from "path"; +import { createRequire } from "node:module"; +import path from "node:path"; import micromatch from "micromatch"; import mem, { memClear } from "mem"; import thirdParty from "../common/third-party.cjs"; diff --git a/src/index.js b/src/index.js index bf0719b70..acfdbec2f 100644 --- a/src/index.js +++ b/src/index.js @@ -1,4 +1,4 @@ -import { createRequire } from "module"; +import { createRequire } from "node:module"; import core from "./main/core.js"; import { getSupportInfo } from "./main/support.js"; import getFileInfo from "./common/get-file-info.js"; diff --git a/src/language-css/index.js b/src/language-css/index.js index 4cd6b0286..90299cbfc 100644 --- a/src/language-css/index.js +++ b/src/language-css/index.js @@ -1,4 +1,4 @@ -import { createRequire } from "module"; +import { createRequire } from "node:module"; import createLanguage from "../utils/create-language.js"; import printer from "./printer-postcss.js"; import options from "./options.js"; diff --git a/src/language-graphql/index.js b/src/language-graphql/index.js index 052fad49e..bba85d210 100644 --- a/src/language-graphql/index.js +++ b/src/language-graphql/index.js @@ -1,4 +1,4 @@ -import { createRequire } from "module"; +import { createRequire } from "node:module"; import createLanguage from "../utils/create-language.js"; import printer from "./printer-graphql.js"; import options from "./options.js"; diff --git a/src/language-handlebars/index.js b/src/language-handlebars/index.js index 7d7545bba..b8af42e0e 100644 --- a/src/language-handlebars/index.js +++ b/src/language-handlebars/index.js @@ -1,4 +1,4 @@ -import { createRequire } from "module"; +import { createRequire } from "node:module"; import createLanguage from "../utils/create-language.js"; import printer from "./printer-glimmer.js"; import parsers from "./parsers.js"; diff --git a/src/language-html/index.js b/src/language-html/index.js index 9374d60f8..7abc16fab 100644 --- a/src/language-html/index.js +++ b/src/language-html/index.js @@ -1,4 +1,4 @@ -import { createRequire } from "module"; +import { createRequire } from "node:module"; import createLanguage from "../utils/create-language.js"; import printer from "./printer-html.js"; import options from "./options.js"; diff --git a/src/language-html/print/tag.js b/src/language-html/print/tag.js index 32c2f09b4..1685ed541 100644 --- a/src/language-html/print/tag.js +++ b/src/language-html/print/tag.js @@ -2,7 +2,7 @@ * @typedef {import("../../document").Doc} Doc */ -import assert from "assert"; +import assert from "node:assert"; import { isNonEmptyArray } from "../../common/util.js"; import doc from "../../document/index.js"; import { locStart, locEnd } from "../loc.js"; diff --git a/src/language-js/index.js b/src/language-js/index.js index 3ec7cd937..1d2817938 100644 --- a/src/language-js/index.js +++ b/src/language-js/index.js @@ -1,4 +1,4 @@ -import { createRequire } from "module"; +import { createRequire } from "node:module"; import createLanguage from "../utils/create-language.js"; import estreePrinter from "./printer-estree.js"; import estreeJsonPrinter from "./printer-estree-json.js"; diff --git a/src/language-js/print/flow.js b/src/language-js/print/flow.js index 217ccdcc2..3a45c1c2e 100644 --- a/src/language-js/print/flow.js +++ b/src/language-js/print/flow.js @@ -1,6 +1,6 @@ /** @typedef {import("../../document").Doc} Doc */ -import assert from "assert"; +import assert from "node:assert"; import { printDanglingComments } from "../../main/comments.js"; import { printString, printNumber } from "../../common/util.js"; import doc from "../../document/index.js"; diff --git a/src/language-js/print/function.js b/src/language-js/print/function.js index ce438ce5a..2283946d2 100644 --- a/src/language-js/print/function.js +++ b/src/language-js/print/function.js @@ -1,6 +1,6 @@ /** @typedef {import("../../document/doc-builders").Doc} Doc */ -import assert from "assert"; +import assert from "node:assert"; import { printDanglingComments, printCommentsSeparately, diff --git a/src/language-markdown/index.js b/src/language-markdown/index.js index f8f38b177..8a5a1d9c8 100644 --- a/src/language-markdown/index.js +++ b/src/language-markdown/index.js @@ -1,4 +1,4 @@ -import { createRequire } from "module"; +import { createRequire } from "node:module"; import createLanguage from "../utils/create-language.js"; import printer from "./printer-markdown.js"; import options from "./options.js"; diff --git a/src/language-yaml/index.js b/src/language-yaml/index.js index f9a3d2f3d..f18ce46f7 100644 --- a/src/language-yaml/index.js +++ b/src/language-yaml/index.js @@ -1,4 +1,4 @@ -import { createRequire } from "module"; +import { createRequire } from "node:module"; import createLanguage from "../utils/create-language.js"; import printer from "./printer-yaml.js"; import options from "./options.js"; diff --git a/src/main/comments.js b/src/main/comments.js index e860b1b10..e374e946c 100644 --- a/src/main/comments.js +++ b/src/main/comments.js @@ -1,4 +1,4 @@ -import assert from "assert"; +import assert from "node:assert"; import doc from "../document/index.js"; diff --git a/src/main/options.js b/src/main/options.js index d118ff94c..340b7e9c0 100644 --- a/src/main/options.js +++ b/src/main/options.js @@ -1,4 +1,4 @@ -import path from "path"; +import path from "node:path"; import { UndefinedParserError } from "../common/errors.js"; import { getSupportInfo } from "../main/support.js"; import getInterpreter from "../utils/get-interpreter.js"; diff --git a/src/main/parser.js b/src/main/parser.js index e49d9c75d..961431043 100644 --- a/src/main/parser.js +++ b/src/main/parser.js @@ -1,5 +1,5 @@ -import { createRequire } from "module"; -import path from "path"; +import { createRequire } from "node:module"; +import path from "node:path"; import { ConfigError } from "../common/errors.js"; import { locStart, locEnd } from "../language-js/loc.js"; diff --git a/src/main/range-util.js b/src/main/range-util.js index b6c364cc9..48af2c2e7 100644 --- a/src/main/range-util.js +++ b/src/main/range-util.js @@ -1,4 +1,4 @@ -import assert from "assert"; +import assert from "node:assert"; import { getSortedChildNodes } from "./comments.js"; const isJsonParser = ({ parser }) => diff --git a/src/main/support.js b/src/main/support.js index 5eb258b0b..c5128a293 100644 --- a/src/main/support.js +++ b/src/main/support.js @@ -1,4 +1,4 @@ -import { createRequire } from "module"; +import { createRequire } from "node:module"; import semverCompare from "semver/functions/compare.js"; import semverGte from "semver/functions/gte.js"; import semverLt from "semver/functions/lt.js"; diff --git a/src/standalone.js b/src/standalone.js index 2f809f2a9..7aec3f8be 100644 --- a/src/standalone.js +++ b/src/standalone.js @@ -1,4 +1,4 @@ -import { createRequire } from "module"; +import { createRequire } from "node:module"; import core from "./main/core.js"; import { getSupportInfo } from "./main/support.js"; import * as sharedUtil from "./common/util-shared.js"; diff --git a/src/utils/get-file-content-or-null.js b/src/utils/get-file-content-or-null.js index 67c412c79..24ed412f7 100644 --- a/src/utils/get-file-content-or-null.js +++ b/src/utils/get-file-content-or-null.js @@ -1,4 +1,4 @@ -import fs from "fs"; +import fs from "node:fs"; const fsAsync = fs.promises; /** diff --git a/src/utils/get-interpreter.js b/src/utils/get-interpreter.js index 61a5d71dc..3b0945377 100644 --- a/src/utils/get-interpreter.js +++ b/src/utils/get-interpreter.js @@ -1,4 +1,4 @@ -import fs from "fs"; +import fs from "node:fs"; import readlines from "n-readlines"; function getInterpreter(filepath) {