Skip to content

Commit 6368d58

Browse files
committed
vfs: fix lint errors
Fixes the JS lint warnings on the VFS subsystem and tests: primordial alphabetical ordering, em-dash → hyphen, error-codes multiline destructuring, removal of unused JSDoc @returns, and the test-side mustSucceed / async-iife-no-unused-result rules. Assisted-by: Claude-Opus4.7
1 parent 99b10f8 commit 6368d58

29 files changed

Lines changed: 124 additions & 155 deletions

lib/internal/vfs/dir.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
'use strict';
22

33
const {
4-
SymbolAsyncIterator,
54
SymbolAsyncDispose,
5+
SymbolAsyncIterator,
66
SymbolDispose,
77
} = primordials;
88

lib/internal/vfs/file_handle.js

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -236,31 +236,31 @@ class VirtualFileHandle {
236236
}
237237

238238
/**
239-
* No-op chmod VFS files don't have real permissions.
239+
* No-op chmod - VFS files don't have real permissions.
240240
* @returns {Promise<void>}
241241
*/
242242
async chmod() {}
243243

244244
/**
245-
* No-op chown VFS files don't have real ownership.
245+
* No-op chown - VFS files don't have real ownership.
246246
* @returns {Promise<void>}
247247
*/
248248
async chown() {}
249249

250250
/**
251-
* No-op utimes timestamps are handled by the provider.
251+
* No-op utimes - timestamps are handled by the provider.
252252
* @returns {Promise<void>}
253253
*/
254254
async utimes() {}
255255

256256
/**
257-
* No-op datasync VFS is in-memory.
257+
* No-op datasync - VFS is in-memory.
258258
* @returns {Promise<void>}
259259
*/
260260
async datasync() {}
261261

262262
/**
263-
* No-op sync VFS is in-memory.
263+
* No-op sync - VFS is in-memory.
264264
* @returns {Promise<void>}
265265
*/
266266
async sync() {}
@@ -316,30 +316,18 @@ class VirtualFileHandle {
316316
await this.write(buffer, 0, buffer.length, null);
317317
}
318318

319-
/**
320-
* @returns {Promise<ReadableStream>}
321-
*/
322319
readableWebStream() {
323320
throw new ERR_METHOD_NOT_IMPLEMENTED('readableWebStream');
324321
}
325322

326-
/**
327-
* @returns {AsyncIterable}
328-
*/
329323
readLines() {
330324
throw new ERR_METHOD_NOT_IMPLEMENTED('readLines');
331325
}
332326

333-
/**
334-
* @returns {ReadStream}
335-
*/
336327
createReadStream() {
337328
throw new ERR_METHOD_NOT_IMPLEMENTED('createReadStream');
338329
}
339330

340-
/**
341-
* @returns {WriteStream}
342-
*/
343331
createWriteStream() {
344332
throw new ERR_METHOD_NOT_IMPLEMENTED('createWriteStream');
345333
}

