From b72d1a7256fd141c644024b8d9e15fa11234109e Mon Sep 17 00:00:00 2001 From: Asher Gomez Date: Wed, 4 Sep 2024 11:28:15 +1000 Subject: [PATCH] BREAKING(fs): remove `Deno.fstat[Sync]()` (#25351) Towards #22079 Signed-off-by: Asher Gomez --- cli/tools/test/fmt.rs | 2 +- cli/tsc/dts/lib.deno.ns.d.ts | 39 ------------------------- ext/fs/30_fs.js | 18 +++--------- runtime/js/90_deno_ns.js | 16 ---------- runtime/js/99_main.js | 4 --- tests/specs/future/runtime_api/main.js | 2 -- tests/specs/future/runtime_api/main.out | 2 -- tests/unit/stat_test.ts | 35 ---------------------- 8 files changed, 5 insertions(+), 113 deletions(-) diff --git a/cli/tools/test/fmt.rs b/cli/tools/test/fmt.rs index 0cdb3f05ab7e51..bfaac0616e67bc 100644 --- a/cli/tools/test/fmt.rs +++ b/cli/tools/test/fmt.rs @@ -319,7 +319,7 @@ pub const OP_DETAILS: phf::Map<&'static str, [&'static str; 2]> = phf_map! { "op_fs_copy_file_async" => ["copy a file", "awaiting the result of a `Deno.copyFile` call"], "op_fs_events_poll" => ["get the next file system event", "breaking out of a for await loop looping over `Deno.FsEvents`"], "op_fs_fdatasync_async" => ["flush pending data operations for a file to disk", "awaiting the result of a `Deno.fdatasync` or `Deno.FsFile.syncData` call"], - "op_fs_file_stat_async" => ["get file metadata", "awaiting the result of a `Deno.fstat` or `Deno.FsFile.stat` call"], + "op_fs_file_stat_async" => ["get file metadata", "awaiting the result of a `Deno.FsFile.prototype.stat` call"], "op_fs_flock_async" => ["lock a file", "awaiting the result of a `Deno.FsFile.lock` call"], "op_fs_fsync_async" => ["flush pending data operations for a file to disk", "awaiting the result of a `Deno.fsync` or `Deno.FsFile.sync` call"], "op_fs_ftruncate_async" => ["truncate a file", "awaiting the result of a `Deno.ftruncate` or `Deno.FsFile.truncate` call"], diff --git a/cli/tsc/dts/lib.deno.ns.d.ts b/cli/tsc/dts/lib.deno.ns.d.ts index 8489a8de87455a..0b7ac7cc9d276d 100644 --- a/cli/tsc/dts/lib.deno.ns.d.ts +++ b/cli/tsc/dts/lib.deno.ns.d.ts @@ -5326,45 +5326,6 @@ declare namespace Deno { */ export function ftruncateSync(rid: number, len?: number): void; - /** - * Returns a `Deno.FileInfo` for the given file stream. - * - * ```ts - * import { assert } from "jsr:@std/assert"; - * - * const file = await Deno.open("file.txt", { read: true }); - * const fileInfo = await Deno.fstat(file.rid); - * assert(fileInfo.isFile); - * ``` - * - * @deprecated This will be removed in Deno 2.0. See the - * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide} - * for migration instructions. - * - * @category File System - */ - export function fstat(rid: number): Promise; - - /** - * Synchronously returns a {@linkcode Deno.FileInfo} for the given file - * stream. - * - * ```ts - * import { assert } from "jsr:@std/assert"; - * - * const file = Deno.openSync("file.txt", { read: true }); - * const fileInfo = Deno.fstatSync(file.rid); - * assert(fileInfo.isFile); - * ``` - * - * @deprecated This will be removed in Deno 2.0. See the - * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide} - * for migration instructions. - * - * @category File System - */ - export function fstatSync(rid: number): FileInfo; - /** * Synchronously changes the access (`atime`) and modification (`mtime`) times * of a file system object referenced by `path`. Given times are either in diff --git a/ext/fs/30_fs.js b/ext/fs/30_fs.js index b95fe623ae69c5..87607ca28c4d7b 100644 --- a/ext/fs/30_fs.js +++ b/ext/fs/30_fs.js @@ -395,15 +395,6 @@ function parseFileInfo(response) { }; } -function fstatSync(rid) { - op_fs_file_stat_sync(rid, statBuf); - return statStruct(statBuf); -} - -async function fstat(rid) { - return parseFileInfo(await op_fs_file_stat_async(rid)); -} - async function lstat(path) { const res = await op_fs_lstat_async(pathFromURL(path)); return parseFileInfo(res); @@ -687,12 +678,13 @@ class FsFile { return seekSync(this.#rid, offset, whence); } - stat() { - return fstat(this.#rid); + async stat() { + return parseFileInfo(await op_fs_file_stat_async(this.#rid)); } statSync() { - return fstatSync(this.#rid); + op_fs_file_stat_sync(this.#rid, statBuf); + return statStruct(statBuf); } async syncData() { @@ -968,8 +960,6 @@ export { fdatasyncSync, File, FsFile, - fstat, - fstatSync, fsync, fsyncSync, ftruncate, diff --git a/runtime/js/90_deno_ns.js b/runtime/js/90_deno_ns.js index 7c805e64768f19..3fdab78003ec79 100644 --- a/runtime/js/90_deno_ns.js +++ b/runtime/js/90_deno_ns.js @@ -168,22 +168,6 @@ const denoNs = { connectTls: tls.connectTls, listenTls: tls.listenTls, startTls: tls.startTls, - fstatSync(rid) { - internals.warnOnDeprecatedApi( - "Deno.fstatSync()", - new Error().stack, - "Use `Deno.FsFile.statSync()` instead.", - ); - return fs.fstatSync(rid); - }, - fstat(rid) { - internals.warnOnDeprecatedApi( - "Deno.fstat()", - new Error().stack, - "Use `Deno.FsFile.stat()` instead.", - ); - return fs.fstat(rid); - }, fsyncSync: fs.fsyncSync, fsync: fs.fsync, fdatasyncSync: fs.fdatasyncSync, diff --git a/runtime/js/99_main.js b/runtime/js/99_main.js index 174612851341a0..a3056143350abe 100644 --- a/runtime/js/99_main.js +++ b/runtime/js/99_main.js @@ -802,8 +802,6 @@ function bootstrapMainRuntime(runtimeOptions, warmup = false) { delete globalThis.window; delete Deno.Buffer; delete Deno.File; - delete Deno.fstat; - delete Deno.fstatSync; delete Deno.ftruncate; delete Deno.ftruncateSync; delete Deno.FsFile.prototype.rid; @@ -979,8 +977,6 @@ function bootstrapWorkerRuntime( if (future) { delete Deno.Buffer; delete Deno.File; - delete Deno.fstat; - delete Deno.fstatSync; delete Deno.ftruncate; delete Deno.ftruncateSync; delete Deno.FsFile.prototype.rid; diff --git a/tests/specs/future/runtime_api/main.js b/tests/specs/future/runtime_api/main.js index ab53a809bc40c1..4e22716f0234e0 100644 --- a/tests/specs/future/runtime_api/main.js +++ b/tests/specs/future/runtime_api/main.js @@ -1,8 +1,6 @@ console.log("window is", globalThis.window); console.log("Deno.Buffer is", Deno.Buffer); console.log("Deno.File is", Deno.File); -console.log("Deno.fstat is", Deno.fstat); -console.log("Deno.fstatSync is", Deno.fstatSync); console.log("Deno.ftruncate is", Deno.ftruncate); console.log("Deno.ftruncateSync is", Deno.ftruncateSync); console.log( diff --git a/tests/specs/future/runtime_api/main.out b/tests/specs/future/runtime_api/main.out index 08b62ea3a97acd..922f4afad3027d 100644 --- a/tests/specs/future/runtime_api/main.out +++ b/tests/specs/future/runtime_api/main.out @@ -1,8 +1,6 @@ window is undefined Deno.Buffer is undefined Deno.File is undefined -Deno.fstat is undefined -Deno.fstatSync is undefined Deno.ftruncate is undefined Deno.ftruncateSync is undefined Deno.FsFile.prototype.rid is undefined diff --git a/tests/unit/stat_test.ts b/tests/unit/stat_test.ts index f9d7800312c308..950ffa81bc59ea 100644 --- a/tests/unit/stat_test.ts +++ b/tests/unit/stat_test.ts @@ -1,48 +1,13 @@ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. -// deno-lint-ignore-file no-deprecated-deno-api - import { assert, assertEquals, assertRejects, assertThrows, - DENO_FUTURE, pathToAbsoluteFileUrl, } from "./test_util.ts"; -Deno.test( - { ignore: DENO_FUTURE, permissions: { read: true } }, - function fstatSyncSuccess() { - using file = Deno.openSync("README.md"); - const fileInfo = Deno.fstatSync(file.rid); - assert(fileInfo.isFile); - assert(!fileInfo.isSymlink); - assert(!fileInfo.isDirectory); - assert(fileInfo.size); - assert(fileInfo.atime); - assert(fileInfo.mtime); - // The `birthtime` field is not available on Linux before kernel version 4.11. - assert(fileInfo.birthtime || Deno.build.os === "linux"); - }, -); - -Deno.test( - { ignore: DENO_FUTURE, permissions: { read: true } }, - async function fstatSuccess() { - using file = await Deno.open("README.md"); - const fileInfo = await Deno.fstat(file.rid); - assert(fileInfo.isFile); - assert(!fileInfo.isSymlink); - assert(!fileInfo.isDirectory); - assert(fileInfo.size); - assert(fileInfo.atime); - assert(fileInfo.mtime); - // The `birthtime` field is not available on Linux before kernel version 4.11. - assert(fileInfo.birthtime || Deno.build.os === "linux"); - }, -); - Deno.test( { permissions: { read: true, write: true } }, function statSyncSuccess() {