summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Clements <ryanclementshax@gmail.com>2023-06-16 06:43:59 -0400
committerGitHub <noreply@github.com>2023-06-16 19:43:59 +0900
commitd32287d2111ec7b845e09c7cfe6a5d779c5f3bd1 (patch)
tree20341750a687b05458a5cae8a634fb3ac79888f9
parent239dc5e681ad61fb77ed7e0791a8512d6842040b (diff)
fix(ext/node): remove fromFileUrl from "node:path" (#19504)
-rw-r--r--cli/tests/unit_node/testdata/child_process_stdio.js3
-rw-r--r--cli/tests/unit_node/testdata/child_process_stdio_012.js3
-rw-r--r--cli/tests/unit_node/testdata/child_process_unref.js3
-rw-r--r--ext/node/polyfills/_fs/_fs_exists.ts6
-rw-r--r--ext/node/polyfills/_fs/_fs_link.ts10
-rw-r--r--ext/node/polyfills/_fs/_fs_readFile.ts6
-rw-r--r--ext/node/polyfills/_fs/_fs_readlink.ts6
-rw-r--r--ext/node/polyfills/_fs/_fs_rename.ts10
-rw-r--r--ext/node/polyfills/_fs/_fs_symlink.ts10
-rw-r--r--ext/node/polyfills/_fs/_fs_truncate.ts6
-rw-r--r--ext/node/polyfills/_fs/_fs_utimes.ts6
-rw-r--r--ext/node/polyfills/_fs/_fs_writeFile.ts6
-rw-r--r--ext/node/polyfills/path/_posix.ts20
-rw-r--r--ext/node/polyfills/path/_win32.ts28
-rw-r--r--ext/node/polyfills/path/mod.ts1
-rw-r--r--ext/node/polyfills/path/posix.ts1
-rw-r--r--ext/node/polyfills/path/win32.ts1
-rw-r--r--ext/node/polyfills/process.ts5
18 files changed, 42 insertions, 89 deletions
diff --git a/cli/tests/unit_node/testdata/child_process_stdio.js b/cli/tests/unit_node/testdata/child_process_stdio.js
index 399b890ed..b13b09562 100644
--- a/cli/tests/unit_node/testdata/child_process_stdio.js
+++ b/cli/tests/unit_node/testdata/child_process_stdio.js
@@ -1,9 +1,10 @@
import childProcess from "node:child_process";
import process from "node:process";
import * as path from "node:path";
+import { fileURLToPath } from "node:url";
const script = path.join(
- path.dirname(path.fromFileUrl(import.meta.url)),
+ path.dirname(fileURLToPath(import.meta.url)),
"node_modules",
"foo",
"index.js",
diff --git a/cli/tests/unit_node/testdata/child_process_stdio_012.js b/cli/tests/unit_node/testdata/child_process_stdio_012.js
index 682d8a084..e3717f985 100644
--- a/cli/tests/unit_node/testdata/child_process_stdio_012.js
+++ b/cli/tests/unit_node/testdata/child_process_stdio_012.js
@@ -1,9 +1,10 @@
import childProcess from "node:child_process";
import process from "node:process";
import * as path from "node:path";
+import { fileURLToPath } from "node:url";
const script = path.join(
- path.dirname(path.fromFileUrl(import.meta.url)),
+ path.dirname(fileURLToPath(import.meta.url)),
"node_modules",
"foo",
"index.js",
diff --git a/cli/tests/unit_node/testdata/child_process_unref.js b/cli/tests/unit_node/testdata/child_process_unref.js
index cc7815d97..8201ac44d 100644
--- a/cli/tests/unit_node/testdata/child_process_unref.js
+++ b/cli/tests/unit_node/testdata/child_process_unref.js
@@ -1,8 +1,9 @@
import cp from "node:child_process";
import * as path from "node:path";
+import { fileURLToPath } from "node:url";
const script = path.join(
- path.dirname(path.fromFileUrl(import.meta.url)),
+ path.dirname(fileURLToPath(import.meta.url)),
"infinite_loop.js",
);
const childProcess = cp.spawn(Deno.execPath(), ["run", script]);
diff --git a/ext/node/polyfills/_fs/_fs_exists.ts b/ext/node/polyfills/_fs/_fs_exists.ts
index 37ce599e9..32eb7948a 100644
--- a/ext/node/polyfills/_fs/_fs_exists.ts
+++ b/ext/node/polyfills/_fs/_fs_exists.ts
@@ -1,5 +1,5 @@
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
-import { fromFileUrl } from "ext:deno_node/path.ts";
+import { pathFromURL } from "ext:deno_web/00_infra.js";
type ExistsCallback = (exists: boolean) => void;
@@ -9,7 +9,7 @@ type ExistsCallback = (exists: boolean) => void;
* Deprecated in node api
*/
export function exists(path: string | URL, callback: ExistsCallback) {
- path = path instanceof URL ? fromFileUrl(path) : path;
+ path = path instanceof URL ? pathFromURL(path) : path;
Deno.lstat(path).then(() => callback(true), () => callback(false));
}
@@ -30,7 +30,7 @@ Object.defineProperty(exists, kCustomPromisifiedSymbol, {
* are implemented. See https://github.com/denoland/deno/issues/3403
*/
export function existsSync(path: string | URL): boolean {
- path = path instanceof URL ? fromFileUrl(path) : path;
+ path = path instanceof URL ? pathFromURL(path) : path;
try {
Deno.lstatSync(path);
return true;
diff --git a/ext/node/polyfills/_fs/_fs_link.ts b/ext/node/polyfills/_fs/_fs_link.ts
index 3039ade09..affa42852 100644
--- a/ext/node/polyfills/_fs/_fs_link.ts
+++ b/ext/node/polyfills/_fs/_fs_link.ts
@@ -1,6 +1,6 @@
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
import type { CallbackWithError } from "ext:deno_node/_fs/_fs_common.ts";
-import { fromFileUrl } from "ext:deno_node/path.ts";
+import { pathFromURL } from "ext:deno_web/00_infra.js";
import { promisify } from "ext:deno_node/internal/util.mjs";
/**
@@ -13,9 +13,9 @@ export function link(
callback: CallbackWithError,
) {
existingPath = existingPath instanceof URL
- ? fromFileUrl(existingPath)
+ ? pathFromURL(existingPath)
: existingPath;
- newPath = newPath instanceof URL ? fromFileUrl(newPath) : newPath;
+ newPath = newPath instanceof URL ? pathFromURL(newPath) : newPath;
Deno.link(existingPath, newPath).then(() => callback(null), callback);
}
@@ -38,9 +38,9 @@ export function linkSync(
newPath: string | URL,
) {
existingPath = existingPath instanceof URL
- ? fromFileUrl(existingPath)
+ ? pathFromURL(existingPath)
: existingPath;
- newPath = newPath instanceof URL ? fromFileUrl(newPath) : newPath;
+ newPath = newPath instanceof URL ? pathFromURL(newPath) : newPath;
Deno.linkSync(existingPath, newPath);
}
diff --git a/ext/node/polyfills/_fs/_fs_readFile.ts b/ext/node/polyfills/_fs/_fs_readFile.ts
index b3bd5b94c..04e42e391 100644
--- a/ext/node/polyfills/_fs/_fs_readFile.ts
+++ b/ext/node/polyfills/_fs/_fs_readFile.ts
@@ -8,7 +8,7 @@ import {
import { Buffer } from "ext:deno_node/buffer.ts";
import { readAll } from "ext:deno_io/12_io.js";
import { FileHandle } from "ext:deno_node/internal/fs/handle.ts";
-import { fromFileUrl } from "ext:deno_node/path.ts";
+import { pathFromURL } from "ext:deno_web/00_infra.js";
import {
BinaryEncodings,
Encodings,
@@ -57,7 +57,7 @@ export function readFile(
optOrCallback?: FileOptionsArgument | Callback | null | undefined,
callback?: Callback,
) {
- path = path instanceof URL ? fromFileUrl(path) : path;
+ path = path instanceof URL ? pathFromURL(path) : path;
let cb: Callback | undefined;
if (typeof optOrCallback === "function") {
cb = optOrCallback;
@@ -105,7 +105,7 @@ export function readFileSync(
path: string | URL,
opt?: FileOptionsArgument,
): string | Buffer {
- path = path instanceof URL ? fromFileUrl(path) : path;
+ path = path instanceof URL ? pathFromURL(path) : path;
const data = Deno.readFileSync(path);
const encoding = getEncoding(opt);
if (encoding && encoding !== "binary") {
diff --git a/ext/node/polyfills/_fs/_fs_readlink.ts b/ext/node/polyfills/_fs/_fs_readlink.ts
index 982376152..c5e344c4b 100644
--- a/ext/node/polyfills/_fs/_fs_readlink.ts
+++ b/ext/node/polyfills/_fs/_fs_readlink.ts
@@ -6,7 +6,7 @@ import {
MaybeEmpty,
notImplemented,
} from "ext:deno_node/_utils.ts";
-import { fromFileUrl } from "ext:deno_node/path.ts";
+import { pathFromURL } from "ext:deno_web/00_infra.js";
import { promisify } from "ext:deno_node/internal/util.mjs";
type ReadlinkCallback = (
@@ -55,7 +55,7 @@ export function readlink(
optOrCallback: ReadlinkCallback | ReadlinkOptions,
callback?: ReadlinkCallback,
) {
- path = path instanceof URL ? fromFileUrl(path) : path;
+ path = path instanceof URL ? pathFromURL(path) : path;
let cb: ReadlinkCallback | undefined;
if (typeof optOrCallback === "function") {
@@ -83,7 +83,7 @@ export function readlinkSync(
path: string | URL,
opt?: ReadlinkOptions,
): string | Uint8Array {
- path = path instanceof URL ? fromFileUrl(path) : path;
+ path = path instanceof URL ? pathFromURL(path) : path;
return maybeEncode(Deno.readLinkSync(path), getEncoding(opt));
}
diff --git a/ext/node/polyfills/_fs/_fs_rename.ts b/ext/node/polyfills/_fs/_fs_rename.ts
index 5d87619c7..ff0a7246b 100644
--- a/ext/node/polyfills/_fs/_fs_rename.ts
+++ b/ext/node/polyfills/_fs/_fs_rename.ts
@@ -1,5 +1,5 @@
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
-import { fromFileUrl } from "ext:deno_node/path.ts";
+import { pathFromURL } from "ext:deno_web/00_infra.js";
import { promisify } from "ext:deno_node/internal/util.mjs";
export function rename(
@@ -7,8 +7,8 @@ export function rename(
newPath: string | URL,
callback: (err?: Error) => void,
) {
- oldPath = oldPath instanceof URL ? fromFileUrl(oldPath) : oldPath;
- newPath = newPath instanceof URL ? fromFileUrl(newPath) : newPath;
+ oldPath = oldPath instanceof URL ? pathFromURL(oldPath) : oldPath;
+ newPath = newPath instanceof URL ? pathFromURL(newPath) : newPath;
if (!callback) throw new Error("No callback function supplied");
@@ -21,8 +21,8 @@ export const renamePromise = promisify(rename) as (
) => Promise<void>;
export function renameSync(oldPath: string | URL, newPath: string | URL) {
- oldPath = oldPath instanceof URL ? fromFileUrl(oldPath) : oldPath;
- newPath = newPath instanceof URL ? fromFileUrl(newPath) : newPath;
+ oldPath = oldPath instanceof URL ? pathFromURL(oldPath) : oldPath;
+ newPath = newPath instanceof URL ? pathFromURL(newPath) : newPath;
Deno.renameSync(oldPath, newPath);
}
diff --git a/ext/node/polyfills/_fs/_fs_symlink.ts b/ext/node/polyfills/_fs/_fs_symlink.ts
index 23e4deaa5..48da49dd1 100644
--- a/ext/node/polyfills/_fs/_fs_symlink.ts
+++ b/ext/node/polyfills/_fs/_fs_symlink.ts
@@ -1,6 +1,6 @@
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
import { CallbackWithError } from "ext:deno_node/_fs/_fs_common.ts";
-import { fromFileUrl } from "ext:deno_node/path.ts";
+import { pathFromURL } from "ext:deno_web/00_infra.js";
import { promisify } from "ext:deno_node/internal/util.mjs";
type SymlinkType = "file" | "dir";
@@ -11,8 +11,8 @@ export function symlink(
typeOrCallback: SymlinkType | CallbackWithError,
maybeCallback?: CallbackWithError,
) {
- target = target instanceof URL ? fromFileUrl(target) : target;
- path = path instanceof URL ? fromFileUrl(path) : path;
+ target = target instanceof URL ? pathFromURL(target) : target;
+ path = path instanceof URL ? pathFromURL(path) : path;
const type: SymlinkType = typeof typeOrCallback === "string"
? typeOrCallback
@@ -38,8 +38,8 @@ export function symlinkSync(
path: string | URL,
type?: SymlinkType,
) {
- target = target instanceof URL ? fromFileUrl(target) : target;
- path = path instanceof URL ? fromFileUrl(path) : path;
+ target = target instanceof URL ? pathFromURL(target) : target;
+ path = path instanceof URL ? pathFromURL(path) : path;
type = type || "file";
Deno.symlinkSync(target, path, { type });
diff --git a/ext/node/polyfills/_fs/_fs_truncate.ts b/ext/node/polyfills/_fs/_fs_truncate.ts
index b6d39352b..596c11211 100644
--- a/ext/node/polyfills/_fs/_fs_truncate.ts
+++ b/ext/node/polyfills/_fs/_fs_truncate.ts
@@ -1,6 +1,6 @@
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
import { CallbackWithError } from "ext:deno_node/_fs/_fs_common.ts";
-import { fromFileUrl } from "ext:deno_node/path.ts";
+import { pathFromURL } from "ext:deno_web/00_infra.js";
import { promisify } from "ext:deno_node/internal/util.mjs";
export function truncate(
@@ -8,7 +8,7 @@ export function truncate(
lenOrCallback: number | CallbackWithError,
maybeCallback?: CallbackWithError,
) {
- path = path instanceof URL ? fromFileUrl(path) : path;
+ path = path instanceof URL ? pathFromURL(path) : path;
const len: number | undefined = typeof lenOrCallback === "number"
? lenOrCallback
: undefined;
@@ -27,7 +27,7 @@ export const truncatePromise = promisify(truncate) as (
) => Promise<void>;
export function truncateSync(path: string | URL, len?: number) {
- path = path instanceof URL ? fromFileUrl(path) : path;
+ path = path instanceof URL ? pathFromURL(path) : path;
Deno.truncateSync(path, len);
}
diff --git a/ext/node/polyfills/_fs/_fs_utimes.ts b/ext/node/polyfills/_fs/_fs_utimes.ts
index 93b108f00..0fef8fd05 100644
--- a/ext/node/polyfills/_fs/_fs_utimes.ts
+++ b/ext/node/polyfills/_fs/_fs_utimes.ts
@@ -1,7 +1,7 @@
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
import type { CallbackWithError } from "ext:deno_node/_fs/_fs_common.ts";
-import { fromFileUrl } from "ext:deno_node/path.ts";
+import { pathFromURL } from "ext:deno_web/00_infra.js";
import { promisify } from "ext:deno_node/internal/util.mjs";
function getValidTime(
@@ -30,7 +30,7 @@ export function utimes(
mtime: number | string | Date,
callback: CallbackWithError,
) {
- path = path instanceof URL ? fromFileUrl(path) : path;
+ path = path instanceof URL ? pathFromURL(path) : path;
if (!callback) {
throw new Deno.errors.InvalidData("No callback function supplied");
@@ -53,7 +53,7 @@ export function utimesSync(
atime: number | string | Date,
mtime: number | string | Date,
) {
- path = path instanceof URL ? fromFileUrl(path) : path;
+ path = path instanceof URL ? pathFromURL(path) : path;
atime = getValidTime(atime, "atime");
mtime = getValidTime(mtime, "mtime");
diff --git a/ext/node/polyfills/_fs/_fs_writeFile.ts b/ext/node/polyfills/_fs/_fs_writeFile.ts
index a72d49147..fd573147b 100644
--- a/ext/node/polyfills/_fs/_fs_writeFile.ts
+++ b/ext/node/polyfills/_fs/_fs_writeFile.ts
@@ -1,6 +1,6 @@
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
import { Encodings } from "ext:deno_node/_utils.ts";
-import { fromFileUrl } from "ext:deno_node/path.ts";
+import { pathFromURL } from "ext:deno_web/00_infra.js";
import { Buffer } from "ext:deno_node/buffer.ts";
import {
CallbackWithError,
@@ -41,7 +41,7 @@ export function writeFile(
throw new TypeError("Callback must be a function.");
}
- pathOrRid = pathOrRid instanceof URL ? fromFileUrl(pathOrRid) : pathOrRid;
+ pathOrRid = pathOrRid instanceof URL ? pathFromURL(pathOrRid) : pathOrRid;
const flag: string | undefined = isFileOptions(options)
? options.flag
@@ -107,7 +107,7 @@ export function writeFileSync(
data: string | Uint8Array | Object,
options?: Encodings | WriteFileOptions,
) {
- pathOrRid = pathOrRid instanceof URL ? fromFileUrl(pathOrRid) : pathOrRid;
+ pathOrRid = pathOrRid instanceof URL ? pathFromURL(pathOrRid) : pathOrRid;
const flag: string | undefined = isFileOptions(options)
? options.flag
diff --git a/ext/node/polyfills/path/_posix.ts b/ext/node/polyfills/path/_posix.ts
index 3f42bbe86..7190795a3 100644
--- a/ext/node/polyfills/path/_posix.ts
+++ b/ext/node/polyfills/path/_posix.ts
@@ -478,24 +478,6 @@ export function parse(path: string): ParsedPath {
}
/**
- * Converts a file URL to a path string.
- *
- * ```ts
- * fromFileUrl("file:///home/foo"); // "/home/foo"
- * ```
- * @param url of a file URL
- */
-export function fromFileUrl(url: string | URL): string {
- url = url instanceof URL ? url : new URL(url);
- if (url.protocol != "file:") {
- throw new TypeError("Must be a file URL.");
- }
- return decodeURIComponent(
- url.pathname.replace(/%(?![0-9A-Fa-f]{2})/g, "%25"),
- );
-}
-
-/**
* Converts a path string to a file URL.
*
* ```ts
@@ -513,14 +495,12 @@ export function toFileUrl(path: string): URL {
);
return url;
}
-
export default {
basename,
delimiter,
dirname,
extname,
format,
- fromFileUrl,
isAbsolute,
join,
normalize,
diff --git a/ext/node/polyfills/path/_win32.ts b/ext/node/polyfills/path/_win32.ts
index 73321e709..856ffdff5 100644
--- a/ext/node/polyfills/path/_win32.ts
+++ b/ext/node/polyfills/path/_win32.ts
@@ -952,33 +952,6 @@ export function parse(path: string): ParsedPath {
}
/**
- * Converts a file URL to a path string.
- *
- * ```ts
- * fromFileUrl("file:///home/foo"); // "\\home\\foo"
- * fromFileUrl("file:///C:/Users/foo"); // "C:\\Users\\foo"
- * fromFileUrl("file://localhost/home/foo"); // "\\\\localhost\\home\\foo"
- * ```
- * @param url of a file URL
- */
-export function fromFileUrl(url: string | URL): string {
- url = url instanceof URL ? url : new URL(url);
- if (url.protocol != "file:") {
- throw new TypeError("Must be a file URL.");
- }
- let path = decodeURIComponent(
- url.pathname.replace(/\//g, "\\").replace(/%(?![0-9A-Fa-f]{2})/g, "%25"),
- ).replace(/^\\*([A-Za-z]:)(\\|$)/, "$1\\");
- if (url.hostname != "") {
- // Note: The `URL` implementation guarantees that the drive letter and
- // hostname are mutually exclusive. Otherwise it would not have been valid
- // to append the hostname and path like this.
- path = `\\\\${url.hostname}${path}`;
- }
- return path;
-}
-
-/**
* Converts a path string to a file URL.
*
* ```ts
@@ -1012,7 +985,6 @@ export default {
dirname,
extname,
format,
- fromFileUrl,
isAbsolute,
join,
normalize,
diff --git a/ext/node/polyfills/path/mod.ts b/ext/node/polyfills/path/mod.ts
index ee231e17d..92611d502 100644
--- a/ext/node/polyfills/path/mod.ts
+++ b/ext/node/polyfills/path/mod.ts
@@ -28,7 +28,6 @@ export const {
dirname,
extname,
format,
- fromFileUrl,
isAbsolute,
join,
normalize,
diff --git a/ext/node/polyfills/path/posix.ts b/ext/node/polyfills/path/posix.ts
index 40e291f27..17e890085 100644
--- a/ext/node/polyfills/path/posix.ts
+++ b/ext/node/polyfills/path/posix.ts
@@ -10,7 +10,6 @@ export const {
dirname,
extname,
format,
- fromFileUrl,
isAbsolute,
join,
normalize,
diff --git a/ext/node/polyfills/path/win32.ts b/ext/node/polyfills/path/win32.ts
index e847b0a3b..b015c0eba 100644
--- a/ext/node/polyfills/path/win32.ts
+++ b/ext/node/polyfills/path/win32.ts
@@ -10,7 +10,6 @@ export const {
dirname,
extname,
format,
- fromFileUrl,
isAbsolute,
join,
normalize,
diff --git a/ext/node/polyfills/process.ts b/ext/node/polyfills/process.ts
index b676e87d7..444dc12e4 100644
--- a/ext/node/polyfills/process.ts
+++ b/ext/node/polyfills/process.ts
@@ -13,7 +13,8 @@ import {
} from "ext:deno_node/internal/errors.ts";
import { getOptionValue } from "ext:deno_node/internal/options.ts";
import { assert } from "ext:deno_node/_util/asserts.ts";
-import { fromFileUrl, join } from "ext:deno_node/path.ts";
+import { join } from "ext:deno_node/path.ts";
+import { pathFromURL } from "ext:deno_web/00_infra.js";
import {
arch as arch_,
chdir,
@@ -705,7 +706,7 @@ internals.__bootstrapNodeProcess = function (
Object.defineProperty(argv, "1", {
get: () => {
if (Deno.mainModule.startsWith("file:")) {
- return fromFileUrl(Deno.mainModule);
+ return pathFromURL(new URL(Deno.mainModule));
} else {
return join(Deno.cwd(), "$deno$node.js");
}