diff options
Diffstat (limited to 'src/javascript')
-rw-r--r-- | src/javascript/jsc/node/types.zig | 7 | ||||
-rw-r--r-- | src/javascript/jsc/path-posix.exports.js | 35 | ||||
-rw-r--r-- | src/javascript/jsc/path-win32.exports.js | 35 | ||||
-rw-r--r-- | src/javascript/jsc/path.exports.js | 18 |
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; |