From a69b1e699ef76568a4a3da47939134abda545ec7 Mon Sep 17 00:00:00 2001 From: Asher Gomez Date: Wed, 11 Sep 2024 07:19:34 +1000 Subject: [PATCH] BREAKING(fs): remove `Deno.FsFile.prototype.rid` (#25499) Towards #22079 --------- Signed-off-by: Asher Gomez --- cli/tsc/dts/lib.deno.ns.d.ts | 15 +++------------ ext/fs/30_fs.js | 11 +---------- runtime/js/99_main.js | 5 ----- tests/specs/future/runtime_api/main.js | 4 ---- tests/specs/future/runtime_api/main.out | 1 - tests/unit/files_test.ts | 1 - tests/unit/process_test.ts | 14 ++++++-------- tests/unit_node/_fs/_fs_appendFile_test.ts | 2 ++ tests/unit_node/_fs/_fs_close_test.ts | 3 +++ tests/unit_node/_fs/_fs_fdatasync_test.ts | 2 ++ tests/unit_node/_fs/_fs_fstat_test.ts | 5 +++++ tests/unit_node/_fs/_fs_fsync_test.ts | 2 ++ tests/unit_node/_fs/_fs_ftruncate_test.ts | 4 ++++ tests/unit_node/_fs/_fs_futimes_test.ts | 2 ++ tests/unit_node/_fs/_fs_writeFile_test.ts | 3 +++ tests/unit_node/_fs/_fs_write_test.ts | 5 +++++ tests/unit_node/tty_test.ts | 3 --- 17 files changed, 38 insertions(+), 44 deletions(-) diff --git a/cli/tsc/dts/lib.deno.ns.d.ts b/cli/tsc/dts/lib.deno.ns.d.ts index 9a77bd1888..cd21b92766 100644 --- a/cli/tsc/dts/lib.deno.ns.d.ts +++ b/cli/tsc/dts/lib.deno.ns.d.ts @@ -1815,15 +1815,6 @@ declare namespace Deno { * @category File System */ export class FsFile implements Seeker, SeekerSync, Disposable { - /** - * The resource ID associated with the file instance. The resource ID - * should be considered an opaque reference to resource. - * - * @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. - */ - readonly rid: number; /** A {@linkcode ReadableStream} instance representing to the byte contents * of the file. This makes it easy to interoperate with other web streams * based APIs. @@ -1973,7 +1964,7 @@ declare namespace Deno { * resolves to the new position within the resource (bytes from the start). * * ```ts - * // Given file pointing to file with "Hello world", which is 11 bytes long: + * // Given the file contains "Hello world" text, which is 11 bytes long: * using file = await Deno.open( * "hello.txt", * { read: true, write: true, truncate: true, create: true }, @@ -1991,7 +1982,7 @@ declare namespace Deno { * The seek modes work as follows: * * ```ts - * // Given file.rid pointing to file with "Hello world", which is 11 bytes long: + * // Given the file contains "Hello world" text, which is 11 bytes long: * const file = await Deno.open( * "hello.txt", * { read: true, write: true, truncate: true, create: true }, @@ -2028,7 +2019,7 @@ declare namespace Deno { * The seek modes work as follows: * * ```ts - * // Given file.rid pointing to file with "Hello world", which is 11 bytes long: + * // Given the file contains "Hello world" text, which is 11 bytes long: * using file = Deno.openSync( * "hello.txt", * { read: true, write: true, truncate: true, create: true }, diff --git a/ext/fs/30_fs.js b/ext/fs/30_fs.js index 48e09c032f..c8e19ac758 100644 --- a/ext/fs/30_fs.js +++ b/ext/fs/30_fs.js @@ -1,6 +1,6 @@ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. -import { core, internals, primordials } from "ext:core/mod.js"; +import { core, primordials } from "ext:core/mod.js"; const { isDate, internalRidSymbol, @@ -581,15 +581,6 @@ class FsFile { } } - get rid() { - internals.warnOnDeprecatedApi( - "Deno.FsFile.rid", - new Error().stack, - "Use `Deno.FsFile` methods directly instead.", - ); - return this.#rid; - } - write(p) { return write(this.#rid, p); } diff --git a/runtime/js/99_main.js b/runtime/js/99_main.js index 4b17635bbe..36f08dce5b 100644 --- a/runtime/js/99_main.js +++ b/runtime/js/99_main.js @@ -783,7 +783,6 @@ function bootstrapMainRuntime(runtimeOptions, warmup = false) { } if (internals.future) { delete globalThis.window; - delete Deno.FsFile.prototype.rid; } } else { // Warmup @@ -930,10 +929,6 @@ function bootstrapWorkerRuntime( nodeDebug, }); } - - if (internals.future) { - delete Deno.FsFile.prototype.rid; - } } else { // Warmup return; diff --git a/tests/specs/future/runtime_api/main.js b/tests/specs/future/runtime_api/main.js index 509e5aa5e4..a6415b3c1e 100644 --- a/tests/specs/future/runtime_api/main.js +++ b/tests/specs/future/runtime_api/main.js @@ -1,8 +1,4 @@ console.log("window is", globalThis.window); -console.log( - "Deno.FsFile.prototype.rid is", - Deno.openSync(import.meta.filename).rid, -); // TCP // Since these tests may run in parallel, ensure this port is unique to this file diff --git a/tests/specs/future/runtime_api/main.out b/tests/specs/future/runtime_api/main.out index 7ca664c30b..f69bd14478 100644 --- a/tests/specs/future/runtime_api/main.out +++ b/tests/specs/future/runtime_api/main.out @@ -1,5 +1,4 @@ window is undefined -Deno.FsFile.prototype.rid is undefined Deno.Listener.prototype.rid is undefined Deno.TlsListener.prototype.rid is undefined Deno.FsFile constructor is illegal diff --git a/tests/unit/files_test.ts b/tests/unit/files_test.ts index 6692415d4f..3bbfc3855c 100644 --- a/tests/unit/files_test.ts +++ b/tests/unit/files_test.ts @@ -26,7 +26,6 @@ Deno.test( const filename = "tests/testdata/assets/fixture.json"; using file = await Deno.open(filename); assert(file instanceof Deno.FsFile); - assert(file.rid > 2); const bytesWritten = await copy(file, Deno.stdout); const fileSize = Deno.statSync(filename).size; assertEquals(bytesWritten, fileSize); diff --git a/tests/unit/process_test.ts b/tests/unit/process_test.ts index 93736e9ba6..5cbab3b4c5 100644 --- a/tests/unit/process_test.ts +++ b/tests/unit/process_test.ts @@ -6,7 +6,6 @@ import { assertStrictEquals, assertStringIncludes, assertThrows, - DENO_FUTURE, } from "./test_util.ts"; Deno.test( @@ -363,8 +362,6 @@ Deno.test( Deno.test( { - // Ignoring because uses `file.rid` - ignore: DENO_FUTURE, permissions: { run: true, write: true, read: true }, }, async function runRedirectStdoutStderr() { @@ -382,10 +379,12 @@ Deno.test( "eval", "Deno.stderr.write(new TextEncoder().encode('error\\n')); Deno.stdout.write(new TextEncoder().encode('output\\n'));", ], - stdout: file.rid, - stderr: file.rid, + stdout: "piped", + stderr: "piped", }); + await p.stdout.readable.pipeTo(file.writable, { preventClose: true }); + await p.stderr.readable.pipeTo(file.writable); await p.status(); p.close(); @@ -402,8 +401,6 @@ Deno.test( Deno.test( { - // Ignoring because uses `file.rid` - ignore: DENO_FUTURE, permissions: { run: true, write: true, read: true }, }, async function runRedirectStdin() { @@ -425,9 +422,10 @@ Deno.test( } `, ], - stdin: file.rid, + stdin: "piped", }); + await file.readable.pipeTo(p.stdin.writable); const status = await p.status(); assertEquals(status.code, 0); p.close(); diff --git a/tests/unit_node/_fs/_fs_appendFile_test.ts b/tests/unit_node/_fs/_fs_appendFile_test.ts index 3ee04c1f4e..5ee8eabed4 100644 --- a/tests/unit_node/_fs/_fs_appendFile_test.ts +++ b/tests/unit_node/_fs/_fs_appendFile_test.ts @@ -75,6 +75,7 @@ Deno.test({ read: true, }); await new Promise((resolve, reject) => { + // @ts-ignore (iuioiua) `file.rid` should no longer be needed once FDs are used appendFile(file.rid, "hello world", (err) => { if (err) reject(); else resolve(); @@ -166,6 +167,7 @@ Deno.test({ write: true, read: true, }); + // @ts-ignore (iuioiua) `file.rid` should no longer be needed once FDs are used appendFileSync(file.rid, "hello world"); const data = Deno.readFileSync(tempFile); assertEquals(decoder.decode(data), "hello world"); diff --git a/tests/unit_node/_fs/_fs_close_test.ts b/tests/unit_node/_fs/_fs_close_test.ts index 68148a272b..8880bc0461 100644 --- a/tests/unit_node/_fs/_fs_close_test.ts +++ b/tests/unit_node/_fs/_fs_close_test.ts @@ -13,6 +13,7 @@ Deno.test({ const file: Deno.FsFile = await Deno.open(tempFile); await new Promise((resolve, reject) => { + // @ts-ignore (iuioiua) `file.rid` should no longer be needed once FDs are used close(file.rid, (err) => { if (err !== null) reject(); else resolve(); @@ -45,6 +46,7 @@ Deno.test({ let foo: string; const promise = new Promise((resolve) => { + // @ts-ignore (iuioiua) `file.rid` should no longer be needed once FDs are used close(file.rid, () => { assert(foo === "bar"); resolve(); @@ -66,6 +68,7 @@ Deno.test({ const tempFile: string = Deno.makeTempFileSync(); const file: Deno.FsFile = Deno.openSync(tempFile); + // @ts-ignore (iuioiua) `file.rid` should no longer be needed once FDs are used closeSync(file.rid); Deno.removeSync(tempFile); }, diff --git a/tests/unit_node/_fs/_fs_fdatasync_test.ts b/tests/unit_node/_fs/_fs_fdatasync_test.ts index a3955ddbb3..40ca2969f9 100644 --- a/tests/unit_node/_fs/_fs_fdatasync_test.ts +++ b/tests/unit_node/_fs/_fs_fdatasync_test.ts @@ -19,6 +19,7 @@ Deno.test({ await file.write(data); await new Promise((resolve, reject) => { + // @ts-ignore (iuioiua) `file.rid` should no longer be needed once FDs are used fdatasync(file.rid, (err: Error | null) => { if (err !== null) reject(); else resolve(); @@ -55,6 +56,7 @@ Deno.test({ file.writeSync(data); try { + // @ts-ignore (iuioiua) `file.rid` should no longer be needed once FDs are used fdatasyncSync(file.rid); assertEquals(Deno.readFileSync(filePath), data); } finally { diff --git a/tests/unit_node/_fs/_fs_fstat_test.ts b/tests/unit_node/_fs/_fs_fstat_test.ts index e4fefbf1c1..afcac836f6 100644 --- a/tests/unit_node/_fs/_fs_fstat_test.ts +++ b/tests/unit_node/_fs/_fs_fstat_test.ts @@ -15,6 +15,7 @@ Deno.test({ using file = await Deno.open(filePath); await new Promise((resolve, reject) => { + // @ts-ignore (iuioiua) `file.rid` should no longer be needed once FDs are used fstat(file.rid, (err: Error | null, stat: Stats) => { if (err) reject(err); resolve(stat); @@ -43,6 +44,7 @@ Deno.test({ await new Promise((resolve, reject) => { fstat( + // @ts-ignore (iuioiua) `file.rid` should no longer be needed once FDs are used file.rid, { bigint: true }, (err: Error | null, stat: BigIntStats) => { @@ -71,6 +73,7 @@ Deno.test({ using file = Deno.openSync(filePath); try { + // @ts-ignore (iuioiua) `file.rid` should no longer be needed once FDs are used assertStats(fstatSync(file.rid), file.statSync()); } finally { Deno.removeSync(filePath); @@ -89,9 +92,11 @@ Deno.test({ try { // HEAD + // @ts-ignore (iuioiua) `file.rid` should no longer be needed once FDs are used assertStatsBigInt(fstatSync(file.rid, { bigint: true }), file.statSync()); // assertStatsBigInt( + // @ts-ignore (iuioiua) `file.rid` should no longer be needed once FDs are used fstatSync(file.rid, { bigint: true }), file.statSync(), ); diff --git a/tests/unit_node/_fs/_fs_fsync_test.ts b/tests/unit_node/_fs/_fs_fsync_test.ts index cd2aebb1ac..3c1509410e 100644 --- a/tests/unit_node/_fs/_fs_fsync_test.ts +++ b/tests/unit_node/_fs/_fs_fsync_test.ts @@ -18,6 +18,7 @@ Deno.test({ await file.truncate(size); await new Promise((resolve, reject) => { + // @ts-ignore (iuioiua) `file.rid` should no longer be needed once FDs are used fsync(file.rid, (err: Error | null) => { if (err !== null) reject(); else resolve(); @@ -53,6 +54,7 @@ Deno.test({ file.truncateSync(size); try { + // @ts-ignore (iuioiua) `file.rid` should no longer be needed once FDs are used fsyncSync(file.rid); assertEquals(Deno.statSync(filePath).size, size); } finally { diff --git a/tests/unit_node/_fs/_fs_ftruncate_test.ts b/tests/unit_node/_fs/_fs_ftruncate_test.ts index f2410f0883..974f8f168e 100644 --- a/tests/unit_node/_fs/_fs_ftruncate_test.ts +++ b/tests/unit_node/_fs/_fs_ftruncate_test.ts @@ -31,6 +31,7 @@ Deno.test({ }); await new Promise((resolve, reject) => { + // @ts-ignore (iuioiua) `file.rid` should no longer be needed once FDs are used ftruncate(file.rid, (err: Error | null) => { if (err !== null) reject(); else resolve(); @@ -66,6 +67,7 @@ Deno.test({ }); await new Promise((resolve, reject) => { + // @ts-ignore (iuioiua) `file.rid` should no longer be needed once FDs are used ftruncate(file.rid, 3, (err: Error | null) => { if (err !== null) reject(); else resolve(); @@ -101,6 +103,7 @@ Deno.test({ }); try { + // @ts-ignore (iuioiua) `file.rid` should no longer be needed once FDs are used ftruncateSync(file.rid); const fileInfo: Deno.FileInfo = Deno.lstatSync(filePath); assertEquals(fileInfo.size, 0); @@ -125,6 +128,7 @@ Deno.test({ }); try { + // @ts-ignore (iuioiua) `file.rid` should no longer be needed once FDs are used ftruncateSync(file.rid, 3); const fileInfo: Deno.FileInfo = Deno.lstatSync(filePath); assertEquals(fileInfo.size, 3); diff --git a/tests/unit_node/_fs/_fs_futimes_test.ts b/tests/unit_node/_fs/_fs_futimes_test.ts index 848f27cc0f..9b0c64efd6 100644 --- a/tests/unit_node/_fs/_fs_futimes_test.ts +++ b/tests/unit_node/_fs/_fs_futimes_test.ts @@ -15,6 +15,7 @@ Deno.test({ using file = await Deno.open(filePath, { create: true, write: true }); await new Promise((resolve, reject) => { + // @ts-ignore (iuioiua) `file.rid` should no longer be needed once FDs are used futimes(file.rid, randomDate, randomDate, (err: Error | null) => { if (err !== null) reject(); else resolve(); @@ -73,6 +74,7 @@ Deno.test({ using file = Deno.openSync(filePath, { create: true, write: true }); try { + // @ts-ignore (iuioiua) `file.rid` should no longer be needed once FDs are used futimesSync(file.rid, randomDate, randomDate); const fileInfo: Deno.FileInfo = Deno.lstatSync(filePath); diff --git a/tests/unit_node/_fs/_fs_writeFile_test.ts b/tests/unit_node/_fs/_fs_writeFile_test.ts index 48e1c8c874..2733a2df0b 100644 --- a/tests/unit_node/_fs/_fs_writeFile_test.ts +++ b/tests/unit_node/_fs/_fs_writeFile_test.ts @@ -119,6 +119,7 @@ Deno.test( }); await new Promise((resolve, reject) => { + // @ts-ignore (iuioiua) `file.rid` should no longer be needed once FDs are used writeFile(file.rid, "hello world", (err) => { if (err) return reject(err); resolve(); @@ -234,6 +235,7 @@ Deno.test( }); await new Promise((resolve, reject) => { + // @ts-ignore (iuioiua) `file.rid` should no longer be needed once FDs are used writeFile(file.rid, "hello world", { mode: 0o777 }, (err) => { if (err) return reject(err); resolve(); @@ -288,6 +290,7 @@ Deno.test( read: true, }); + // @ts-ignore (iuioiua) `file.rid` should no longer be needed once FDs are used writeFileSync(file.rid, "hello world"); const data = Deno.readFileSync(tempFile); diff --git a/tests/unit_node/_fs/_fs_write_test.ts b/tests/unit_node/_fs/_fs_write_test.ts index 0ade8043f0..400fce73aa 100644 --- a/tests/unit_node/_fs/_fs_write_test.ts +++ b/tests/unit_node/_fs/_fs_write_test.ts @@ -22,6 +22,7 @@ Deno.test({ }); const buffer = Buffer.from("hello world"); const bytesWrite = await new Promise((resolve, reject) => { + // @ts-ignore (iuioiua) `file.rid` should no longer be needed once FDs are used write(file.rid, buffer, 0, 5, (err: unknown, nwritten: number) => { if (err) return reject(err); resolve(nwritten); @@ -49,6 +50,7 @@ Deno.test({ read: true, }); const buffer = Buffer.from("hello world"); + // @ts-ignore (iuioiua) `file.rid` should no longer be needed once FDs are used const bytesWrite = writeSync(file.rid, buffer, 0, 5); const data = Deno.readFileSync(tempFile); @@ -75,6 +77,7 @@ Deno.test({ const str = "hello world"; const buffer = Buffer.from(str); + // @ts-ignore (iuioiua) `file.rid` should no longer be needed once FDs are used const bytesWritten = writeSync(file.rid, buffer, 0, str.length, 4); const data = Deno.readFileSync(tempFile); @@ -122,6 +125,7 @@ Deno.test({ for (let i = 0; i < bytes.length; i++) { buffer[offset + i] = i; } + // @ts-ignore (iuioiua) `file.rid` should no longer be needed once FDs are used let nWritten = writeSync(file.rid, buffer, offset, bytes.length, 0); let data = Deno.readFileSync(tempFile); @@ -131,6 +135,7 @@ Deno.test({ assertEquals(data, new Uint8Array(bytes)); nWritten = await new Promise((resolve, reject) => write( + // @ts-ignore (iuioiua) `file.rid` should no longer be needed once FDs are used file.rid, buffer, offset, diff --git a/tests/unit_node/tty_test.ts b/tests/unit_node/tty_test.ts index 76d7ddc557..df2888ddd0 100644 --- a/tests/unit_node/tty_test.ts +++ b/tests/unit_node/tty_test.ts @@ -10,9 +10,6 @@ Deno.test("[node/tty isatty] returns true when fd is a tty, false otherwise", () assert(Deno.stdin.isTerminal() === isatty((Deno as any).stdin.rid)); assert(Deno.stdout.isTerminal() === isatty((Deno as any).stdout.rid)); assert(Deno.stderr.isTerminal() === isatty((Deno as any).stderr.rid)); - - using file = Deno.openSync("README.md"); - assert(!isatty(file.rid)); }); Deno.test("[node/tty isatty] returns false for irrelevant values", () => {