diff --git a/example/metro.config.js b/example/metro.config.js index f50d16157d..4e8a4b7245 100644 --- a/example/metro.config.js +++ b/example/metro.config.js @@ -1,4 +1,4 @@ -const path = require("path"); +const path = require("node:path"); const exclusionList = (() => { try { diff --git a/package.json b/package.json index b24ae1c215..9e8a116ec0 100644 --- a/package.json +++ b/package.json @@ -133,7 +133,7 @@ "typescript": "^5.0.0" }, "engines": { - "node": ">=14.15" + "node": ">=16.13" }, "packageManager": "yarn@3.6.1", "resolutions": { diff --git a/scripts/apply-config-plugins.mjs b/scripts/apply-config-plugins.mjs index 24af506ee5..2ff902bb35 100755 --- a/scripts/apply-config-plugins.mjs +++ b/scripts/apply-config-plugins.mjs @@ -1,8 +1,8 @@ #!/usr/bin/env node // @ts-check -import * as fs from "fs/promises"; -import * as path from "path"; +import * as fs from "node:fs/promises"; +import * as path from "node:path"; import { findFile } from "./validate-manifest.js"; async function main(projectRoot = process.cwd()) { diff --git a/scripts/config-plugins/apply.mjs b/scripts/config-plugins/apply.mjs index ca3a4d2de4..b9dd535738 100644 --- a/scripts/config-plugins/apply.mjs +++ b/scripts/config-plugins/apply.mjs @@ -1,5 +1,5 @@ // @ts-check -import * as fs from "fs/promises"; +import * as fs from "node:fs/promises"; import { withPlugins } from "./ExpoConfigPlugins.mjs"; import { compileModsAsync } from "./plugins/mod-compiler.mjs"; import { withInternal } from "./plugins/withInternal.mjs"; diff --git a/scripts/config-plugins/plugins/withIosBaseMods.mjs b/scripts/config-plugins/plugins/withIosBaseMods.mjs index ffb0fe36f3..4b87e38eb7 100644 --- a/scripts/config-plugins/plugins/withIosBaseMods.mjs +++ b/scripts/config-plugins/plugins/withIosBaseMods.mjs @@ -1,6 +1,6 @@ // @ts-check -import { createRequire } from "module"; -import * as path from "path"; +import { createRequire } from "node:module"; +import * as path from "node:path"; import { BaseMods } from "../ExpoConfigPlugins.mjs"; import { makeFilePathModifier, makeNullProvider } from "../provider.mjs"; diff --git a/scripts/config-plugins/provider.mjs b/scripts/config-plugins/provider.mjs index 1e4d09fca8..0c9b055e8b 100644 --- a/scripts/config-plugins/provider.mjs +++ b/scripts/config-plugins/provider.mjs @@ -1,5 +1,5 @@ // @ts-check -import * as path from "path"; +import * as path from "node:path"; import { findFile } from "../validate-manifest.js"; import { BaseMods } from "./ExpoConfigPlugins.mjs"; diff --git a/scripts/configure.js b/scripts/configure.js index 99fbecec19..de62632a75 100755 --- a/scripts/configure.js +++ b/scripts/configure.js @@ -5,8 +5,8 @@ require("./link")(module); const chalk = require("chalk"); -const fs = require("fs"); -const path = require("path"); +const fs = require("node:fs"); +const path = require("node:path"); const semver = require("semver"); const { parseArgs } = require("../scripts/parseargs"); const { @@ -396,7 +396,7 @@ function reactNativeConfig({ name, testAppPath, platforms, flatten }) { case "windows": return join( "const project = (() => {", - ' const path = require("path");', + ' const path = require("node:path");', ' const sourceDir = "windows";', " try {", ' const { windowsProjectPath } = require("react-native-test-app");', @@ -791,7 +791,7 @@ function gatherConfig(params, disableCache = false) { * @param {string} packagePath * @returns {string} */ -function getAppName(packagePath, fs = require("fs")) { +function getAppName(packagePath, fs = require("node:fs")) { try { const { name } = readJSONFile(path.join(packagePath, "app.json"), fs); if (typeof name === "string" && name) { @@ -811,7 +811,11 @@ function getAppName(packagePath, fs = require("fs")) { * @param {Configuration} config * @returns {boolean} */ -function isDestructive(packagePath, { files, oldFiles }, fs = require("fs")) { +function isDestructive( + packagePath, + { files, oldFiles }, + fs = require("node:fs") +) { const modified = Object.keys(files).reduce((result, file) => { const targetPath = path.join(packagePath, file); if (fs.existsSync(targetPath)) { @@ -849,7 +853,7 @@ function isDestructive(packagePath, { files, oldFiles }, fs = require("fs")) { * @param {string} destination * @returns {Promise} */ -function removeAllFiles(files, destination, fs = require("fs/promises")) { +function removeAllFiles(files, destination, fs = require("node:fs/promises")) { const options = { force: true, maxRetries: 3, recursive: true }; return Promise.all( files.map((filename) => fs.rm(path.join(destination, filename), options)) @@ -865,7 +869,7 @@ function removeAllFiles(files, destination, fs = require("fs/promises")) { function updatePackageManifest( path, { dependencies, scripts }, - fs = require("fs") + fs = require("node:fs") ) { const manifest = readJSONFile(path, fs); @@ -894,7 +898,7 @@ function updatePackageManifest( * @param {string} destination * @returns {Promise} */ -function writeAllFiles(files, destination, fs = require("fs/promises")) { +function writeAllFiles(files, destination, fs = require("node:fs/promises")) { const options = { recursive: true, mode: 0o755 }; return Promise.all( Object.keys(files).map(async (filename) => { diff --git a/scripts/helpers.js b/scripts/helpers.js index d792f8f062..32c6a426ce 100644 --- a/scripts/helpers.js +++ b/scripts/helpers.js @@ -1,7 +1,7 @@ // @ts-check "use strict"; -const path = require("path"); +const path = require("node:path"); /** * Finds nearest relative path to a file or directory from current path. @@ -12,7 +12,7 @@ const path = require("path"); function findNearest( fileOrDirName, currentDir = path.resolve(""), - fs = require("fs") + fs = require("node:fs") ) { const rootDirectory = process.platform === "win32" @@ -37,7 +37,7 @@ function findNearest( * @param {import("node:fs").PathLike} path * @returns {T} */ -function readJSONFile(path, fs = require("fs")) { +function readJSONFile(path, fs = require("node:fs")) { return JSON.parse(fs.readFileSync(path, { encoding: "utf-8" })); } @@ -49,7 +49,7 @@ function readJSONFile(path, fs = require("fs")) { function getPackageVersion( module, startDir = process.cwd(), - fs = require("fs") + fs = require("node:fs") ) { const options = { paths: [startDir] }; const manifestPath = require.resolve(`${module}/package.json`, options); diff --git a/scripts/init.js b/scripts/init.js index 54a9e704d8..003fcc650e 100755 --- a/scripts/init.js +++ b/scripts/init.js @@ -2,8 +2,8 @@ // @ts-check "use strict"; -const { spawnSync } = require("child_process"); -const path = require("path"); +const { spawnSync } = require("node:child_process"); +const path = require("node:path"); /** * @template T @@ -173,8 +173,8 @@ function getTemplate(platforms) { require("https") .get(url, (res) => { - const fs = require("fs"); - const os = require("os"); + const fs = require("node:fs"); + const os = require("node:os"); const tmpDir = path.join(os.tmpdir(), "react-native-test-app"); fs.mkdirSync(tmpDir, { recursive: true }); diff --git a/scripts/link.js b/scripts/link.js index 40b5f6f21b..a9a97639d1 100644 --- a/scripts/link.js +++ b/scripts/link.js @@ -1,6 +1,6 @@ // @ts-check -const path = require("path"); +const path = require("node:path"); const localNodeModulesPath = path.join(process.cwd(), "node_modules"); diff --git a/scripts/parseargs.js b/scripts/parseargs.js index 1254a5bcd6..c323b2e5d8 100644 --- a/scripts/parseargs.js +++ b/scripts/parseargs.js @@ -61,7 +61,7 @@ function formatHelp(description, options) { ); } - const script = require("path").basename(process.argv[1]); + const script = require("node:path").basename(process.argv[1]); return [ `usage: ${script} [options]`, "", diff --git a/scripts/patch-cli-platform-android.js b/scripts/patch-cli-platform-android.js index bf45bb16a7..bee7889063 100755 --- a/scripts/patch-cli-platform-android.js +++ b/scripts/patch-cli-platform-android.js @@ -2,7 +2,7 @@ // @ts-check "use strict"; -const fs = require("fs"); +const fs = require("path:fs"); const nativeModulesScript = "native_modules.gradle"; diff --git a/scripts/validate-manifest.js b/scripts/validate-manifest.js index f6bd5ebdfe..5d6effeead 100755 --- a/scripts/validate-manifest.js +++ b/scripts/validate-manifest.js @@ -2,7 +2,7 @@ // @ts-check "use strict"; -const path = require("path"); +const path = require("node:path"); const { readJSONFile } = require("./helpers"); const { generateSchema } = require("./schema"); @@ -25,7 +25,7 @@ const BUILD_PROPS = [ * @param {string=} startDir * @returns {string | undefined} */ -function findFile(file, startDir = process.cwd(), fs = require("fs")) { +function findFile(file, startDir = process.cwd(), fs = require("node:fs")) { let currentDir = startDir; let candidate = path.join(currentDir, file); while (!fs.existsSync(candidate)) { @@ -53,7 +53,7 @@ function makeValidator() { * @param {import("node:fs").PathLike | undefined} manifestPath * @returns {Record | number} */ -function validateManifest(manifestPath, fs = require("fs")) { +function validateManifest(manifestPath, fs = require("node:fs")) { if (!manifestPath) { console.error( `Failed to find '${APP_JSON}'. Please make sure you're in the right directory.` @@ -92,7 +92,7 @@ function validateManifest(manifestPath, fs = require("fs")) { function validate( outputMode = "stdout", projectRoot = process.cwd(), - fs = require("fs") + fs = require("node:fs") ) { const manifestPath = findFile(APP_JSON, projectRoot, fs); const manifest = validateManifest(manifestPath, fs); diff --git a/windows/test-app.js b/windows/test-app.js index e2da32efd9..7949fcd33b 100755 --- a/windows/test-app.js +++ b/windows/test-app.js @@ -2,9 +2,9 @@ // @ts-check "use strict"; -const fs = require("fs"); -const os = require("os"); -const path = require("path"); +const fs = require("node:fs"); +const os = require("node:os"); +const path = require("node:path"); const { findNearest, getPackageVersion, @@ -65,7 +65,7 @@ const textFileWriteOptions = { encoding: "utf-8", mode: 0o644 }; * @param {string} src * @param {string} dest */ -function copy(src, dest, fs = require("fs")) { +function copy(src, dest, fs = require("node:fs")) { fs.mkdir(dest, mkdirRecursiveOptions, (err) => { rethrow(err); fs.readdir(src, { withFileTypes: true }, (err, files) => { @@ -312,7 +312,7 @@ function generateContentItems( assets = { assetFilters: [], assetItemFilters: [], assetItems: [] }, currentFilter = "Assets", source = "", - fs = require("fs") + fs = require("node:fs") ) { const uuidv5 = (() => { try { @@ -396,7 +396,7 @@ function generateContentItems( * @param {string} projectPath * @returns {Assets} */ -function parseResources(resources, projectPath, fs = require("fs")) { +function parseResources(resources, projectPath, fs = require("node:fs")) { if (!Array.isArray(resources)) { if (resources && resources.windows) { return parseResources(resources.windows, projectPath, fs); @@ -487,7 +487,7 @@ function copyAndReplace( destPath, replacements, callback = rethrow, - fs = require("fs") + fs = require("node:fs") ) { const stat = fs.statSync(srcPath); if (stat.isDirectory()) { @@ -528,7 +528,7 @@ function copyAndReplace( * singleApp?: string; * }} Application name, and paths to directories and files to include. */ -function getBundleResources(manifestFilePath, fs = require("fs")) { +function getBundleResources(manifestFilePath, fs = require("node:fs")) { // Default value if manifest or 'name' field don't exist. const defaultName = "ReactTestApp"; @@ -581,7 +581,7 @@ function getBundleResources(manifestFilePath, fs = require("fs")) { * @param {string} rnwPath Path to `react-native-windows`. * @returns {string | null} */ -function getHermesVersion(rnwPath, fs = require("fs")) { +function getHermesVersion(rnwPath, fs = require("node:fs")) { const jsEnginePropsPath = path.join( rnwPath, "PropertySheets", @@ -601,7 +601,7 @@ function getHermesVersion(rnwPath, fs = require("fs")) { function generateSolution( destPath, { autolink, useHermes, useNuGet }, - fs = require("fs") + fs = require("node:fs") ) { if (!destPath) { return "Missing or invalid destination path"; @@ -913,7 +913,7 @@ function generateSolution( if (autolink) { Promise.all([...copyTasks, solutionTask]).then(() => { - const { spawn } = require("child_process"); + const { spawn } = require("node:child_process"); spawn( path.join(path.dirname(process.argv0), "npx.cmd"), ["react-native", "autolink-windows", "--proj", reactTestAppProjectPath], @@ -956,7 +956,7 @@ if (require.main === module) { autolink: { description: `Run autolink after generating the solution (this is the default on Windows)`, type: "boolean", - default: require("os").platform() === "win32", + default: require("node:os").platform() === "win32", }, "use-hermes": { description: "Use Hermes JavaScript engine (experimental)",