@ostro/filesystem 1.0.4 → 2.0.0-alpha.2

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 (66) hide show
  1. package/adapter/CoreAdapter.js +164 -57
  2. package/adapter/CoreAdapter.js.map +1 -0
  3. package/adapter/azure.js +93 -56
  4. package/adapter/azure.js.map +1 -0
  5. package/adapter/local.js +136 -66
  6. package/adapter/local.js.map +1 -0
  7. package/adapter/s3.js +102 -70
  8. package/adapter/s3.js.map +1 -0
  9. package/callbackHandler.js +93 -23
  10. package/callbackHandler.js.map +1 -0
  11. package/clients/azure.js +43 -13
  12. package/clients/azure.js.map +1 -0
  13. package/clients/s3.js +40 -9
  14. package/clients/s3.js.map +1 -0
  15. package/directoryCreateException.js +27 -5
  16. package/directoryCreateException.js.map +1 -0
  17. package/fileDeleteException.js +28 -4
  18. package/fileDeleteException.js.map +1 -0
  19. package/fileNotFoundException.js +27 -5
  20. package/fileNotFoundException.js.map +1 -0
  21. package/fileUploadException.js +28 -5
  22. package/fileUploadException.js.map +1 -0
  23. package/filesystem.js +388 -193
  24. package/filesystem.js.map +1 -0
  25. package/filesystemAdapter.js +134 -52
  26. package/filesystemAdapter.js.map +1 -0
  27. package/filesystemManager.js +140 -57
  28. package/filesystemManager.js.map +1 -0
  29. package/filesystemServiceProvider.js +49 -21
  30. package/filesystemServiceProvider.js.map +1 -0
  31. package/invalidArgumentException.js +26 -4
  32. package/invalidArgumentException.js.map +1 -0
  33. package/package.json +24 -10
  34. package/types/adapter/CoreAdapter.d.ts +139 -0
  35. package/types/adapter/CoreAdapter.d.ts.map +1 -0
  36. package/types/adapter/azure.d.ts +36 -0
  37. package/types/adapter/azure.d.ts.map +1 -0
  38. package/types/adapter/local.d.ts +78 -0
  39. package/types/adapter/local.d.ts.map +1 -0
  40. package/types/adapter/s3.d.ts +36 -0
  41. package/types/adapter/s3.d.ts.map +1 -0
  42. package/types/callbackHandler.d.ts +69 -0
  43. package/types/callbackHandler.d.ts.map +1 -0
  44. package/types/clients/azure.d.ts +32 -0
  45. package/types/clients/azure.d.ts.map +1 -0
  46. package/types/clients/s3.d.ts +27 -0
  47. package/types/clients/s3.d.ts.map +1 -0
  48. package/types/directoryCreateException.d.ts +18 -0
  49. package/types/directoryCreateException.d.ts.map +1 -0
  50. package/types/fileDeleteException.d.ts +19 -0
  51. package/types/fileDeleteException.d.ts.map +1 -0
  52. package/types/fileNotFoundException.d.ts +18 -0
  53. package/types/fileNotFoundException.d.ts.map +1 -0
  54. package/types/fileUploadException.d.ts +18 -0
  55. package/types/fileUploadException.d.ts.map +1 -0
  56. package/types/filesystem.d.ts +300 -0
  57. package/types/filesystem.d.ts.map +1 -0
  58. package/types/filesystemAdapter.d.ts +91 -0
  59. package/types/filesystemAdapter.d.ts.map +1 -0
  60. package/types/filesystemManager.d.ts +93 -0
  61. package/types/filesystemManager.d.ts.map +1 -0
  62. package/types/filesystemServiceProvider.d.ts +40 -0
  63. package/types/filesystemServiceProvider.d.ts.map +1 -0
  64. package/types/invalidArgumentException.d.ts +17 -0
  65. package/types/invalidArgumentException.d.ts.map +1 -0
  66. package/.github/workflows/npm-publish.yml +0 -22
