summaryrefslogtreecommitdiff
path: root/tests/registry/jsr/@std/path/0.220.1/posix
diff options
context:
space:
mode:
Diffstat (limited to 'tests/registry/jsr/@std/path/0.220.1/posix')
-rw-r--r--tests/registry/jsr/@std/path/0.220.1/posix/_util.ts10
-rw-r--r--tests/registry/jsr/@std/path/0.220.1/posix/join.ts25
-rw-r--r--tests/registry/jsr/@std/path/0.220.1/posix/normalize.ts30
3 files changed, 65 insertions, 0 deletions
diff --git a/tests/registry/jsr/@std/path/0.220.1/posix/_util.ts b/tests/registry/jsr/@std/path/0.220.1/posix/_util.ts
new file mode 100644
index 000000000..b446155df
--- /dev/null
+++ b/tests/registry/jsr/@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/registry/jsr/@std/path/0.220.1/posix/join.ts b/tests/registry/jsr/@std/path/0.220.1/posix/join.ts
new file mode 100644
index 000000000..625762ab9
--- /dev/null
+++ b/tests/registry/jsr/@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/registry/jsr/@std/path/0.220.1/posix/normalize.ts b/tests/registry/jsr/@std/path/0.220.1/posix/normalize.ts
new file mode 100644
index 000000000..8e88ad254
--- /dev/null
+++ b/tests/registry/jsr/@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;
+}