@ostro/filesystem 1.0.3 → 2.0.0-alpha.1

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.d.ts +139 -0
  2. package/adapter/CoreAdapter.d.ts.map +1 -0
  3. package/adapter/CoreAdapter.js +164 -57
  4. package/adapter/CoreAdapter.js.map +1 -0
  5. package/adapter/azure.d.ts +36 -0
  6. package/adapter/azure.d.ts.map +1 -0
  7. package/adapter/azure.js +93 -56
  8. package/adapter/azure.js.map +1 -0
  9. package/adapter/local.d.ts +78 -0
  10. package/adapter/local.d.ts.map +1 -0
  11. package/adapter/local.js +136 -66
  12. package/adapter/local.js.map +1 -0
  13. package/adapter/s3.d.ts +36 -0
  14. package/adapter/s3.d.ts.map +1 -0
  15. package/adapter/s3.js +102 -70
  16. package/adapter/s3.js.map +1 -0
  17. package/callbackHandler.d.ts +69 -0
  18. package/callbackHandler.d.ts.map +1 -0
  19. package/callbackHandler.js +93 -23
  20. package/callbackHandler.js.map +1 -0
  21. package/clients/azure.d.ts +32 -0
  22. package/clients/azure.d.ts.map +1 -0
  23. package/clients/azure.js +43 -13
  24. package/clients/azure.js.map +1 -0
  25. package/clients/s3.d.ts +27 -0
  26. package/clients/s3.d.ts.map +1 -0
  27. package/clients/s3.js +40 -9
  28. package/clients/s3.js.map +1 -0
  29. package/directoryCreateException.d.ts +18 -0
  30. package/directoryCreateException.d.ts.map +1 -0
  31. package/directoryCreateException.js +27 -5
  32. package/directoryCreateException.js.map +1 -0
  33. package/fileDeleteException.d.ts +19 -0
  34. package/fileDeleteException.d.ts.map +1 -0
  35. package/fileDeleteException.js +28 -4
  36. package/fileDeleteException.js.map +1 -0
  37. package/fileNotFoundException.d.ts +18 -0
  38. package/fileNotFoundException.d.ts.map +1 -0
  39. package/fileNotFoundException.js +27 -5
  40. package/fileNotFoundException.js.map +1 -0
  41. package/fileUploadException.d.ts +18 -0
  42. package/fileUploadException.d.ts.map +1 -0
  43. package/fileUploadException.js +28 -5
  44. package/fileUploadException.js.map +1 -0
  45. package/filesystem.d.ts +300 -0
  46. package/filesystem.d.ts.map +1 -0
  47. package/filesystem.js +389 -192
  48. package/filesystem.js.map +1 -0
  49. package/filesystemAdapter.d.ts +91 -0
  50. package/filesystemAdapter.d.ts.map +1 -0
  51. package/filesystemAdapter.js +134 -52
  52. package/filesystemAdapter.js.map +1 -0
  53. package/filesystemManager.d.ts +94 -0
  54. package/filesystemManager.d.ts.map +1 -0
  55. package/filesystemManager.js +141 -57
  56. package/filesystemManager.js.map +1 -0
  57. package/filesystemServiceProvider.d.ts +40 -0
  58. package/filesystemServiceProvider.d.ts.map +1 -0
  59. package/filesystemServiceProvider.js +49 -21
  60. package/filesystemServiceProvider.js.map +1 -0
  61. package/invalidArgumentException.d.ts +17 -0
  62. package/invalidArgumentException.d.ts.map +1 -0
  63. package/invalidArgumentException.js +26 -4
  64. package/invalidArgumentException.js.map +1 -0
  65. package/package.json +24 -10
  66. package/.github/workflows/npm-publish.yml +0 -22
package/filesystem.js CHANGED
@@ -1,277 +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
-
139
- glob($pattern) {
140
- return Finder.create().glob($pattern).find();
141
- }
142
-
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
+ */
289
+ async glob($pattern) {
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
+ */
143
308
  requireOnce($path, $data = []) {
144
309
  return this.isFile($path).then($exists => {
145
-
146
310
  if ($exists) {
147
311
  return require($path);
148
-
149
- } else {
150
- throw new FileNotFoundException("File does not exist at path {$path}.");
151
-
152
312
  }
153
-
154
- })
155
-
313
+ else {
314
+ throw new fileNotFoundException_1.default("File does not exist at path {$path}.");
315
+ }
316
+ });
156
317
  }