package/filesystem.js CHANGED
@@ -1,279 +1,474 @@
1
- const FilesystemContract = require('@ostro/contracts/filesystem/filesystem')
2
- const fs = require('fs-extra')
3
- const Finder = require('filehound')
4
- const path = require('path')
5
- const FileNotFoundException = require('./fileNotFoundException')
6
- const FileDeleteException = require('./fileDeleteException')
7
- const FileUploadException = require('./fileUploadException')
8
- const DirectoryCreateException = require('./directoryCreateException')
9
- class Filesystem extends FilesystemContract {
10
-
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const filesystem_1 = __importDefault(require("@ostro/contracts/filesystem/filesystem"));
7
+ const fs_extra_1 = __importDefault(require("fs-extra"));
8
+ const Finder = require('filehound');
9
+ const path_1 = __importDefault(require("path"));
10
+ const fileNotFoundException_1 = __importDefault(require("./fileNotFoundException"));
11
+ /**
12
+ * Class Filesystem.
13
+ */
14
+ class Filesystem extends filesystem_1.default {
15
+ /**
16
+ * exists method.
17
+ *
18
+ * @param $path - File path to check.
19
+ * @returns Promise resolving to boolean.
20
+ */
11
21
  exists($path) {
12
- return fs.access($path).then(res => true).catch(err => Promise.resolve(false));
13
- }
14
-
15
- missing($path) {
16
- return !this.exists($path);
17
- }
18
-
22
+ return fs_extra_1.default.access($path).then(() => true).catch(() => Promise.resolve(false));
23
+ }
24
+ /**
25
+ * missing method.
26
+ *
27
+ * @param $path - File path to check.
28
+ * @returns Promise resolving to boolean.
29
+ */
30
+ async missing($path) {
31
+ return !(await this.exists($path));
32
+ }
33
+ /**
34
+ * get method.
35
+ *
36
+ * @param $path - File path to read.
37
+ * @returns Promise resolving to file content string.
38
+ */
19
39
  get($path) {
20
- return fs.readFile($path, 'utf8').catch(err => {
21
- throw new FileNotFoundException(`File does not exist at path ${$path}.`);
22
- })
23
-
40
+ return fs_extra_1.default.readFile($path, 'utf8').catch(() => {
41
+ throw new fileNotFoundException_1.default(`File does not exist at path ${$path}.`);
42
+ });
24
43
  }
25
-
44
+ /**
45
+ * put method.
46
+ *
47
+ * @param $path - File path to write.
48
+ * @param $contents - Contents to write.
49
+ * @returns Promise resolving on completion.
50
+ */
26
51
  put($path, $contents) {
27
- return fs.writeFile($path, $contents);
28
- }
29
-
52
+ return fs_extra_1.default.writeFile($path, $contents);
53
+ }
54
+ /**
55
+ * replaceInFile method.
56
+ *
57
+ * @param $search - Search string or RegExp.
58
+ * @param $replace - Replacement string.
59
+ * @param $path - File path.
60
+ * @returns Promise resolving on completion.
61
+ */
30
62
  replaceInFile($search, $replace, $path) {
31
- this.get($path).then(content => this.put($path, content.replace($search, $replace)));
32
- }
33
-
34
- prepend($path, $data) {
35
- return this.exists($path).then(res => this.put($path, ($data + this.get($path)))).catch(err => this.put($path, $data))
36
- }
37
-
63
+ return this.get($path).then(content => this.put($path, content.replace($search, $replace)));
64
+ }
65
+ /**
66
+ * prepend method.
67
+ *
68
+ * @param $path - File path.
69
+ * @param $data - Data to prepend.
70
+ * @returns Promise resolving on completion.
71
+ */
72
+ async prepend($path, $data) {
73
+ if (await this.exists($path)) {
74
+ const existing = await this.get($path);
75
+ return this.put($path, $data + existing);
76
+ }
77
+ return this.put($path, $data);
78
+ }
79
+ /**
80
+ * append method.
81
+ *
82
+ * @param $path - File path.
83
+ * @param $data - Data to append.
84
+ * @returns Promise resolving on completion.
85
+ */
38
86
  append($path, $data) {
39
- return fs.appendFile($path, $data);
40
- }
41
-
87
+ return fs_extra_1.default.appendFile($path, $data);
88
+ }
89
+ /**
90
+ * chmod method.
91
+ *
92
+ * @param $path - File path.
93
+ * @param $mode - Mode number.
94
+ * @returns Promise resolving to mode or void.
95
+ */
42
96
  chmod($path, $mode = null) {
43
97
  if ($mode) {
44
- return fs.chmod($path, $mode);
98
+ return fs_extra_1.default.chmod($path, $mode);
45
99
  }
46
- return fs.stat($path).then(stat => {
47
- return stats.mode
100
+ return fs_extra_1.default.stat($path).then(stat => {
101
+ return stat.mode;
48
102
  });
49
-
50
103
  }
51
-
104
+ /**
105
+ * delete method.
106
+ *
107
+ * @param $paths - Path or array of paths to delete.
108
+ * @returns Promise resolving to boolean success.
109
+ */
52
110
  async delete($paths) {
53
111
  $paths = Array.isArray($paths) ? $paths : arguments;
54
-
55
112
  let $success = true;
56
-
57
113
  for (let $path of $paths) {
58
114
  try {
59
- if (!await fs.remove($path)) {
60
- $success = false;
61
- }
62
- } catch ($e) {
115
+ await fs_extra_1.default.remove($path);
116
+ }
117
+ catch ($e) {
63
118
  $success = false;
64
119
  }
65
120
  }
66
-
67
121
  return $success;
68
122
  }
69
-
123
+ /**
124
+ * move method.
125
+ *
126
+ * @param $path - Source path.
127
+ * @param $target - Destination path.
128
+ * @returns Promise resolving on completion.
129
+ */
70
130
  move($path, $target) {
71
- return fs.move($path, $target);
72
- }
73
-
131
+ return fs_extra_1.default.move($path, $target);
132
+ }
133
+ /**
134
+ * copy method.
135
+ *
136
+ * @param $path - Source path.
137
+ * @param $target - Destination path.
138
+ * @returns Promise resolving on completion.
139
+ */
74
140
  copy($path, $target) {
75
- return fs.copy($path, $target);
76
- }
77
-
141
+ return fs_extra_1.default.copy($path, $target);
142
+ }
143
+ /**
144
+ * link method.
145
+ *
146
+ * @param $target - Target path.
147
+ * @param $link - Symlink path.
148
+ * @param $force - Force flag.
149
+ * @returns Promise resolving on completion.
150
+ */
78
151
  link($target, $link, $force = false) {
79
- return fs.symlink($target, $link, 'junction')
80
- }
81
-
82
- relativeLink($target, $link, $force) {
83
- $target = path.relative($target, $link);
84
- return this.link($target, $link, $force);
85
- }
86
-
152
+ return fs_extra_1.default.symlink($target, $link, 'junction');
153
+ }
154
+ /**
155
+ * relativeLink method.
156
+ *
157
+ * @param $target - Target path.
158
+ * @param $link - Symlink path.
159
+ * @param $force - Force flag.
160
+ * @returns Promise resolving on completion.
161
+ */
162
+ relativeLink($target, $link, $force = false) {
163
+ let relTarget = path_1.default.relative(path_1.default.dirname($link), $target);
164
+ return this.link(relTarget, $link, $force);
165
+ }
166
+ /**
167
+ * name method.
168
+ *
169
+ * @param $path - File path.
170
+ * @returns File name without extension.
171
+ */
87
172
  name($path) {
88
- return pathinfo($path, PATHINFO_FILENAME);
89
- }
90
-
173
+ return path_1.default.parse($path).name;
174
+ }
175
+ /**
176
+ * basename method.
177
+ *
178
+ * @param $path - File path.
179
+ * @returns Base filename with extension.
180
+ */
91
181
  basename($path) {
92
- return pathinfo($path, PATHINFO_BASENAME);
93
- }
94
-
182
+ return path_1.default.basename($path);
183
+ }
184
+ /**
185
+ * dirname method.
186
+ *
187
+ * @param $path - File path.
188
+ * @returns Directory path.
189
+ */
95
190
  dirname($path) {
96
- return pathinfo($path, PATHINFO_DIRNAME);
97
- }
98
-
191
+ return path_1.default.dirname($path);
192
+ }
193
+ /**
194
+ * extension method.
195
+ *
196
+ * @param $path - File path.
197
+ * @returns File extension without leading dot.
198
+ */
99
199
  extension($path) {
100
- return pathinfo($path, PATHINFO_EXTENSION);
101
- }
102
-
200
+ return path_1.default.extname($path).replace(/^\./, '');
201
+ }
202
+ /**
203
+ * guessExtension method.
204
+ *
205
+ * @param $path - File path.
206
+ * @returns Extension with dot.
207
+ */
103
208
  guessExtension($path) {
104
- return path.extname($path)
105
- }
106
-
209
+ return path_1.default.extname($path);
210
+ }
211
+ /**
212
+ * type method.
213
+ *
214
+ * @param $path - Path to check.
215
+ * @returns 'dir' or 'file'.
216
+ */
107
217
  type($path) {
108
- return filetype($path);
109
- }
110
-
218
+ return fs_extra_1.default.lstat($path).then(stats => stats.isDirectory() ? 'dir' : 'file').catch(() => 'file');
219
+ }
220
+ /**
221
+ * mimeType method.
222
+ *
223
+ * @param $path - File path.
224
+ * @returns Extension as mime identifier.
225
+ */
111
226
  mimeType($path) {
112
- return finfo_file(finfo_open(FILEINFO_MIME_TYPE), $path);
113
- }
114
-
227
+ return path_1.default.extname($path).replace(/^\./, '');
228
+ }
229
+ /**
230
+ * size method.
231
+ *
232
+ * @param $path - File path.
233
+ * @returns Size in bytes.
234
+ */
115
235
  size($path) {
116
- return filesize($path);
117
- }
118
-
236
+ return fs_extra_1.default.stat($path).then(stats => stats.size);
237
+ }
238
+ /**
239
+ * lastModified method.
240
+ *
241
+ * @param $path - File path.
242
+ * @returns Last modified timestamp in seconds.
243
+ */
119
244
  lastModified($path) {
120
- return filemtime($path);
121
- }
122
-
245
+ return fs_extra_1.default.stat($path).then(stats => Math.floor(stats.mtimeMs / 1000));
246
+ }
247
+ /**
248
+ * isDirectory method.
249
+ *
250
+ * @param $directory - Directory path.
251
+ * @returns Boolean indicating if directory.
252
+ */
123
253
  isDirectory($directory) {
124
- return is_dir($directory);
125
- }
126
-
254
+ return fs_extra_1.default.lstat($directory).then(stats => stats.isDirectory()).catch(() => false);
255
+ }
256
+ /**
257
+ * isReadable method.
258
+ *
259
+ * @param $path - Path to check.
260
+ * @returns Boolean indicating if readable.
261
+ */
127
262
  isReadable($path) {
128
- return is_readable($path);
129
- }
130
-
263
+ return fs_extra_1.default.access($path, fs_extra_1.default.constants.R_OK).then(() => true).catch(() => false);
264
+ }
265
+ /**
266
+ * isWritable method.
267
+ *
268
+ * @param $path - Path to check.
269
+ * @returns Boolean indicating if writable.
270
+ */
131
271
  isWritable($path) {
132
- return is_writable($path);
133
- }
134
-
272
+ return fs_extra_1.default.access($path, fs_extra_1.default.constants.W_OK).then(() => true).catch(() => false);
273
+ }
274
+ /**
275
+ * isFile method.
276
+ *
277
+ * @param $file - Path to check.
278
+ * @returns Boolean indicating if regular file.
279
+ */
135
280
  isFile($file) {
136
- return fs.lstat($file).then(stats => stats.isFile()).catch(err => false);
137
- }
138
-
281
+ return fs_extra_1.default.lstat($file).then(stats => stats.isFile()).catch(() => false);
282
+ }
283
+ /**
284
+ * glob method.
285
+ *
286
+ * @param $pattern - Pattern to match.
287
+ * @returns Matching file paths.
288
+ */
139
289
  async glob($pattern) {
140
- const dir = path.dirname($pattern);
141
- const base = path.basename($pattern);
142
- return Finder.create().path(dir).glob(base || "*").find()
143
- }
144
-
290
+ if (!$pattern || $pattern === '.') {
291
+ return [];
292
+ }
293
+ const dir = path_1.default.dirname($pattern);
294
+ const base = path_1.default.basename($pattern);
295
+ let globPattern = '*';
296
+ if (base && base !== '.') {
297
+ globPattern = base;
298
+ }
299
+ return Finder.create().path(dir || '.').glob(globPattern).find();
300
+ }
301
+ /**
302
+ * requireOnce method.
303
+ *
304
+ * @param $path - Module path to require.
305
+ * @param $data - Additional data.
306
+ * @returns Required module export.
307
+ */
145
308
  requireOnce($path, $data = []) {
146
309
  return this.isFile($path).then($exists => {
147
-
148
310
  if ($exists) {
149
311
  return require($path);
150
-
151
- } else {
152
- throw new FileNotFoundException("File does not exist at path {$path}.");
153
-
154
312
  }
155
-
156
- })
157
-
313
+ else {
314
+ throw new fileNotFoundException_1.default("File does not exist at path {$path}.");
315
+ }
316
+ });
158
317
  }
