summaryrefslogtreecommitdiff
path: root/tests/testdata/jsr/registry/@std/path/0.220.1/posix/normalize.ts
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2024-04-27 17:11:57 -0400
committerGitHub <noreply@github.com>2024-04-27 21:11:57 +0000
commit651e3e9e6daf3243dd21b7f66ce9738abdc39a37 (patch)
tree0417415c1a5fa79d0ae5d8f0f75561138275e34e /tests/testdata/jsr/registry/@std/path/0.220.1/posix/normalize.ts
parente0f849289fdb2c2d86f7fb04182c37012ce2bb69 (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/normalize.ts')
-rw-r--r--tests/testdata/jsr/registry/@std/path/0.220.1/posix/normalize.ts30
1 files changed, 30 insertions, 0 deletions
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;
+}