sandbox-fs 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +418 -0
  3. package/dist/FSModule.d.ts +153 -0
  4. package/dist/FSModule.d.ts.map +1 -0
  5. package/dist/FSModule.js +555 -0
  6. package/dist/FSModule.js.map +1 -0
  7. package/dist/PathMapper.d.ts +30 -0
  8. package/dist/PathMapper.d.ts.map +1 -0
  9. package/dist/PathMapper.js +122 -0
  10. package/dist/PathMapper.js.map +1 -0
  11. package/dist/PathModule.d.ts +69 -0
  12. package/dist/PathModule.d.ts.map +1 -0
  13. package/dist/PathModule.js +159 -0
  14. package/dist/PathModule.js.map +1 -0
  15. package/dist/ResourceTracker.d.ts +74 -0
  16. package/dist/ResourceTracker.d.ts.map +1 -0
  17. package/dist/ResourceTracker.js +175 -0
  18. package/dist/ResourceTracker.js.map +1 -0
  19. package/dist/VirtualFileSystem.d.ts +145 -0
  20. package/dist/VirtualFileSystem.d.ts.map +1 -0
  21. package/dist/VirtualFileSystem.js +155 -0
  22. package/dist/VirtualFileSystem.js.map +1 -0
  23. package/dist/index.d.ts +9 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +13 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/operations/newer.d.ts +36 -0
  28. package/dist/operations/newer.d.ts.map +1 -0
  29. package/dist/operations/newer.js +239 -0
  30. package/dist/operations/newer.js.map +1 -0
  31. package/dist/operations/read.d.ts +24 -0
  32. package/dist/operations/read.d.ts.map +1 -0
  33. package/dist/operations/read.js +313 -0
  34. package/dist/operations/read.js.map +1 -0
  35. package/dist/operations/symlink.d.ts +8 -0
  36. package/dist/operations/symlink.d.ts.map +1 -0
  37. package/dist/operations/symlink.js +33 -0
  38. package/dist/operations/symlink.js.map +1 -0
  39. package/dist/operations/write.d.ts +29 -0
  40. package/dist/operations/write.d.ts.map +1 -0
  41. package/dist/operations/write.js +191 -0
  42. package/dist/operations/write.js.map +1 -0
  43. package/dist/utils/ErrorFilter.d.ts +6 -0
  44. package/dist/utils/ErrorFilter.d.ts.map +1 -0
  45. package/dist/utils/ErrorFilter.js +57 -0
  46. package/dist/utils/ErrorFilter.js.map +1 -0
  47. package/dist/utils/callbackify.d.ts +9 -0
  48. package/dist/utils/callbackify.d.ts.map +1 -0
  49. package/dist/utils/callbackify.js +48 -0
  50. package/dist/utils/callbackify.js.map +1 -0
  51. package/dist/wrappers/VirtualDir.d.ts +34 -0
  52. package/dist/wrappers/VirtualDir.d.ts.map +1 -0
  53. package/dist/wrappers/VirtualDir.js +72 -0
  54. package/dist/wrappers/VirtualDir.js.map +1 -0
  55. package/dist/wrappers/VirtualDirent.d.ts +21 -0
  56. package/dist/wrappers/VirtualDirent.d.ts.map +1 -0
  57. package/dist/wrappers/VirtualDirent.js +50 -0
  58. package/dist/wrappers/VirtualDirent.js.map +1 -0
  59. package/example.js +95 -0
  60. package/example.ts +32 -0
  61. package/package.json +29 -0
  62. package/src/FSModule.ts +546 -0
  63. package/src/PathMapper.ts +102 -0
  64. package/src/PathModule.ts +142 -0
  65. package/src/ResourceTracker.ts +162 -0
  66. package/src/VirtualFileSystem.ts +172 -0
  67. package/src/index.ts +9 -0
  68. package/src/operations/newer.ts +223 -0
  69. package/src/operations/read.ts +319 -0
  70. package/src/operations/symlink.ts +31 -0
  71. package/src/operations/write.ts +189 -0
  72. package/src/utils/ErrorFilter.ts +57 -0
  73. package/src/utils/callbackify.ts +54 -0
  74. package/src/wrappers/VirtualDir.ts +84 -0
  75. package/src/wrappers/VirtualDirent.ts +60 -0
  76. package/test-data/example.txt +1 -0
  77. package/test-data/subdir/nested.txt +1 -0
  78. package/tsconfig.example.json +8 -0
  79. package/tsconfig.json +21 -0
