aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-06-29 16:36:59 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-06-29 16:37:38 -0700
commit70a87e11818d36f5922a495e2aed8618b01e9a73 (patch)
tree33f09d2eb6a66cb960bfa0a159b2d08e47d5775b /src
parent7af757d104763a84e0c6d0b36eb0055afe1c40fa (diff)
downloadbun-70a87e11818d36f5922a495e2aed8618b01e9a73.tar.gz
bun-70a87e11818d36f5922a495e2aed8618b01e9a73.tar.zst
bun-70a87e11818d36f5922a495e2aed8618b01e9a73.zip
Make `node:os` `tmpdir` more consistent with Node.js
Diffstat (limited to 'src')
-rw-r--r--src/bun.js/node/node_os.zig28
-rw-r--r--src/js/node/os.js23
-rw-r--r--src/js/out/modules/node/os.js14
3 files changed, 35 insertions, 30 deletions
diff --git a/src/bun.js/node/node_os.zig b/src/bun.js/node/node_os.zig
index 7f9ea2e28..f71143315 100644
--- a/src/bun.js/node/node_os.zig
+++ b/src/bun.js/node/node_os.zig
@@ -16,7 +16,7 @@ pub const Os = struct {
pub const code = @embedFile("../os.exports.js");
pub fn create(globalObject: *JSC.JSGlobalObject) callconv(.C) JSC.JSValue {
- const module = JSC.JSValue.createEmptyObject(globalObject, 20);
+ const module = JSC.JSValue.createEmptyObject(globalObject, 22);
module.put(globalObject, JSC.ZigString.static("arch"), JSC.NewFunction(globalObject, JSC.ZigString.static("arch"), 0, arch, true));
module.put(globalObject, JSC.ZigString.static("cpus"), JSC.NewFunction(globalObject, JSC.ZigString.static("cpus"), 0, cpus, true));
@@ -31,7 +31,6 @@ pub const Os = struct {
module.put(globalObject, JSC.ZigString.static("platform"), JSC.NewFunction(globalObject, JSC.ZigString.static("platform"), 0, platform, true));
module.put(globalObject, JSC.ZigString.static("release"), JSC.NewFunction(globalObject, JSC.ZigString.static("release"), 0, release, true));
module.put(globalObject, JSC.ZigString.static("setPriority"), JSC.NewFunction(globalObject, JSC.ZigString.static("setPriority"), 2, setPriority, true));
- module.put(globalObject, JSC.ZigString.static("tmpdir"), JSC.NewFunction(globalObject, JSC.ZigString.static("tmpdir"), 0, tmpdir, true));
module.put(globalObject, JSC.ZigString.static("totalmem"), JSC.NewFunction(globalObject, JSC.ZigString.static("totalmem"), 0, totalmem, true));
module.put(globalObject, JSC.ZigString.static("type"), JSC.NewFunction(globalObject, JSC.ZigString.static("type"), 0, Os.type, true));
module.put(globalObject, JSC.ZigString.static("uptime"), JSC.NewFunction(globalObject, JSC.ZigString.static("uptime"), 0, uptime, true));
@@ -485,7 +484,7 @@ pub const Os = struct {
std.os.AF.INET => JSC.ZigString.static("IPv4"),
std.os.AF.INET6 => JSC.ZigString.static("IPv6"),
else => JSC.ZigString.static("unknown"),
- }).toValue(globalThis));
+ }).toValueGC(globalThis));
// mac <string> The MAC address of the network interface
{
@@ -620,29 +619,6 @@ pub const Os = struct {
return JSC.JSValue.jsUndefined();
}
- pub fn tmpdir(globalThis: *JSC.JSGlobalObject, _: *JSC.CallFrame) callconv(.C) JSC.JSValue {
- JSC.markBinding(@src());
-
- const dir: []const u8 = brk: {
- if (comptime Environment.isWindows) {
- if (bun.getenvZ("TEMP") orelse bun.getenvZ("TMP")) |tmpdir_| {
- break :brk tmpdir_;
- }
-
- if (bun.getenvZ("SYSTEMROOT") orelse bun.getenvZ("WINDIR")) |systemdir_| {
- break :brk systemdir_ ++ "\\temp";
- }
- } else {
- const dir = bun.asByteSlice(bun.getenvZ("TMPDIR") orelse bun.getenvZ("TMP") orelse bun.getenvZ("TEMP") orelse "/tmp");
- break :brk strings.withoutTrailingSlash(dir);
- }
-
- break :brk "unknown";
- };
-
- return JSC.ZigString.init(dir).withEncoding().toValueGC(globalThis);
- }
-
pub fn totalmem(_: *JSC.JSGlobalObject, _: *JSC.CallFrame) callconv(.C) JSC.JSValue {
JSC.markBinding(@src());
diff --git a/src/js/node/os.js b/src/js/node/os.js
index 3315708ad..3cd0288bd 100644
--- a/src/js/node/os.js
+++ b/src/js/node/os.js
@@ -1,4 +1,22 @@
// Hardcoded module "node:os"
+
+export var tmpdir = function () {
+ var lazy = Symbol.for("Bun.lazy");
+ var primordials = globalThis[lazy]("primordials");
+
+ var { Bun } = primordials;
+ var env = Bun.env;
+
+ tmpdir = function () {
+ var path = env["TMPDIR"] || env["TMP"] || env["TEMP"] || "/tmp";
+ const length = path.length;
+ if (length > 1 && path[length - 1] === "/") path = path.slice(0, -1);
+ return path;
+ };
+
+ return tmpdir();
+};
+
function bound(obj) {
return {
arch: obj.arch.bind(obj),
@@ -13,7 +31,9 @@ function bound(obj) {
platform: obj.platform.bind(obj),
release: obj.release.bind(obj),
setPriority: obj.setPriority.bind(obj),
- tmpdir: obj.tmpdir.bind(obj),
+ get tmpdir() {
+ return tmpdir;
+ },
totalmem: obj.totalmem.bind(obj),
type: obj.type.bind(obj),
uptime: obj.uptime.bind(obj),
@@ -42,7 +62,6 @@ export var {
platform,
release,
setPriority,
- tmpdir,
totalmem,
type,
uptime,
diff --git a/src/js/out/modules/node/os.js b/src/js/out/modules/node/os.js
index e27464e15..69c112412 100644
--- a/src/js/out/modules/node/os.js
+++ b/src/js/out/modules/node/os.js
@@ -12,7 +12,9 @@ var bound = function(obj) {
platform: obj.platform.bind(obj),
release: obj.release.bind(obj),
setPriority: obj.setPriority.bind(obj),
- tmpdir: obj.tmpdir.bind(obj),
+ get tmpdir() {
+ return tmpdir;
+ },
totalmem: obj.totalmem.bind(obj),
type: obj.type.bind(obj),
uptime: obj.uptime.bind(obj),
@@ -24,6 +26,15 @@ var bound = function(obj) {
constants: obj.constants,
[Symbol.for("CommonJS")]: 0
};
+}, tmpdir = function() {
+ var lazy = Symbol.for("Bun.lazy"), primordials = globalThis[lazy]("primordials"), { Bun: Bun2 } = primordials, env = Bun2.env;
+ return tmpdir = function() {
+ var path = env["TMPDIR"] || env["TMP"] || env["TEMP"] || "/tmp";
+ const length = path.length;
+ if (length > 1 && path[length - 1] === "/")
+ path = path.slice(0, -1);
+ return path;
+ }, tmpdir();
}, os = bound(Bun._Os()), {
arch,
cpus,
@@ -37,7 +48,6 @@ var bound = function(obj) {
platform,
release,
setPriority,
- tmpdir,
totalmem,
type,
uptime,