std/path/posix/from_file_url.ts

26 lines
689 B
TypeScript

// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
// This module is browser compatible.
import { assertArg } from "../_common/from_file_url.ts";
/**
* Converts a file URL to a path string.
*
* @example Usage
* ```ts
* import { fromFileUrl } from "@std/path/posix/from-file-url";
* import { assertEquals } from "@std/assert";
*
* assertEquals(fromFileUrl(new URL("file:///home/foo")), "/home/foo");
* ```
*
* @param url The file URL to convert.
* @returns The path string.
*/
export function fromFileUrl(url: URL | string): string {
url = assertArg(url);
return decodeURIComponent(
url.pathname.replace(/%(?![0-9A-Fa-f]{2})/g, "%25"),
);
}