aboutsummaryrefslogtreecommitdiff
path: root/src/javascript
diff options
context:
space:
mode:
Diffstat (limited to 'src/javascript')
-rw-r--r--src/javascript/jsc/node/types.zig7
-rw-r--r--src/javascript/jsc/path-posix.exports.js35
-rw-r--r--src/javascript/jsc/path-win32.exports.js35
-rw-r--r--src/javascript/jsc/path.exports.js18
4 files changed, 75 insertions, 20 deletions
diff --git a/src/javascript/jsc/node/types.zig b/src/javascript/jsc/node/types.zig
index 9238c3970..bbdbba30c 100644
--- a/src/javascript/jsc/node/types.zig
+++ b/src/javascript/jsc/node/types.zig
@@ -2168,6 +2168,7 @@ pub const Path = struct {
}
pub fn join(globalThis: *JSC.JSGlobalObject, isWindows: bool, args_ptr: [*]JSC.JSValue, args_len: u16) callconv(.C) JSC.JSValue {
if (comptime is_bindgen) return JSC.JSValue.jsUndefined();
+ if (args_len == 0) return JSC.ZigString.init("").toValue(globalThis);
var stack_fallback_allocator = std.heap.stackFallback(
(32 * @sizeOf(string)),
@@ -2263,7 +2264,7 @@ pub const Path = struct {
var arguments = args_ptr[0..args_len];
if (args_len > 1 and JSC.JSValue.eqlValue(args_ptr[0], args_ptr[1]))
- return JSC.ZigString.init(".").toValue(globalThis);
+ return JSC.ZigString.init("").toValue(globalThis);
var from_slice: JSC.ZigString.Slice = if (args_len > 0) arguments[0].toSlice(globalThis, heap_allocator) else JSC.ZigString.Slice.empty;
defer from_slice.deinit();
@@ -2274,9 +2275,9 @@ pub const Path = struct {
var to = to_slice.slice();
var out = if (!isWindows)
- PathHandler.relativeNormalized(from, to, .posix, false)
+ PathHandler.relativePlatform(from, to, .posix, true)
else
- PathHandler.relativeNormalized(from, to, .windows, false);
+ PathHandler.relativePlatform(from, to, .windows, true);
var out_str = JSC.ZigString.init(out);
out_str.detectEncoding();
diff --git a/src/javascript/jsc/path-posix.exports.js b/src/javascript/jsc/path-posix.exports.js
new file mode 100644
index 000000000..b3f61c1a2
--- /dev/null
+++ b/src/javascript/jsc/path-posix.exports.js
@@ -0,0 +1,35 @@
+function bound(obj) {
+ return {
+ basename: obj.basename.bind(obj),
+ dirname: obj.dirname.bind(obj),
+ extname: obj.extname.bind(obj),
+ format: obj.format.bind(obj),
+ isAbsolute: obj.isAbsolute.bind(obj),
+ join: obj.join.bind(obj),
+ normalize: obj.normalize.bind(obj),
+ parse: obj.parse.bind(obj),
+ relative: obj.relative.bind(obj),
+ resolve: obj.resolve.bind(obj),
+ toNamespacedPath: obj.toNamespacedPath.bind(obj),
+ sep: obj.sep,
+ delimiter: obj.delimiter,
+ };
+}
+var path = bound(Bun._Path(false));
+
+export var {
+ basename,
+ dirname,
+ extname,
+ format,
+ isAbsolute,
+ join,
+ normalize,
+ parse,
+ relative,
+ resolve,
+ toNamespacedPath,
+ sep,
+ delimiter,
+} = path;
+export default path;
diff --git a/src/javascript/jsc/path-win32.exports.js b/src/javascript/jsc/path-win32.exports.js
new file mode 100644
index 000000000..932cc8960
--- /dev/null
+++ b/src/javascript/jsc/path-win32.exports.js
@@ -0,0 +1,35 @@
+function bound(obj) {
+ return {
+ basename: obj.basename.bind(obj),
+ dirname: obj.dirname.bind(obj),
+ extname: obj.extname.bind(obj),
+ format: obj.format.bind(obj),
+ isAbsolute: obj.isAbsolute.bind(obj),
+ join: obj.join.bind(obj),
+ normalize: obj.normalize.bind(obj),
+ parse: obj.parse.bind(obj),
+ relative: obj.relative.bind(obj),
+ resolve: obj.resolve.bind(obj),
+ toNamespacedPath: obj.toNamespacedPath.bind(obj),
+ sep: obj.sep,
+ delimiter: obj.delimiter,
+ };
+}
+var path = bound(Bun._Path(true));
+
+export var {
+ basename,
+ dirname,
+ extname,
+ format,
+ isAbsolute,
+ join,
+ normalize,
+ parse,
+ relative,
+ resolve,
+ toNamespacedPath,
+ sep,
+ delimiter,
+} = path;
+export default path;
diff --git a/src/javascript/jsc/path.exports.js b/src/javascript/jsc/path.exports.js
index 6fa7af88d..98f685fc1 100644
--- a/src/javascript/jsc/path.exports.js
+++ b/src/javascript/jsc/path.exports.js
@@ -21,7 +21,7 @@ path.posix = posix;
export var posix = bound(Bun._Path(false));
export var win32 = bound(Bun._Path(true));
-var {
+export var {
basename,
dirname,
extname,
@@ -37,20 +37,4 @@ var {
delimiter,
} = path;
-export {
- basename,
- dirname,
- extname,
- format,
- isAbsolute,
- join,
- normalize,
- parse,
- relative,
- resolve,
- toNamespacedPath,
- sep,
- delimiter,
-};
-
export default path;