@@ -0,0 +1,555 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.createFSModule = createFSModule;
37
+ const fs = __importStar(require("fs"));
38
+ const callbackify_1 = require("./utils/callbackify");
39
+ // Import operations
40
+ const readOps = __importStar(require("./operations/read"));
41
+ const writeOps = __importStar(require("./operations/write"));
42
+ const symlinkOps = __importStar(require("./operations/symlink"));
43
+ const newerOps = __importStar(require("./operations/newer"));
44
+ /**
45
+ * Create a Node.js fs-compatible module
46
+ */
47
+ function createFSModule(pathMapper, resourceTracker) {
48
+ // Create promise-based operations
49
+ const promiseOps = {
50
+ // Read operations
51
+ readFile: readOps.createReadFileOperation(pathMapper, resourceTracker),
52
+ readdir: readOps.createReaddirOperation(pathMapper, resourceTracker),
53
+ stat: readOps.createStatOperation(pathMapper, resourceTracker),
54
+ lstat: readOps.createLstatOperation(pathMapper, resourceTracker),
55
+ access: readOps.createAccessOperation(pathMapper, resourceTracker),
56
+ realpath: readOps.createRealpathOperation(pathMapper, resourceTracker),
57
+ open: readOps.createOpenOperation(pathMapper, resourceTracker),
58
+ read: readOps.createReadOperation(pathMapper, resourceTracker),
59
+ close: readOps.createCloseOperation(pathMapper, resourceTracker),
60
+ fstat: readOps.createFstatOperation(pathMapper, resourceTracker),
61
+ opendir: readOps.createOpendirOperation(pathMapper, resourceTracker),
62
+ exists: readOps.createExistsOperation(pathMapper, resourceTracker),
63
+ // Write operations (all denied)
64
+ writeFile: writeOps.createWriteFileOperation(),
65
+ appendFile: writeOps.createAppendFileOperation(),
66
+ mkdir: writeOps.createMkdirOperation(),
67
+ rmdir: writeOps.createRmdirOperation(),
68
+ rm: writeOps.createRmOperation(),
69
+ unlink: writeOps.createUnlinkOperation(),
70
+ rename: writeOps.createRenameOperation(),
71
+ copyFile: writeOps.createCopyFileOperation(),
72
+ truncate: writeOps.createTruncateOperation(),
73
+ ftruncate: writeOps.createFtruncateOperation(),
74
+ chmod: writeOps.createChmodOperation(),
75
+ fchmod: writeOps.createFchmodOperation(),
76
+ lchmod: writeOps.createLchmodOperation(),
77
+ chown: writeOps.createChownOperation(),
78
+ fchown: writeOps.createFchownOperation(),
79
+ lchown: writeOps.createLchownOperation(),
80
+ utimes: writeOps.createUtimesOperation(),
81
+ futimes: writeOps.createFutimesOperation(),
82
+ lutimes: writeOps.createLutimesOperation(),
83
+ write: writeOps.createWriteOperation(),
84
+ writev: writeOps.createWritevOperation(),
85
+ fsync: writeOps.createFsyncOperation(),
86
+ fdatasync: writeOps.createFdatasyncOperation(),
87
+ // Symlink operations (all denied)
88
+ symlink: symlinkOps.createSymlinkOperation(),
89
+ link: symlinkOps.createLinkOperation(),
90
+ readlink: symlinkOps.createReadlinkOperation(),
91
+ // Newer operations
92
+ glob: newerOps.createGlobOperation(pathMapper, resourceTracker),
93
+ statfs: newerOps.createStatfsOperation(pathMapper, resourceTracker),
94
+ cp: newerOps.createCpOperation(pathMapper, resourceTracker),
95
+ openAsBlob: newerOps.createOpenAsBlobOperation(pathMapper, resourceTracker),
96
+ readv: newerOps.createReadvOperation(pathMapper, resourceTracker),
97
+ };
98
+ // Create callback-based operations
99
+ const callbackOps = {
100
+ // Read operations
101
+ readFile: (0, callbackify_1.callbackify)(promiseOps.readFile),
102
+ readdir: (0, callbackify_1.callbackify)(promiseOps.readdir),
103
+ stat: (0, callbackify_1.callbackify)(promiseOps.stat),
104
+ lstat: (0, callbackify_1.callbackify)(promiseOps.lstat),
105
+ access: (0, callbackify_1.callbackifyVoid)(promiseOps.access),
106
+ realpath: (0, callbackify_1.callbackify)(promiseOps.realpath),
107
+ open: (0, callbackify_1.callbackify)(promiseOps.open),
108
+ read: (0, callbackify_1.callbackify)(promiseOps.read),
109
+ close: (0, callbackify_1.callbackifyVoid)(promiseOps.close),
110
+ fstat: (0, callbackify_1.callbackify)(promiseOps.fstat),
111
+ opendir: (0, callbackify_1.callbackify)(promiseOps.opendir),
112
+ exists: (path, callback) => {
113
+ promiseOps.exists(path).then(callback).catch(() => callback(false));
114
+ },
115
+ // Write operations (all denied)
116
+ writeFile: (0, callbackify_1.callbackifyVoid)(promiseOps.writeFile),
117
+ appendFile: (0, callbackify_1.callbackifyVoid)(promiseOps.appendFile),
118
+ mkdir: (0, callbackify_1.callbackify)(promiseOps.mkdir),
119
+ rmdir: (0, callbackify_1.callbackifyVoid)(promiseOps.rmdir),
120
+ rm: (0, callbackify_1.callbackifyVoid)(promiseOps.rm),
121
+ unlink: (0, callbackify_1.callbackifyVoid)(promiseOps.unlink),
122
+ rename: (0, callbackify_1.callbackifyVoid)(promiseOps.rename),
123
+ copyFile: (0, callbackify_1.callbackifyVoid)(promiseOps.copyFile),
124
+ truncate: (0, callbackify_1.callbackifyVoid)(promiseOps.truncate),
125
+ ftruncate: (0, callbackify_1.callbackifyVoid)(promiseOps.ftruncate),
126
+ chmod: (0, callbackify_1.callbackifyVoid)(promiseOps.chmod),
127
+ fchmod: (0, callbackify_1.callbackifyVoid)(promiseOps.fchmod),
128
+ lchmod: (0, callbackify_1.callbackifyVoid)(promiseOps.lchmod),
129
+ chown: (0, callbackify_1.callbackifyVoid)(promiseOps.chown),
130
+ fchown: (0, callbackify_1.callbackifyVoid)(promiseOps.fchown),
131
+ lchown: (0, callbackify_1.callbackifyVoid)(promiseOps.lchown),
132
+ utimes: (0, callbackify_1.callbackifyVoid)(promiseOps.utimes),
133
+ futimes: (0, callbackify_1.callbackifyVoid)(promiseOps.futimes),
134
+ lutimes: (0, callbackify_1.callbackifyVoid)(promiseOps.lutimes),
135
+ write: (0, callbackify_1.callbackify)(promiseOps.write),
136
+ writev: (0, callbackify_1.callbackify)(promiseOps.writev),
137
+ fsync: (0, callbackify_1.callbackifyVoid)(promiseOps.fsync),
138
+ fdatasync: (0, callbackify_1.callbackifyVoid)(promiseOps.fdatasync),
139
+ // Symlink operations (all denied)
140
+ symlink: (0, callbackify_1.callbackifyVoid)(promiseOps.symlink),
141
+ link: (0, callbackify_1.callbackifyVoid)(promiseOps.link),
142
+ readlink: (0, callbackify_1.callbackify)(promiseOps.readlink),
143
+ // Newer operations
144
+ statfs: (0, callbackify_1.callbackify)(promiseOps.statfs),
145
+ cp: (0, callbackify_1.callbackifyVoid)(promiseOps.cp),
146
+ openAsBlob: (0, callbackify_1.callbackify)(promiseOps.openAsBlob),
147
+ readv: (0, callbackify_1.callbackify)(promiseOps.readv),
148
+ };
149
+ // Sync operations - all throw EACCES or operate on the real filesystem
150
+ const syncOps = {
151
+ readFileSync: (path, options) => {
152
+ resourceTracker.assertNotClosed();
153
+ const realPath = pathMapper.toRealPath(path);
154
+ try {
155
+ return fs.readFileSync(realPath, options);
156
+ }
157
+ catch (error) {
158
+ throw require('./utils/ErrorFilter').filterError(error, pathMapper);
159
+ }
160
+ },
161
+ readdirSync: (path, options) => {
162
+ resourceTracker.assertNotClosed();
163
+ const realPath = pathMapper.toRealPath(path);
164
+ try {
165
+ return fs.readdirSync(realPath, options);
166
+ }
167
+ catch (error) {
168
+ throw require('./utils/ErrorFilter').filterError(error, pathMapper);
169
+ }
170
+ },
171
+ statSync: (path, options) => {
172
+ resourceTracker.assertNotClosed();
173
+ const realPath = pathMapper.toRealPath(path);
174
+ try {
175
+ const stats = fs.statSync(realPath, options);
176
+ if (stats.isSymbolicLink()) {
177
+ const err = new Error('stat: operation not permitted');
178
+ err.code = 'EACCES';
179
+ err.errno = -13;
180
+ err.syscall = 'stat';
181
+ err.path = path;
182
+ throw err;
183
+ }
184
+ return stats;
185
+ }
186
+ catch (error) {
187
+ throw require('./utils/ErrorFilter').filterError(error, pathMapper);
188
+ }
189
+ },
190
+ lstatSync: (path, options) => {
191
+ resourceTracker.assertNotClosed();
192
+ const realPath = pathMapper.toRealPath(path);
193
+ try {
194
+ const stats = fs.lstatSync(realPath, options);
195
+ if (stats.isSymbolicLink()) {
196
+ const err = new Error('lstat: operation not permitted');
197
+ err.code = 'EACCES';
198
+ err.errno = -13;
199
+ err.syscall = 'lstat';
200
+ err.path = path;
201
+ throw err;
202
+ }
203
+ return stats;
204
+ }
205
+ catch (error) {
206
+ throw require('./utils/ErrorFilter').filterError(error, pathMapper);
207
+ }
208
+ },
209
+ accessSync: (path, mode) => {
210
+ resourceTracker.assertNotClosed();
211
+ const realPath = pathMapper.toRealPath(path);
212
+ try {
213
+ return fs.accessSync(realPath, mode);
214
+ }
215
+ catch (error) {
216
+ throw require('./utils/ErrorFilter').filterError(error, pathMapper);
217
+ }
218
+ },
219
+ realpathSync: (path, options) => {
220
+ resourceTracker.assertNotClosed();
221
+ const realPath = pathMapper.toRealPath(path);
222
+ try {
223
+ const resolved = fs.realpathSync(realPath, options);
224
+ const resolvedStr = Buffer.isBuffer(resolved) ? resolved.toString() : resolved;
225
+ return pathMapper.toVirtualPath(resolvedStr);
226
+ }
227
+ catch (error) {
228
+ throw require('./utils/ErrorFilter').filterError(error, pathMapper);
229
+ }
230
+ },
231
+ openSync: (path, flags, mode) => {
232
+ resourceTracker.assertNotClosed();
233
+ const flagsStr = typeof flags === 'number' ? flags.toString() : (flags || 'r');
234
+ const isWriteMode = /w|a|\+/.test(flagsStr.toString());
235
+ if (isWriteMode) {
236
+ const err = new Error('open: operation not permitted');
237
+ err.code = 'EACCES';
238
+ err.errno = -13;
239
+ err.syscall = 'open';
240
+ err.path = path;
241
+ throw err;
242
+ }
243
+ const realPath = pathMapper.toRealPath(path);
244
+ try {
245
+ const fd = fs.openSync(realPath, (flags || 'r'), mode);
246
+ resourceTracker.trackFD(fd, {
247
+ virtualPath: path,
248
+ realPath,
249
+ flags: flags || 'r',
250
+ mode,
251
+ isStream: false,
252
+ });
253
+ return fd;
254
+ }
255
+ catch (error) {
256
+ throw require('./utils/ErrorFilter').filterError(error, pathMapper);
257
+ }
258
+ },
259
+ readSync: (fd, buffer, offset, length, position) => {
260
+ resourceTracker.assertNotClosed();
261
+ if (!resourceTracker.isTracked(fd)) {
262
+ const err = new Error('bad file descriptor');
263
+ err.code = 'EBADF';
264
+ err.errno = -9;
265
+ err.syscall = 'read';
266
+ throw err;
267
+ }
268
+ return fs.readSync(fd, buffer, offset, length, position);
269
+ },
270
+ closeSync: (fd) => {
271
+ resourceTracker.assertNotClosed();
272
+ resourceTracker.untrackFD(fd);
273
+ return fs.closeSync(fd);
274
+ },
275
+ fstatSync: (fd, options) => {
276
+ resourceTracker.assertNotClosed();
277
+ if (!resourceTracker.isTracked(fd)) {
278
+ const err = new Error('bad file descriptor');
279
+ err.code = 'EBADF';
280
+ err.errno = -9;
281
+ err.syscall = 'fstat';
282
+ throw err;
283
+ }
284
+ return fs.fstatSync(fd, options);
285
+ },
286
+ opendirSync: (path, options) => {
287
+ resourceTracker.assertNotClosed();
288
+ const realPath = pathMapper.toRealPath(path);
289
+ try {
290
+ const realDir = fs.opendirSync(realPath, options);
291
+ return new (require('./wrappers/VirtualDir').VirtualDir)(realDir, path, pathMapper);
292
+ }
293
+ catch (error) {
294
+ throw require('./utils/ErrorFilter').filterError(error, pathMapper);
295
+ }
296
+ },
297
+ existsSync: (path) => {
298
+ if (resourceTracker.closed)
299
+ return false;
300
+ try {
301
+ const realPath = pathMapper.toRealPath(path);
302
+ return fs.existsSync(realPath);
303
+ }
304
+ catch {
305
+ return false;
306
+ }
307
+ },
308
+ // Write operations - all throw EACCES
309
+ writeFileSync: (path) => {
310
+ const err = new Error('open: operation not permitted');
311
+ err.code = 'EACCES';
312
+ err.syscall = 'open';
313
+ err.path = path;
314
+ throw err;
315
+ },
316
+ appendFileSync: (path) => {
317
+ const err = new Error('open: operation not permitted');
318
+ err.code = 'EACCES';
319
+ err.syscall = 'open';
320
+ err.path = path;
321
+ throw err;
322
+ },
323
+ mkdirSync: (path) => {
324
+ const err = new Error('mkdir: operation not permitted');
325
+ err.code = 'EACCES';
326
+ err.syscall = 'mkdir';
327
+ err.path = path;
328
+ throw err;
329
+ },
330
+ rmdirSync: (path) => {
331
+ const err = new Error('rmdir: operation not permitted');
332
+ err.code = 'EACCES';
333
+ err.syscall = 'rmdir';
334
+ err.path = path;
335
+ throw err;
336
+ },
337
+ rmSync: (path) => {
338
+ const err = new Error('rm: operation not permitted');
339
+ err.code = 'EACCES';
340
+ err.syscall = 'rm';
341
+ err.path = path;
342
+ throw err;
343
+ },
344
+ unlinkSync: (path) => {
345
+ const err = new Error('unlink: operation not permitted');
346
+ err.code = 'EACCES';
347
+ err.syscall = 'unlink';
348
+ err.path = path;
349
+ throw err;
350
+ },
351
+ renameSync: (oldPath) => {
352
+ const err = new Error('rename: operation not permitted');
353
+ err.code = 'EACCES';
354
+ err.syscall = 'rename';
355
+ err.path = oldPath;
356
+ throw err;
357
+ },
358
+ copyFileSync: (src, dest) => {
359
+ const err = new Error('copyfile: operation not permitted');
360
+ err.code = 'EACCES';
361
+ err.syscall = 'copyfile';
362
+ err.path = dest;
363
+ throw err;
364
+ },
365
+ truncateSync: (path) => {
366
+ const err = new Error('open: operation not permitted');
367
+ err.code = 'EACCES';
368
+ err.syscall = 'open';
369
+ err.path = path;
370
+ throw err;
371
+ },
372
+ ftruncateSync: (fd) => {
373
+ const err = new Error('ftruncate: operation not permitted');
374
+ err.code = 'EACCES';
375
+ err.syscall = 'ftruncate';
376
+ throw err;
377
+ },
378
+ chmodSync: (path) => {
379
+ const err = new Error('chmod: operation not permitted');
380
+ err.code = 'EACCES';
381
+ err.syscall = 'chmod';
382
+ err.path = path;
383
+ throw err;
384
+ },
385
+ fchmodSync: (fd) => {
386
+ const err = new Error('fchmod: operation not permitted');
387
+ err.code = 'EACCES';
388
+ err.syscall = 'fchmod';
389
+ throw err;
390
+ },
391
+ lchmodSync: (path) => {
392
+ const err = new Error('lchmod: operation not permitted');
393
+ err.code = 'EACCES';
394
+ err.syscall = 'lchmod';
395
+ err.path = path;
396
+ throw err;
397
+ },
398
+ chownSync: (path) => {
399
+ const err = new Error('chown: operation not permitted');
400
+ err.code = 'EACCES';
401
+ err.syscall = 'chown';
402
+ err.path = path;
403
+ throw err;
404
+ },
405
+ fchownSync: (fd) => {
406
+ const err = new Error('fchown: operation not permitted');
407
+ err.code = 'EACCES';
408
+ err.syscall = 'fchown';
409
+ throw err;
410
+ },
411
+ lchownSync: (path) => {
412
+ const err = new Error('lchown: operation not permitted');
413
+ err.code = 'EACCES';
414
+ err.syscall = 'lchown';
415
+ err.path = path;
416
+ throw err;
417
+ },
418
+ utimesSync: (path) => {
419
+ const err = new Error('utime: operation not permitted');
420
+ err.code = 'EACCES';
421
+ err.syscall = 'utime';
422
+ err.path = path;
423
+ throw err;
424
+ },
425
+ futimesSync: (fd) => {
426
+ const err = new Error('futime: operation not permitted');
427
+ err.code = 'EACCES';
428
+ err.syscall = 'futime';
429
+ throw err;
430
+ },
431
+ lutimesSync: (path) => {
432
+ const err = new Error('lutime: operation not permitted');
433
+ err.code = 'EACCES';
434
+ err.syscall = 'lutime';
435
+ err.path = path;
436
+ throw err;
437
+ },
438
+ writeSync: (fd) => {
439
+ const err = new Error('write: operation not permitted');
440
+ err.code = 'EACCES';
441
+ err.syscall = 'write';
442
+ throw err;
443
+ },
444
+ writevSync: (fd) => {
445
+ const err = new Error('writev: operation not permitted');
446
+ err.code = 'EACCES';
447
+ err.syscall = 'writev';
448
+ throw err;
449
+ },
450
+ fsyncSync: (fd) => {
451
+ const err = new Error('fsync: operation not permitted');
452
+ err.code = 'EACCES';
453
+ err.syscall = 'fsync';
454
+ throw err;
455
+ },
456
+ fdatasyncSync: (fd) => {
457
+ const err = new Error('fdatasync: operation not permitted');
458
+ err.code = 'EACCES';
459
+ err.syscall = 'fdatasync';
460
+ throw err;
461
+ },
462
+ // Symlink operations - all throw EACCES
463
+ symlinkSync: (target, path) => {
464
+ const err = new Error('symlink: operation not permitted');
465
+ err.code = 'EACCES';
466
+ err.syscall = 'symlink';
467
+ err.path = path;
468
+ throw err;
469
+ },
470
+ linkSync: (existingPath, newPath) => {
471
+ const err = new Error('link: operation not permitted');
472
+ err.code = 'EACCES';
473
+ err.syscall = 'link';
474
+ err.path = newPath;
475
+ throw err;
476
+ },
477
+ readlinkSync: (path) => {
478
+ const err = new Error('readlink: operation not permitted');
479
+ err.code = 'EACCES';
480
+ err.syscall = 'readlink';
481
+ err.path = path;
482
+ throw err;
483
+ },
484
+ // Newer operations
485
+ cpSync: (source, destination) => {
486
+ const err = new Error('cp: operation not permitted');
487
+ err.code = 'EACCES';
488
+ err.syscall = 'cp';
489
+ err.path = destination;
490
+ throw err;
491
+ },
492
+ statfsSync: (path, options) => {
493
+ resourceTracker.assertNotClosed();
494
+ if (typeof fs.statfsSync !== 'function') {
495
+ throw new Error('statfsSync is not supported in this Node.js version');
496
+ }
497
+ const realPath = pathMapper.toRealPath(path);
498
+ try {
499
+ return fs.statfsSync(realPath, options);
500
+ }
501
+ catch (error) {
502
+ throw require('./utils/ErrorFilter').filterError(error, pathMapper);
503
+ }
504
+ },
505
+ readvSync: (fd, buffers, position) => {
506
+ resourceTracker.assertNotClosed();
507
+ if (!resourceTracker.isTracked(fd)) {
508
+ const err = new Error('bad file descriptor');
509
+ err.code = 'EBADF';
510
+ err.errno = -9;
511
+ err.syscall = 'readv';
512
+ throw err;
513
+ }
514
+ if (typeof fs.readvSync !== 'function') {
515
+ throw new Error('readvSync is not supported in this Node.js version');
516
+ }
517
+ return fs.readvSync(fd, buffers, position);
518
+ },
519
+ };
520
+ // Stream operations
521
+ const streamOps = {
522
+ createReadStream: readOps.createCreateReadStreamOperation(pathMapper, resourceTracker),
523
+ createWriteStream: writeOps.createCreateWriteStreamOperation(),
524
+ };
525
+ // Watch operations
526
+ const watchOps = {
527
+ watch: newerOps.createWatchOperation(pathMapper, resourceTracker),
528
+ watchFile: newerOps.createWatchFileOperation(pathMapper, resourceTracker),
529
+ unwatchFile: newerOps.createUnwatchFileOperation(pathMapper, resourceTracker),
530
+ };
531
+ // Combine all operations
532
+ return {
533
+ // Callback-based operations
534
+ ...callbackOps,
535
+ // Sync operations
536
+ ...syncOps,
537
+ // Stream operations
538
+ ...streamOps,
539
+ // Watch operations
540
+ ...watchOps,
541
+ // Promise-based API
542
+ promises: {
543
+ ...promiseOps,
544
+ // Note: glob is already an async generator, so it's included as-is
545
+ },
546
+ // Constants
547
+ constants: fs.constants,
548
+ // Classes
549
+ Stats: fs.Stats,
550
+ Dirent: fs.Dirent,
551
+ ReadStream: fs.ReadStream,
552
+ WriteStream: fs.WriteStream,
553
+ };
554
+ }
555
+ //# sourceMappingURL=FSModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FSModule.js","sourceRoot":"","sources":["../src/FSModule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Handles conversion between virtual Unix-style paths and real platform-native paths
3
+ */
4
+ export declare class PathMapper {
5
+ private readonly normalizedRoot;
6
+ constructor(rootPath: string);
7
+ /**
8
+ * Get the normalized root path
9
+ */
10
+ getRoot(): string;
11
+ /**
12
+ * Convert a virtual path (Unix-style with forward slashes) to a real platform-native path
13
+ * @param virtualPath - Virtual path starting with /
14
+ * @returns Real absolute path
15
+ * @throws Error if path traversal is detected
16
+ */
17
+ toRealPath(virtualPath: string): string;
18
+ /**
19
+ * Convert a real platform-native path to a virtual Unix-style path
20
+ * @param realPath - Real absolute path
21
+ * @returns Virtual path starting with /
22
+ * @throws Error if real path is not within VFS root
23
+ */
24
+ toVirtualPath(realPath: string): string;
25
+ /**
26
+ * Check if a real path is within the VFS root
27
+ */
28
+ isWithinRoot(realPath: string): boolean;
29
+ }
30
+ //# sourceMappingURL=PathMapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PathMapper.d.ts","sourceRoot":"","sources":["../src/PathMapper.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;gBAE5B,QAAQ,EAAE,MAAM;IAgB5B;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;;;;OAKG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IA2BvC;;;;;OAKG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAkBvC;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CASxC"}