From 378e6a8c0369f3256cde8a595d3dbdfe4f1dc2f9 Mon Sep 17 00:00:00 2001 From: Colin Ihrig Date: Tue, 25 Oct 2022 15:23:36 -0400 Subject: [PATCH] feat: stabilize Deno.utime() and Deno.utimeSync() (#16421) --- cli/diagnostics.rs | 2 -- cli/dts/lib.deno.ns.d.ts | 40 +++++++++++++++++++++++++++++++ cli/dts/lib.deno.unstable.d.ts | 44 ---------------------------------- runtime/js/90_deno_ns.js | 4 ++-- runtime/ops/fs.rs | 4 ---- 5 files changed, 42 insertions(+), 52 deletions(-) diff --git a/cli/diagnostics.rs b/cli/diagnostics.rs index 94af49b873..0fa35839ee 100644 --- a/cli/diagnostics.rs +++ b/cli/diagnostics.rs @@ -49,8 +49,6 @@ const UNSTABLE_DENO_PROPS: &[&str] = &[ "startTls", "systemMemoryInfo", "umask", - "utime", - "utimeSync", "spawnChild", "Child", "spawn", diff --git a/cli/dts/lib.deno.ns.d.ts b/cli/dts/lib.deno.ns.d.ts index 86be40c67b..0ac06dc625 100644 --- a/cli/dts/lib.deno.ns.d.ts +++ b/cli/dts/lib.deno.ns.d.ts @@ -4026,6 +4026,46 @@ declare namespace Deno { */ export function fstat(rid: number): Promise; + /** + * Synchronously changes the access (`atime`) and modification (`mtime`) times + * of a file system object referenced by `path`. Given times are either in + * seconds (UNIX epoch time) or as `Date` objects. + * + * ```ts + * Deno.utimeSync("myfile.txt", 1556495550, new Date()); + * ``` + * + * Requires `allow-write` permission. + * + * @tags allow-write + * @category File System + */ + export function utimeSync( + path: string | URL, + atime: number | Date, + mtime: number | Date, + ): void; + + /** + * Changes the access (`atime`) and modification (`mtime`) times of a file + * system object referenced by `path`. Given times are either in seconds + * (UNIX epoch time) or as `Date` objects. + * + * ```ts + * await Deno.utime("myfile.txt", 1556495550, new Date()); + * ``` + * + * Requires `allow-write` permission. + * + * @tags allow-write + * @category File System + */ + export function utime( + path: string | URL, + atime: number | Date, + mtime: number | Date, + ): Promise; + /** @category HTTP Server */ export interface RequestEvent { readonly request: Request; diff --git a/cli/dts/lib.deno.unstable.d.ts b/cli/dts/lib.deno.unstable.d.ts index 1b26cdd334..c687848cae 100644 --- a/cli/dts/lib.deno.unstable.d.ts +++ b/cli/dts/lib.deno.unstable.d.ts @@ -844,50 +844,6 @@ declare namespace Deno { symbols: S, ): DynamicLibrary; - /** **UNSTABLE**: needs investigation into high precision time. - * - * Synchronously changes the access (`atime`) and modification (`mtime`) times - * of a file system object referenced by `path`. Given times are either in - * seconds (UNIX epoch time) or as `Date` objects. - * - * ```ts - * Deno.utimeSync("myfile.txt", 1556495550, new Date()); - * ``` - * - * Requires `allow-write` permission. - * Needs investigation into high precision time. - * - * @tags allow-write - * @category File System - */ - export function utimeSync( - path: string | URL, - atime: number | Date, - mtime: number | Date, - ): void; - - /** **UNSTABLE**: New API, yet to be vetted. - * - * Changes the access (`atime`) and modification (`mtime`) times of a file - * system object referenced by `path`. Given times are either in seconds - * (UNIX epoch time) or as `Date` objects. - * - * ```ts - * await Deno.utime("myfile.txt", 1556495550, new Date()); - * ``` - * - * Requires `allow-write` permission. - * Needs investigation into high precision time. - * - * @tags allow-write - * @category File System - */ - export function utime( - path: string | URL, - atime: number | Date, - mtime: number | Date, - ): Promise; - /** **UNSTABLE**: New API, yet to be vetted. * * @category Sub Process diff --git a/runtime/js/90_deno_ns.js b/runtime/js/90_deno_ns.js index ef5edffc9c..b2612f9991 100644 --- a/runtime/js/90_deno_ns.js +++ b/runtime/js/90_deno_ns.js @@ -112,6 +112,8 @@ serveHttp: __bootstrap.http.serveHttp, resolveDns: __bootstrap.net.resolveDns, upgradeWebSocket: __bootstrap.http.upgradeWebSocket, + utime: __bootstrap.fs.utime, + utimeSync: __bootstrap.fs.utimeSync, kill: __bootstrap.process.kill, addSignalListener: __bootstrap.signals.addSignalListener, removeSignalListener: __bootstrap.signals.removeSignalListener, @@ -133,8 +135,6 @@ listenDatagram: __bootstrap.netUnstable.listenDatagram, Listener: __bootstrap.netUnstable.Listener, umask: __bootstrap.fs.umask, - utime: __bootstrap.fs.utime, - utimeSync: __bootstrap.fs.utimeSync, HttpClient: __bootstrap.fetch.HttpClient, createHttpClient: __bootstrap.fetch.createHttpClient, http: __bootstrap.http, diff --git a/runtime/ops/fs.rs b/runtime/ops/fs.rs index f2ee9af9e9..a7e515d7bb 100644 --- a/runtime/ops/fs.rs +++ b/runtime/ops/fs.rs @@ -1955,8 +1955,6 @@ fn op_utime_sync( mtime_secs: i64, mtime_nanos: u32, ) -> Result<(), AnyError> { - super::check_unstable(state, "Deno.utime"); - let path = PathBuf::from(&path); let atime = filetime::FileTime::from_unix_time(atime_secs, atime_nanos); let mtime = filetime::FileTime::from_unix_time(mtime_secs, mtime_nanos); @@ -1980,8 +1978,6 @@ async fn op_utime_async( mtime_secs: i64, mtime_nanos: u32, ) -> Result<(), AnyError> { - super::check_unstable(&state.borrow(), "Deno.utime"); - let path = PathBuf::from(&path); let atime = filetime::FileTime::from_unix_time(atime_secs, atime_nanos); let mtime = filetime::FileTime::from_unix_time(mtime_secs, mtime_nanos);