From 0b0fb94ce2489da642cffd82e0498446d4a1fe1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Thu, 25 Jan 2024 23:51:29 +0100 Subject: fix(fs): instanceof check for Deno.FsFile (#22121) Regression caused by https://github.com/denoland/deno/pull/22072. I added a relevant test so we don't regress again. Fixes https://github.com/denoland/deno/issues/22115 --- ext/fs/30_fs.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'ext/fs') diff --git a/ext/fs/30_fs.js b/ext/fs/30_fs.js index f752c559a..2e7eba242 100644 --- a/ext/fs/30_fs.js +++ b/ext/fs/30_fs.js @@ -88,6 +88,7 @@ const { StringPrototypeStartsWith, SymbolAsyncIterator, SymbolIterator, + SymbolFor, Uint32Array, } = primordials; @@ -619,7 +620,7 @@ function openSync( options, ); - return new FsFile(rid); + return new FsFile(rid, SymbolFor("Deno.internal.FsFile")); } async function open( @@ -632,7 +633,7 @@ async function open( options, ); - return new FsFile(rid); + return new FsFile(rid, SymbolFor("Deno.internal.FsFile")); } function createSync(path) { @@ -659,8 +660,15 @@ class FsFile { #readable; #writable; - constructor(rid) { + constructor(rid, symbol) { this.#rid = rid; + if (!symbol || symbol !== SymbolFor("Deno.internal.FsFile")) { + internals.warnOnDeprecatedApi( + "new Deno.FsFile()", + new Error().stack, + "Use `Deno.open` or `Deno.openSync` instead.", + ); + } } get rid() { -- cgit v1.2.3