157
-
318
+ /**
319
+ * files method.
320
+ *
321
+ * @param $directory - Directory path.
322
+ * @param $hidden - Whether to ignore hidden.
323
+ * @returns List of file paths.
324
+ */
158
325
  files($directory, $hidden = false) {
159
- let inst = Finder.create().path($directory)
326
+ let inst = Finder.create().path($directory);
160
327
  if ($hidden) {
161
- inst.ignoreHiddenDirectories()
328
+ inst.ignoreHiddenDirectories();
162
329
  }
163
- return inst.depth(0).find()
164
-
165
- }
166
-
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
+ */
167
339
  allFiles($directory, $hidden = false) {
168
- let inst = Finder.create().path($directory)
340
+ let inst = Finder.create().path($directory);
169
341
  if ($hidden) {
170
- inst.ignoreHiddenDirectories()
342
+ inst.ignoreHiddenDirectories();
171
343
  }
172
- return inst.find()
173
-
174
- }
175
-
344
+ return inst.find();
345
+ }
346
+ /**
347
+ * directories method.
348
+ *
349
+ * @param $directory - Directory path.
350
+ * @returns List of directories.
351
+ */
176
352
  directories($directory) {
177
-
178
- return Finder.create().path($directory).directory().depth(0).sortByName()
179
-
180
- }
181
-
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
+ */
182
363
  ensureDirectoryExists($path, $mode = 0o755, $recursive = true) {
183
- return fs.ensureDir($path, $mode).then($exists => true).catch(err => false)
184
-
185
- }
186
-
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
+ */
187
375
  makeDirectory($path, $mode = 0o755, $recursive = false, $force = false) {
188
- return fs.mkdir($path, {
376
+ return fs_extra_1.default.mkdir($path, {
189
377
  mode: $mode,
190
378
  recursive: $recursive
191
379
  });
192
-
193
380
  }
194
-
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
+ */
195
389
  async moveDirectory($from, $to, $overwrite = false) {
196
390
  if ($overwrite && await this.isDirectory($to) && !await this.deleteDirectory($to)) {
197
391
  return false;
198
392
  }
199
-
200
- 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
+ }
201
400
  }
202
-
203
- async copyDirectory($directory, $destination, $options = null) {
204
- 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)) {
205
411
  return false;
206
412
  }
207
-
208
- $options = $options ? $options : FilesystemIterator.SKIP_DOTS;
209
-
210
- this.ensureDirectoryExists($destination);
211
-
212
- let $items = await fs.readdir($directory, $options)
213
-
214
- for (let $item of $items) {
215
- $item = await fs.stat();
216
-
217
- $target = path.join($destination, $item.getBasename())
218
-
219
- if ($item.isDirectory()) {
220
- $path = $item.getPathname();
221
-
222
- if (!await this.copyDirectory($path, $target, $options)) {
223
- return false;
224
- }
225
- } else {
226
- if (!await this.copy($item.getPathname(), $target)) {
227
- return false;
228
- }
229
- }
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;
230
420
  }
231
-
232
- return true;
233
421
  }
234
-
422
+ /**
423
+ * deleteDirectory method.
424
+ *
425
+ * @param $directory - Directory path.
426
+ * @param $preserve - Preserve directory flag.
427
+ * @returns Boolean success.
428
+ */
235
429
  async deleteDirectory($directory, $preserve = false) {
236
430
  if (!await this.isDirectory($directory)) {
237
431
  return false;
238
432
  }
239
-
240
- let $items = await fs.readdir($directory)
241
-
242
- for (let $item of $items) {
243
- $item = await fs.stat();
244
-
245
- if ($item.isDirectory() && !$item.isSymbolicLink()) {
246
- await this.deleteDirectory($item.getPathname());
247
- } else {
248
- await this.delete($item.getPathname());
249
- }
433
+ if ($preserve) {
434
+ await fs_extra_1.default.emptyDir($directory);
250
435
  }
251
-
252
- if (!$preserve) {
253
- await this.delete($directory, true);
436
+ else {
437
+ await fs_extra_1.default.remove($directory);
254
438
  }
255
-
256
439
  return true;
257
440
  }
258
-
441
+ /**
442
+ * deleteDirectories method.
443
+ *
444
+ * @param $directory - Directory path.
445
+ * @returns Boolean success.
446
+ */
259
447
  async deleteDirectories($directory) {
260
- $allDirectories = await this.directories($directory);
261
-
262
- if (!empty($allDirectories)) {
448
+ let $allDirectories = await this.directories($directory);
449
+ if ($allDirectories && $allDirectories.length > 0) {
263
450
  for (let $directoryName of $allDirectories) {
264
451
  await this.deleteDirectory($directoryName);
265
452
  }
266
-
267
453
  return true;
268
454
  }
269
-
270
455
  return false;
271
456
  }
272
-
457
+ /**
458
+ * cleanDirectory method.
459
+ *
460
+ * @param $directory - Directory path.
461
+ * @returns Boolean success.
462
+ */
273
463
  cleanDirectory($directory) {
274
464
  return this.deleteDirectory($directory, true);
275
465
  }
276
466
  }
277
- 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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"}