diff --git a/cli/js/lib.deno.ns.d.ts b/cli/js/lib.deno.ns.d.ts index 0bd176a9f8..b2e67b2889 100644 --- a/cli/js/lib.deno.ns.d.ts +++ b/cli/js/lib.deno.ns.d.ts @@ -116,6 +116,7 @@ declare namespace Deno { | "picture" | "public" | "template" + | "tmp" | "video"; // TODO(ry) markdown in jsdoc broken https://deno.land/typedoc/index.html#dir @@ -131,7 +132,7 @@ declare namespace Deno { * * Argument values: `"home"`, `"cache"`, `"config"`, `"executable"`, `"data"`, * `"data_local"`, `"audio"`, `"desktop"`, `"document"`, `"download"`, - * `"font"`, `"picture"`, `"public"`, `"template"`, `"video"` + * `"font"`, `"picture"`, `"public"`, `"template"`, `"tmp"`, `"video"` * * `"cache"` * @@ -237,6 +238,14 @@ declare namespace Deno { * | macOS | – | – | * | Windows | `{FOLDERID_Templates}` | C:\Users\Alice\AppData\Roaming\Microsoft\Windows\Templates | * + * `"tmp"` + * + * |Platform | Value | Example | + * | ------- | ---------------------- | ---------------------------------------------------------- | + * | Linux | `TMPDIR` | /tmp | + * | macOS | `TMPDIR` | /tmp | + * | Windows | `{TMP}` | C:\Users\Alice\AppData\Local\Temp | + * * `"video"` * * |Platform | Value | Example | diff --git a/cli/js/os.ts b/cli/js/os.ts index 309f5e1ff2..89632e34fc 100644 --- a/cli/js/os.ts +++ b/cli/js/os.ts @@ -88,6 +88,7 @@ type DirKind = | "picture" | "public" | "template" + | "tmp" | "video"; /** @@ -191,6 +192,14 @@ type DirKind = * | macOS | – | – | * | Windows | `{FOLDERID_Templates}` | C:\Users\Alice\AppData\Roaming\Microsoft\Windows\Templates | * + * "tmp" + * + * |Platform | Value | Example | + * | ------- | ---------------------- | ---------------------------------------------------------- | + * | Linux | `TMPDIR` | /tmp | + * | macOS | `TMPDIR` | /tmp | + * | Windows | `{TMP}` | C:\Users\Alice\AppData\Local\Temp | + * * "video" * |Platform | Value | Example | * | ------- | ------------------- | --------------------- | diff --git a/cli/js/os_test.ts b/cli/js/os_test.ts index 6825b7b0df..b0561840bb 100644 --- a/cli/js/os_test.ts +++ b/cli/js/os_test.ts @@ -234,6 +234,14 @@ testPerm({ env: true }, function getDir(): void { { os: "linux", shouldHaveValue: false } ] }, + { + kind: "tmp", + runtime: [ + { os: "mac", shouldHaveValue: true }, + { os: "win", shouldHaveValue: true }, + { os: "linux", shouldHaveValue: true } + ] + }, { kind: "video", runtime: [ diff --git a/cli/ops/os.rs b/cli/ops/os.rs index 2df9470ddb..4288567078 100644 --- a/cli/ops/os.rs +++ b/cli/ops/os.rs @@ -49,6 +49,7 @@ fn op_get_dir( "picture" => dirs::picture_dir(), "public" => dirs::public_dir(), "template" => dirs::template_dir(), + "tmp" => Some(std::env::temp_dir()), "video" => dirs::video_dir(), _ => { return Err( diff --git a/std/node/os.ts b/std/node/os.ts index f34551da9c..4bc70d1ffa 100644 --- a/std/node/os.ts +++ b/std/node/os.ts @@ -180,9 +180,9 @@ export function setPriority(pid: number, priority?: number): void { notImplemented(SEE_GITHUB_ISSUE); } -/** Not yet implemented */ -export function tmpdir(): string { - notImplemented(SEE_GITHUB_ISSUE); +/** Returns the operating system's default directory for temporary files as a string. */ +export function tmpdir(): string | null { + return Deno.dir("tmp"); } /** Not yet implemented */ diff --git a/std/node/os_test.ts b/std/node/os_test.ts index 6ef123575f..a73a2d4e99 100644 --- a/std/node/os_test.ts +++ b/std/node/os_test.ts @@ -16,6 +16,13 @@ test({ } }); +test({ + name: "tmp directory is a string", + fn() { + assertEquals(typeof os.tmpdir(), "string"); + } +}); + test({ name: "hostname is a string", fn() { @@ -230,13 +237,6 @@ test({ Error, "Not implemented" ); - assertThrows( - () => { - os.tmpdir(); - }, - Error, - "Not implemented" - ); assertThrows( () => { os.totalmem();