159
-
318
+ /**
319
+ * files method.
320
+ *
321
+ * @param $directory - Directory path.
322
+ * @param $hidden - Whether to ignore hidden.
323
+ * @returns List of file paths.
324
+ */
160
325
  files($directory, $hidden = false) {
161
- let inst = Finder.create().path($directory)
326
+ let inst = Finder.create().path($directory);
162
327
  if ($hidden) {
163
- inst.ignoreHiddenDirectories()
328
+ inst.ignoreHiddenDirectories();
164
329
  }
165
- return inst.depth(0).find()
166
-
167
- }
168
-
330
+ return inst.depth(0).find();
331
+ }
332
+ /**
333
+ * allFiles method.
334
+ *
335
+ * @param $directory - Directory path.
336
+ * @param $hidden - Whether to ignore hidden.
337
+ * @returns List of all recursive file paths.
338
+ */
169
339
  allFiles($directory, $hidden = false) {
170
- let inst = Finder.create().path($directory)
340
+ let inst = Finder.create().path($directory);
171
341
  if ($hidden) {
172
- inst.ignoreHiddenDirectories()
342
+ inst.ignoreHiddenDirectories();
173
343
  }
174
- return inst.find()
175
-
176
- }
177
-
344
+ return inst.find();
345
+ }
346
+ /**
347
+ * directories method.
348
+ *
349
+ * @param $directory - Directory path.
350
+ * @returns List of directories.
351
+ */
178
352
  directories($directory) {
179
-
180
- return Finder.create().path($directory).directory().depth(0).sortByName()
181
-
182
- }
183
-
353
+ return Finder.create().path($directory).directory().depth(1).find();
354
+ }
355
+ /**
356
+ * ensureDirectoryExists method.
357
+ *
358
+ * @param $path - Directory path.
359
+ * @param $mode - Directory mode permissions.
360
+ * @param $recursive - Recursive creation flag.
361
+ * @returns Boolean success.
362
+ */
184
363
  ensureDirectoryExists($path, $mode = 0o755, $recursive = true) {
185
- return fs.ensureDir($path, $mode).then($exists => true).catch(err => false)
186
-
187
- }
188
-
364
+ return fs_extra_1.default.ensureDir($path, $mode).then(() => true).catch(() => false);
365
+ }
366
+ /**
367
+ * makeDirectory method.
368
+ *
369
+ * @param $path - Directory path.
370
+ * @param $mode - Permissions mode.
371
+ * @param $recursive - Recursive flag.
372
+ * @param $force - Force flag.
373
+ * @returns Result of mkdir.
374
+ */
189
375
  makeDirectory($path, $mode = 0o755, $recursive = false, $force = false) {
190
- return fs.mkdir($path, {
376
+ return fs_extra_1.default.mkdir($path, {
191
377
  mode: $mode,
192
378
  recursive: $recursive
193
379
  });
194
-
195
380
  }
196
-
381
+ /**
382
+ * moveDirectory method.
383
+ *
384
+ * @param $from - Source directory.
385
+ * @param $to - Destination directory.
386
+ * @param $overwrite - Overwrite flag.
387
+ * @returns Boolean success.
388
+ */
197
389
  async moveDirectory($from, $to, $overwrite = false) {
198
390
  if ($overwrite && await this.isDirectory($to) && !await this.deleteDirectory($to)) {
199
391
  return false;
200
392
  }
201
-
202
- return await fs.rename($from, $to) === true;
393
+ try {
394
+ await fs_extra_1.default.rename($from, $to);
395
+ return true;
396
+ }
397
+ catch (e) {
398
+ return false;
399
+ }
203
400
  }
204
-
205
- async copyDirectory($directory, $destination, $options = null) {
206
- if (!this.isDirectory($directory)) {
401
+ /**
402
+ * copyDirectory method.
403
+ *
404
+ * @param $directory - Source directory.
405
+ * @param $destination - Destination directory.
406
+ * @param $options - Copy options.
407
+ * @returns Boolean success.
408
+ */
409
+ async copyDirectory($directory, $destination, $options = {}) {
410
+ if (!await this.isDirectory($directory)) {
207
411
  return false;
208
412
  }
209
-
210
- $options = $options ? $options : FilesystemIterator.SKIP_DOTS;
211
-
212
- this.ensureDirectoryExists($destination);
213
-
214
- let $items = await fs.readdir($directory, $options)
215
-
216
- for (let $item of $items) {
217
- $item = await fs.stat();
218
-
219
- $target = path.join($destination, $item.getBasename())
220
-
221
- if ($item.isDirectory()) {
222
- $path = $item.getPathname();
223
-
224
- if (!await this.copyDirectory($path, $target, $options)) {
225
- return false;
226
- }
227
- } else {
228
- if (!await this.copy($item.getPathname(), $target)) {
229
- return false;
230
- }
231
- }
413
+ await this.ensureDirectoryExists($destination);
414
+ try {
415
+ await fs_extra_1.default.copy($directory, $destination, $options);
416
+ return true;
417
+ }
418
+ catch (e) {
419
+ return false;
232
420
  }
233
-
234
- return true;
235
421
  }
236
-
422
+ /**
423
+ * deleteDirectory method.
424
+ *
425
+ * @param $directory - Directory path.
426
+ * @param $preserve - Preserve directory flag.
427
+ * @returns Boolean success.
428
+ */
237
429
  async deleteDirectory($directory, $preserve = false) {
238
430
  if (!await this.isDirectory($directory)) {
239
431
  return false;
240
432
  }
241
-
242
- let $items = await fs.readdir($directory)
243
-
244
- for (let $item of $items) {
245
- $item = await fs.stat();
246
-
247
- if ($item.isDirectory() && !$item.isSymbolicLink()) {
248
- await this.deleteDirectory($item.getPathname());
249
- } else {
250
- await this.delete($item.getPathname());
251
- }
433
+ if ($preserve) {
434
+ await fs_extra_1.default.emptyDir($directory);
252
435
  }
253
-
254
- if (!$preserve) {
255
- await this.delete($directory, true);
436
+ else {
437
+ await fs_extra_1.default.remove($directory);
256
438
  }
257
-
258
439
  return true;
259
440
  }
260
-
441
+ /**
442
+ * deleteDirectories method.
443
+ *
444
+ * @param $directory - Directory path.
445
+ * @returns Boolean success.
446
+ */
261
447
  async deleteDirectories($directory) {
262
- $allDirectories = await this.directories($directory);
263
-
264
- if (!empty($allDirectories)) {
448
+ let $allDirectories = await this.directories($directory);
449
+ if ($allDirectories && $allDirectories.length > 0) {
265
450
  for (let $directoryName of $allDirectories) {
266
451
  await this.deleteDirectory($directoryName);
267
452
  }
268
-
269
453
  return true;
270
454
  }
271
-
272
455
  return false;
273
456
  }
274
-
457
+ /**
458
+ * cleanDirectory method.
459
+ *
460
+ * @param $directory - Directory path.
461
+ * @returns Boolean success.
462
+ */
275
463
  cleanDirectory($directory) {
276
464
  return this.deleteDirectory($directory, true);
277
465
  }
278
466
  }
279
- module.exports = Filesystem
467
+ exports.default = Filesystem;
468
+ //# sourceMappingURL=filesystem.js.map
469
+ if (exports.default) {
470
+ const d = exports.default;
471
+ module.exports = d;
472
+ Object.assign(module.exports, exports);
473
+ module.exports.default = d;
474
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../src/filesystem.ts"],"names":[],"mappings":"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"}