diff options
| author | David Sherret <dsherret@users.noreply.github.com> | 2024-04-27 17:11:57 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-27 21:11:57 +0000 |
| commit | 651e3e9e6daf3243dd21b7f66ce9738abdc39a37 (patch) | |
| tree | 0417415c1a5fa79d0ae5d8f0f75561138275e34e /tests/testdata/jsr/registry/@std/path/0.220.1/posix | |
| parent | e0f849289fdb2c2d86f7fb04182c37012ce2bb69 (diff) | |
fix(compile): certain jsr specifiers sometimes can't load (#23567)
When returning a jsr specifier for resolve it seems like deno core does
not work properly and hangs.
Closes https://github.com/denoland/deno/issues/23551
Closes https://github.com/denoland/deno/issues/23139
Diffstat (limited to 'tests/testdata/jsr/registry/@std/path/0.220.1/posix')
3 files changed, 65 insertions, 0 deletions
diff --git a/tests/testdata/jsr/registry/@std/path/0.220.1/posix/_util.ts b/tests/testdata/jsr/registry/@std/path/0.220.1/posix/_util.ts new file mode 100644 index 000000000..b446155df --- /dev/null +++ b/tests/testdata/jsr/registry/@std/path/0.220.1/posix/_util.ts @@ -0,0 +1,10 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +// This module is browser compatible. + +import { CHAR_FORWARD_SLASH } from "../_common/constants.ts"; + +export function isPosixPathSeparator(code: number): boolean { + return code === CHAR_FORWARD_SLASH; +} diff --git a/tests/testdata/jsr/registry/@std/path/0.220.1/posix/join.ts b/tests/testdata/jsr/registry/@std/path/0.220.1/posix/join.ts new file mode 100644 index 000000000..625762ab9 --- /dev/null +++ b/tests/testdata/jsr/registry/@std/path/0.220.1/posix/join.ts @@ -0,0 +1,25 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. + +import { assertPath } from "../_common/assert_path.ts"; +import { normalize } from "./normalize.ts"; + +/** + * Join all given a sequence of `paths`,then normalizes the resulting path. + * @param paths to be joined and normalized + */ +export function join(...paths: string[]): string { + if (paths.length === 0) return "."; + + let joined: string | undefined; + for (let i = 0; i < paths.length; ++i) { + const path = paths[i]!; + assertPath(path); + if (path.length > 0) { + if (!joined) joined = path; + else joined += `/${path}`; + } + } + if (!joined) return "."; + return normalize(joined); +} diff --git a/tests/testdata/jsr/registry/@std/path/0.220.1/posix/normalize.ts b/tests/testdata/jsr/registry/@std/path/0.220.1/posix/normalize.ts new file mode 100644 index 000000000..8e88ad254 --- /dev/null +++ b/tests/testdata/jsr/registry/@std/path/0.220.1/posix/normalize.ts @@ -0,0 +1,30 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. + +import { assertArg } from "../_common/normalize.ts"; +import { normalizeString } from "../_common/normalize_string.ts"; +import { isPosixPathSeparator } from "./_util.ts"; + +/** + * Normalize the `path`, resolving `'..'` and `'.'` segments. + * Note that resolving these segments does not necessarily mean that all will be eliminated. + * A `'..'` at the top-level will be preserved, and an empty path is canonically `'.'`. + * @param path to be normalized + */ +export function normalize(path: string): string { + assertArg(path); + + const isAbsolute = isPosixPathSeparator(path.charCodeAt(0)); + const trailingSeparator = isPosixPathSeparator( + path.charCodeAt(path.length - 1), + ); + + // Normalize the path + path = normalizeString(path, !isAbsolute, "/", isPosixPathSeparator); + + if (path.length === 0 && !isAbsolute) path = "."; + if (path.length > 0 && trailingSeparator) path += "/"; + + if (isAbsolute) return `/${path}`; + return path; +} |
