summaryrefslogtreecommitdiff
path: root/tests/testdata/jsr/registry/@std/path/0.220.1/posix
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
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')
-rw-r--r--tests/testdata/jsr/registry/@std/path/0.220.1/posix/_util.ts10
-rw-r--r--tests/testdata/jsr/registry/@std/path/0.220.1/posix/join.ts25
-rw-r--r--tests/testdata/jsr/registry/@std/path/0.220.1/posix/normalize.ts30
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;
+}