Skip to content

Commit 75b79e4

Browse files
committed
Implemented FileHandle.isFileHandle() with cross-context compatibility using private symbols instead of instanceof
1 parent cdfe09b commit 75b79e4

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

lib/internal/fs/promises.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ class FileHandle extends EventEmitter {
168168
* @returns {boolean}
169169
*/
170170
static isFileHandle(value) {
171-
return value instanceof FileHandle;
171+
return value?.[kHandle] !== undefined;
172172
}
173173

174174
getAsyncId() {

test/parallel/test-fs-filehandle-accessibility.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,11 @@ async function testIsFileHandleMethod() {
4242
await fileHandle.close();
4343
}
4444

45-
// Test 6: Test instanceof check
45+
// Test 6: Test that FileHandle instances are recognized by isFileHandle
4646
const fileHandle2 = await fsPromises.open(testFilePath, 'r');
4747
try {
48-
assert(fileHandle2 instanceof fs.FileHandle, 'fileHandle should be instance of FileHandle');
49-
assert(fileHandle2 instanceof fsPromises.FileHandle, 'fileHandle should be instance of fs.promises.FileHandle');
48+
assert.strictEqual(fs.FileHandle.isFileHandle(fileHandle2), true);
49+
assert.strictEqual(fsPromises.FileHandle.isFileHandle(fileHandle2), true);
5050
} finally {
5151
await fileHandle2.close();
5252
}

0 commit comments

Comments
 (0)