lib/internal/vfs/file_system.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class VirtualFileSystem {
3636
/**
3737
* @param {VirtualProvider|object} [providerOrOptions] The provider to use, or options
3838
* @param {object} [options] Configuration options
39-
* @param {boolean} [options.emitExperimentalWarning] Whether to emit the public VFS experimental warning (default: true)
39+
* @param {boolean} [options.emitExperimentalWarning] Emit the experimental warning (default: true)
4040
*/
4141
constructor(providerOrOptions, options = kEmptyObject) {
4242

lib/internal/vfs/providers/real.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,7 @@ class RealFSProvider extends VirtualProvider {
420420
if (StringPrototypeStartsWith(resolved, rootWithSep)) {
421421
return '/' + resolved.slice(rootWithSep.length).replace(/\\/g, '/');
422422
}
423-
// Path escaped root via symlink deny access
423+
// Path escaped root via symlink - deny access
424424
throw createEACCES('realpath', vfsPath);
425425
}
426426

@@ -435,7 +435,7 @@ class RealFSProvider extends VirtualProvider {
435435
if (StringPrototypeStartsWith(resolved, rootWithSep)) {
436436
return '/' + resolved.slice(rootWithSep.length).replace(/\\/g, '/');
437437
}
438-
// Path escaped root via symlink deny access
438+
// Path escaped root via symlink - deny access
439439
throw createEACCES('realpath', vfsPath);
440440
}
441441

lib/internal/vfs/streams.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ const { createEBADF } = require('internal/vfs/errors');
1010
const { getLazy, kEmptyObject } = require('internal/util');
1111
const { validateInteger } = require('internal/validators');
1212
const {
13-
codes: { ERR_OUT_OF_RANGE },
13+
codes: {
14+
ERR_OUT_OF_RANGE,
15+
},
1416
} = require('internal/errors');
1517

1618
// Lazy-load fd module to avoid circular dependency

lib/internal/vfs/watcher.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -587,7 +587,7 @@ class VFSWatchAsyncIterable {
587587
* @param {object} [options] Options
588588
*/
589589
constructor(provider, path, options = {}) {
590-
// Strip signal from options passed to VFSWatcher we handle abort
590+
// Strip signal from options passed to VFSWatcher - we handle abort
591591
// at the iterable level to reject pending next() with AbortError
592592
// instead of resolving with done:true via the 'close' event.
593593
const signal = options.signal;
@@ -615,7 +615,7 @@ class VFSWatchAsyncIterable {
615615
}
616616
});
617617

618-
// Handle abort signal reject pending next() with AbortError
618+
// Handle abort signal - reject pending next() with AbortError
619619
if (signal) {
620620
const onAbort = () => {
621621
this.#closed = true;

test/parallel/test-vfs-access-modes.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,5 @@ assert.rejects(myVfs.promises.access('/no-x.txt', X_OK),
3737
// F_OK (mode 0) is an existence-only check and does not require permission
3838
myVfs.accessSync('/no-r.txt', 0);
3939

40-
// mode passed as null also exits early (existence-only)
40+
// Mode passed as null also exits early (existence-only)
4141
myVfs.accessSync('/no-r.txt', null);

test/parallel/test-vfs-callback-api.js

Lines changed: 30 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -13,116 +13,93 @@ myVfs.writeFileSync('/dir/file.txt', 'hello');
1313
myVfs.writeFileSync('/dir/other.txt', 'other');
1414

1515
// readFile (no options)
16-
myVfs.readFile('/dir/file.txt', common.mustCall((err, data) => {
17-
assert.ifError(err);
16+
myVfs.readFile('/dir/file.txt', common.mustSucceed((data) => {
1817
assert.ok(Buffer.isBuffer(data));
1918
}));
2019

2120
// writeFile + appendFile (no options) -> readFile
22-
myVfs.writeFile('/cb-write.txt', 'a', common.mustCall((err) => {
23-
assert.ifError(err);
24-
myVfs.readFile('/cb-write.txt', 'utf8', common.mustCall((err2, data) => {
25-
assert.ifError(err2);
21+
myVfs.writeFile('/cb-write.txt', 'a', common.mustSucceed(() => {
22+
myVfs.readFile('/cb-write.txt', 'utf8', common.mustSucceed((data) => {
2623
assert.strictEqual(data, 'a');
2724
}));
2825
}));
2926

3027
// stat / lstat (with and without options)
31-
myVfs.stat('/dir/file.txt', common.mustCall((err, st) => {
32-
assert.ifError(err);
28+
myVfs.stat('/dir/file.txt', common.mustSucceed((st) => {
3329
assert.strictEqual(st.size, 5);
3430
}));
35-
myVfs.stat('/dir/file.txt', { bigint: true }, common.mustCall((err, st) => {
36-
assert.ifError(err);
31+
myVfs.stat('/dir/file.txt', { bigint: true }, common.mustSucceed((st) => {
3732
assert.strictEqual(typeof st.size, 'bigint');
3833
}));
39-
myVfs.lstat('/dir/file.txt', common.mustCall((err, st) => {
40-
assert.ifError(err);
34+
myVfs.lstat('/dir/file.txt', common.mustSucceed((st) => {
4135
assert.ok(st.isFile());
4236
}));
4337

4438
// readdir
45-
myVfs.readdir('/dir', common.mustCall((err, names) => {
46-
assert.ifError(err);
39+
myVfs.readdir('/dir', common.mustSucceed((names) => {
4740
assert.ok(names.includes('file.txt'));
4841
}));
4942

5043
// realpath
51-
myVfs.realpath('/dir/file.txt', common.mustCall((err, p) => {
52-
assert.ifError(err);
44+
myVfs.realpath('/dir/file.txt', common.mustSucceed((p) => {
5345
assert.strictEqual(p, '/dir/file.txt');
5446
}));
5547

5648
// access (with and without mode)
57-
myVfs.access('/dir/file.txt', common.mustCall((err) => {
58-
assert.ifError(err);
59-
}));
60-
myVfs.access('/dir/file.txt', 0, common.mustCall((err) => {
61-
assert.ifError(err);
62-
}));
49+
myVfs.access('/dir/file.txt', common.mustSucceed());
50+
myVfs.access('/dir/file.txt', 0, common.mustSucceed());
6351
myVfs.access('/missing.txt', common.mustCall((err) => {
6452
assert.strictEqual(err.code, 'ENOENT');
6553
}));
6654

6755
// open / read / write / close cb chain
68-
myVfs.open('/dir/file.txt', common.mustCall((err, fd) => {
69-
assert.ifError(err);
56+
myVfs.open('/dir/file.txt', common.mustSucceed((fd) => {
7057
const buf = Buffer.alloc(5);
71-
myVfs.read(fd, buf, 0, 5, 0, common.mustCall((err2, bytesRead) => {
72-
assert.ifError(err2);
58+
myVfs.read(fd, buf, 0, 5, 0, common.mustSucceed((bytesRead) => {
7359
assert.strictEqual(bytesRead, 5);
7460
assert.strictEqual(buf.toString(), 'hello');
75-
myVfs.close(fd, common.mustCall((err3) => assert.ifError(err3)));
61+
myVfs.close(fd, common.mustSucceed());
7662
}));
7763
}));
7864

79-
// open with explicit flags / mode
80-
myVfs.open('/dir/new1.txt', 'w', common.mustCall((err, fd) => {
81-
assert.ifError(err);
65+
// Open with explicit flags / mode
66+
myVfs.open('/dir/new1.txt', 'w', common.mustSucceed((fd) => {
8267
const buf = Buffer.from('xyz');
83-
myVfs.write(fd, buf, 0, 3, 0, common.mustCall((err2, bytesWritten) => {
84-
assert.ifError(err2);
68+
myVfs.write(fd, buf, 0, 3, 0, common.mustSucceed((bytesWritten) => {
8569
assert.strictEqual(bytesWritten, 3);
86-
myVfs.fstat(fd, common.mustCall((err3, st) => {
87-
assert.ifError(err3);
70+
myVfs.fstat(fd, common.mustSucceed((st) => {
8871
assert.strictEqual(st.size, 3);
89-
myVfs.ftruncate(fd, 1, common.mustCall((err5) => {
90-
assert.ifError(err5);
72+
myVfs.ftruncate(fd, 1, common.mustSucceed(() => {
9173
myVfs.close(fd, common.mustCall());
9274
}));
9375
}));
9476
}));
9577
}));
9678

97-
// open with explicit flags, no mode arg form
98-
myVfs.open('/dir/new2.txt', 'w', 0o644, common.mustCall((err, fd) => {
99-
assert.ifError(err);
79+
// Open with explicit flags, no mode arg form
80+
myVfs.open('/dir/new2.txt', 'w', 0o644, common.mustSucceed((fd) => {
10081
myVfs.close(fd, common.mustCall());
10182
}));
10283

10384
// rm callback (file)
10485
myVfs.writeFileSync('/cb-rm.txt', 'x');
105-
myVfs.rm('/cb-rm.txt', common.mustCall((err) => {
106-
assert.ifError(err);
86+
myVfs.rm('/cb-rm.txt', common.mustSucceed(() => {
10787
assert.strictEqual(myVfs.existsSync('/cb-rm.txt'), false);
10888
}));
10989

110-
// rm callback with options (recursive)
90+
// Rm callback with options (recursive)
11191
myVfs.mkdirSync('/cb-rm-dir/sub', { recursive: true });
11292
myVfs.writeFileSync('/cb-rm-dir/sub/f.txt', 'x');
113-
myVfs.rm('/cb-rm-dir', { recursive: true }, common.mustCall((err) => {
114-
assert.ifError(err);
115-
}));
93+
myVfs.rm('/cb-rm-dir', { recursive: true }, common.mustSucceed());
11694

117-
// rm callback failure path
95+
// Rm callback failure path
11896
myVfs.rm('/missing-rm', common.mustCall((err) => {
11997
assert.strictEqual(err.code, 'ENOENT');
12098
}));
12199

122100
// truncate / ftruncate cb
123101
myVfs.writeFileSync('/cb-tr.txt', 'abcdef');
124-
myVfs.truncate('/cb-tr.txt', 3, common.mustCall((err) => {
125-
assert.ifError(err);
102+
myVfs.truncate('/cb-tr.txt', 3, common.mustSucceed(() => {
126103
assert.strictEqual(myVfs.readFileSync('/cb-tr.txt', 'utf8'), 'abc');
127104
}));
128105
myVfs.truncate('/missing-tr.txt', common.mustCall((err) => {
@@ -134,26 +111,21 @@ myVfs.ftruncate(0xFFFFFFF /* invalid fd */, common.mustCall((err) => {
134111

135112
// link cb
136113
myVfs.writeFileSync('/cb-link-src.txt', 'x');
137-
myVfs.link('/cb-link-src.txt', '/cb-link-dst.txt', common.mustCall((err) => {
138-
assert.ifError(err);
139-
}));
114+
myVfs.link('/cb-link-src.txt', '/cb-link-dst.txt', common.mustSucceed());
140115
myVfs.link('/missing-src.txt', '/cb-bad-link.txt', common.mustCall((err) => {
141116
assert.ok(err);
142117
}));
143118

144119
// mkdtemp cb
145-
myVfs.mkdtemp('/tmp-', common.mustCall((err, p) => {
146-
assert.ifError(err);
120+
myVfs.mkdtemp('/tmp-', common.mustSucceed((p) => {
147121
assert.ok(p.startsWith('/tmp-'));
148122
}));
149-
myVfs.mkdtemp('/tmp-', {}, common.mustCall((err, p) => {
150-
assert.ifError(err);
123+
myVfs.mkdtemp('/tmp-', {}, common.mustSucceed((p) => {
151124
assert.ok(p.startsWith('/tmp-'));
152125
}));
153126

154127
// opendir cb
155-
myVfs.opendir('/dir', common.mustCall((err, dir) => {
156-
assert.ifError(err);
128+
myVfs.opendir('/dir', common.mustSucceed((dir) => {
157129
assert.strictEqual(dir.path, '/dir');
158130
dir.closeSync();
159131
}));
@@ -177,7 +149,6 @@ myVfs.fstat(0xFFFFFFF, common.mustCall((err) => {
177149

178150
// readlink cb
179151
myVfs.symlinkSync('/dir/file.txt', '/cb-link');
180-
myVfs.readlink('/cb-link', common.mustCall((err, target) => {
181-
assert.ifError(err);
152+
myVfs.readlink('/cb-link', common.mustSucceed((target) => {
182153
assert.strictEqual(target, '/dir/file.txt');
183154
}));

test/parallel/test-vfs-copyfile-mode.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
// - COPYFILE_EXCL throws when destination exists
66
// - Without COPYFILE_EXCL, copy overwrites destination
77

8-
require('../common');
8+
const common = require('../common');
99
const assert = require('assert');
1010
const fs = require('fs');
1111
const vfs = require('node:vfs');
@@ -49,4 +49,4 @@ const { COPYFILE_EXCL } = fs.constants;
4949

5050
await myVfs.promises.copyFile('/src.txt', '/dst.txt');
5151
assert.strictEqual(myVfs.readFileSync('/dst.txt', 'utf8'), 's');
52-
})();
52+
})().then(common.mustCall());

0 commit comments

Comments
 (0)