Describe the bug
Per documentation on @std/url:
Use functions from @std/path/posix instead (examples included). @std/url will be removed in the future.
However, using basename from @std/path/posix on a URL errors when the URL has a https protocol.
The @std/url documentation seems to imply this should not be the case:
...
const url = new URL("https:///deno.land///std//assert//.//mod.ts");
const normalizedUrl = normalize(url);
assertEquals(normalizedUrl.href, "https://deno.land/std/assert/mod.ts");
assertEquals(basename(normalizedUrl), "mod.ts"); // Correctly gets basename from http URL
...
Steps to Reproduce
import { basename } from "@std/path/posix/basename";
const urlBasename = basename(new URL("https://jsr.io/@std/path/doc/posix/~/basename"));
Uncaught TypeError: URL must be a file URL: received "https:"
at assertArg (file:///$HOME/$WORKSPACE/node_modules/.pnpm/@jsr+std__path@1.1.4/node_modules/@jsr/std__path/_common/from_file_url.js:6:11)
at fromFileUrl (file:///$HOME/$WORKSPACE/node_modules/.pnpm/@jsr+std__path@1.1.4/node_modules/@jsr/std__path/posix/from_file_url.js:18:9)
at basename (file:///$HOME/$WORKSPACE/node_modules/.pnpm/@jsr+std__path@1.1.4/node_modules/@jsr/std__path/posix/basename.js:45:12)
This applies to @std/path/basename as well.
If instead of using a URL object, the .href is used directly as a string, the basename is returned correctly.
Expected behavior
The basename to work regardless of the protocol.
Actual behavior
Uncaught TypeError: URL must be a file URL: received "https:"
at assertArg (file:///$HOME/$WORKSPACE/node_modules/.pnpm/@jsr+std__path@1.1.4/node_modules/@jsr/std__path/_common/from_file_url.js:6:11)
at fromFileUrl (file:///$HOME/$WORKSPACE/node_modules/.pnpm/@jsr+std__path@1.1.4/node_modules/@jsr/std__path/posix/from_file_url.js:18:9)
at basename (file:///$HOME/$WORKSPACE/node_modules/.pnpm/@jsr+std__path@1.1.4/node_modules/@jsr/std__path/posix/basename.js:45:12)
Environment
- OS: macOS Tahoe 26.2
- deno version: v2.7.14
- std version: 1.1.4
Describe the bug
Per documentation on @std/url:
However, using basename from @std/path/posix on a URL errors when the URL has a https protocol.
The @std/url documentation seems to imply this should not be the case:
Steps to Reproduce
This applies to
@std/path/basenameas well.If instead of using a URL object, the .href is used directly as a string, the basename is returned correctly.
Expected behavior
The basename to work regardless of the protocol.
Actual behavior
Environment