pwd-fs 2.4.2 → 3.1.4

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 (68) hide show
  1. package/.travis.yml +2 -3
  2. package/appveyor.yml +2 -4
  3. package/lib/src/index.d.ts +4 -186
  4. package/lib/src/index.js +18 -294
  5. package/lib/src/powered-file-system.d.ts +156 -0
  6. package/lib/src/powered-file-system.js +264 -0
  7. package/lib/src/recurse-io-sync.d.ts +10 -5
  8. package/lib/src/recurse-io-sync.js +74 -69
  9. package/lib/src/recurse-io.d.ts +14 -6
  10. package/lib/src/recurse-io.js +164 -160
  11. package/lib/test/__fmock.d.ts +5 -0
  12. package/lib/test/__fmock.js +40 -0
  13. package/lib/test/append.spec.js +36 -77
  14. package/lib/test/bitmask.spec.js +14 -17
  15. package/lib/test/chmod.spec.js +42 -84
  16. package/lib/test/chown.spec.js +45 -71
  17. package/lib/test/constructor.spec.js +7 -10
  18. package/lib/test/copy.spec.js +53 -108
  19. package/lib/test/mkdir.spec.js +62 -119
  20. package/lib/test/read.spec.js +47 -78
  21. package/lib/test/readdir.spec.js +48 -90
  22. package/lib/test/remove.spec.js +44 -65
  23. package/lib/test/rename.spec.js +43 -75
  24. package/lib/test/stat.spec.js +50 -78
  25. package/lib/test/symlink.spec.js +51 -95
  26. package/lib/test/test.spec.js +37 -66
  27. package/lib/test/write.spec.js +52 -103
  28. package/package.json +8 -11
  29. package/readme.md +10 -21
  30. package/src/index.ts +4 -623
  31. package/src/powered-file-system.ts +527 -0
  32. package/src/recurse-io-sync.ts +77 -71
  33. package/src/recurse-io.ts +181 -176
  34. package/test/__fmock.ts +45 -0
  35. package/test/append.spec.ts +44 -98
  36. package/test/bitmask.spec.ts +14 -17
  37. package/test/chmod.spec.ts +45 -95
  38. package/test/chown.spec.ts +61 -93
  39. package/test/constructor.spec.ts +4 -7
  40. package/test/copy.spec.ts +72 -142
  41. package/test/mkdir.spec.ts +87 -153
  42. package/test/read.spec.ts +64 -103
  43. package/test/readdir.spec.ts +65 -113
  44. package/test/remove.spec.ts +58 -82
  45. package/test/rename.spec.ts +58 -96
  46. package/test/stat.spec.ts +68 -100
  47. package/test/symlink.spec.ts +74 -125
  48. package/test/test.spec.ts +51 -84
  49. package/test/write.spec.ts +68 -131
  50. package/tsconfig.json +14 -7
  51. package/lib/src/index.js.map +0 -1
  52. package/lib/src/recurse-io-sync.js.map +0 -1
  53. package/lib/src/recurse-io.js.map +0 -1
  54. package/lib/test/append.spec.js.map +0 -1
  55. package/lib/test/bitmask.spec.js.map +0 -1
  56. package/lib/test/chmod.spec.js.map +0 -1
  57. package/lib/test/chown.spec.js.map +0 -1
  58. package/lib/test/constructor.spec.js.map +0 -1
  59. package/lib/test/copy.spec.js.map +0 -1
  60. package/lib/test/mkdir.spec.js.map +0 -1
  61. package/lib/test/read.spec.js.map +0 -1
  62. package/lib/test/readdir.spec.js.map +0 -1
  63. package/lib/test/remove.spec.js.map +0 -1
  64. package/lib/test/rename.spec.js.map +0 -1
  65. package/lib/test/stat.spec.js.map +0 -1
  66. package/lib/test/symlink.spec.js.map +0 -1
  67. package/lib/test/test.spec.js.map +0 -1
  68. package/lib/test/write.spec.js.map +0 -1
package/src/index.ts CHANGED
@@ -1,626 +1,7 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
- import recurse from './recurse-io';
4
- import recurseSync from './recurse-io-sync';
1
+ import { PoweredFileSystem } from './powered-file-system';
5
2
 
6
- export type Mode = 'e' | 'r' | 'w' | 'x';
7
- export type Flag = Mode | 'a';
3
+ export const pfs = new PoweredFileSystem();
8
4
 
9
- export interface Constants {
10
- e: number,
11
- r: number,
12
- w: number,
13
- x: number
14
- }
5
+ export default PoweredFileSystem;
15
6
 
16
- export default class PoweredFileSystem {
17
- readonly pwd: string = process.cwd();
18
-
19
- readonly constants: Constants = {
20
- e: fs.constants.F_OK,
21
- r: fs.constants.R_OK,
22
- w: fs.constants.W_OK,
23
- x: fs.constants.X_OK
24
- };
25
-
26
- constructor(pwd?: string) {
27
- if (pwd) {
28
- this.pwd = path.resolve(pwd);
29
- }
30
- }
31
-
32
- test(src: string, options: {
33
- sync: true,
34
- resolve?: boolean,
35
- flag?: Mode
36
- }): boolean;
37
-
38
- test(src: string, options?: {
39
- sync?: false,
40
- resolve?: boolean,
41
- flag?: Mode
42
- }): Promise<boolean>;
43
-
44
- test(src: string, { sync = false, resolve = true, flag = 'e' }: {
45
- sync?: boolean,
46
- resolve?: boolean,
47
- flag?: Mode
48
- } = {}) {
49
- const mode = this.constants[flag];
50
-
51
- if (resolve) {
52
- src = path.resolve(this.pwd, src);
53
- }
54
-
55
- if (sync) {
56
- return fs.existsSync(src);
57
- }
58
-
59
- return new Promise((resolve) => {
60
- fs.access(src, mode, (err) => {
61
- if (err) {
62
- return resolve(false);
63
- }
64
-
65
- resolve(true);
66
- });
67
- });
68
- }
69
-
70
- stat(src: string, options: {
71
- sync: true,
72
- resolve?: boolean
73
- }): fs.Stats;
74
-
75
- stat(src: string, options?: {
76
- sync?: false,
77
- resolve?: boolean
78
- }): Promise<fs.Stats>;
79
-
80
- stat(src: string, { sync = false, resolve = true }: {
81
- sync?: boolean,
82
- resolve?: boolean
83
- } = {}) {
84
- if (resolve) {
85
- src = this.resolve(src);
86
- }
87
-
88
- if (sync) {
89
- return fs.lstatSync(src);
90
- }
91
-
92
- return new Promise((resolve, reject) => {
93
- fs.lstat(src, (err, stats) => {
94
- if (err) {
95
- return reject(err);
96
- }
97
-
98
- resolve(stats);
99
- });
100
- });
101
- }
102
-
103
- chmod(src: string, mode: number, options: {
104
- sync: true,
105
- resolve?: boolean
106
- }): void;
107
-
108
- chmod(src: string, mode: number, options?: {
109
- sync?: false,
110
- resolve?: boolean
111
- }): Promise<void>;
112
-
113
- chmod(src: string, mode: number, { sync = false, resolve = true }: {
114
- sync?: boolean,
115
- resolve?: boolean
116
- } = {}) {
117
- if (resolve) {
118
- src = this.resolve(src);
119
- }
120
-
121
- if (sync) {
122
- return recurseSync.chmod(src, mode);
123
- }
124
-
125
- return new Promise<void>((resolve, reject) => {
126
- recurse.chmod(src, mode, (err) => {
127
- if (err) {
128
- return reject(err);
129
- }
130
-
131
- resolve();
132
- });
133
- });
134
- }
135
-
136
- chown(src: string, uid: number, gid: number, options: {
137
- sync: true,
138
- resolve?: boolean
139
- }): void;
140
-
141
- chown(src: string, uid: number, gid: number, options?: {
142
- sync?: false,
143
- resolve?: boolean
144
- }): Promise<void>;
145
-
146
- chown(src: string, uid: number, gid: number, { sync = false, resolve = true }: {
147
- sync?: boolean,
148
- resolve?: boolean
149
- } = {}) {
150
- if (resolve) {
151
- src = this.resolve(src);
152
- }
153
-
154
- if (sync) {
155
- return recurseSync.chown(src, uid, gid);
156
- }
157
-
158
- return new Promise<void>((resolve, reject) => {
159
- recurse.chown(src, uid, gid, (err) => {
160
- if (err) {
161
- return reject(err);
162
- }
163
-
164
- resolve();
165
- });
166
- });
167
- }
168
-
169
- symlink(src: string, use: string, options: {
170
- sync: true,
171
- resolve?: boolean
172
- }): void;
173
-
174
- symlink(src: string, use: string, options?: {
175
- sync?: false,
176
- resolve?: boolean
177
- }): Promise<void>;
178
-
179
- symlink(src: string, use: string, { sync = false, resolve = true }: {
180
- sync?: boolean,
181
- resolve?: boolean
182
- } = {}) {
183
- if (resolve) {
184
- src = this.resolve(src);
185
- use = this.resolve(use);
186
- }
187
-
188
- if (sync) {
189
- return fs.symlinkSync(src, use);
190
- }
191
-
192
- return new Promise<void>((resolve, reject) => {
193
- fs.symlink(src, use, (err) => {
194
- if (err) {
195
- return reject(err);
196
- }
197
-
198
- resolve();
199
- });
200
- });
201
- }
202
-
203
- copy(src: string, dir: string, options: {
204
- sync: true,
205
- resolve?: boolean,
206
- umask?: number
207
- }): void;
208
-
209
- copy(src: string, dir: string, options?: {
210
- sync?: false,
211
- resolve?: boolean,
212
- umask?: number
213
- }): Promise<void>;
214
-
215
- copy(src: string, dir: string, { sync = false, resolve = true, umask = 0o000 }: {
216
- sync?: boolean,
217
- resolve?: boolean,
218
- umask?: number
219
- } = {}) {
220
- if (resolve) {
221
- src = this.resolve(src);
222
- dir = this.resolve(dir);
223
- }
224
-
225
- if (sync) {
226
- return recurseSync.copy(src, dir, umask);
227
- }
228
-
229
- return new Promise<void>((resolve, reject) => {
230
- recurse.copy(src, dir, umask, (err) => {
231
- if (err) {
232
- return reject(err);
233
- }
234
-
235
- resolve();
236
- });
237
- });
238
- }
239
-
240
- rename(src: string, use: string, options: {
241
- sync: true,
242
- resolve?: boolean
243
- }): void;
244
-
245
- rename(src: string, use: string, options?: {
246
- sync?: false,
247
- resolve?: boolean
248
- }): Promise<void>;
249
-
250
- rename(src: string, use: string, { sync = false, resolve = true }: {
251
- sync?: boolean,
252
- resolve?: boolean
253
- } = {}) {
254
- if (resolve) {
255
- src = this.resolve(src);
256
- use = this.resolve(use);
257
- }
258
-
259
- if (sync) {
260
- return fs.renameSync(src, use);
261
- }
262
-
263
- return new Promise<void>((resolve, reject) => {
264
- fs.rename(src, use, (err) => {
265
- if (err) {
266
- return reject(err);
267
- }
268
-
269
- resolve();
270
- });
271
- });
272
- }
273
-
274
- remove(src: string, options: {
275
- sync: true,
276
- resolve?: boolean
277
- }): void;
278
-
279
- remove(src: string, options?: {
280
- sync?: false,
281
- resolve?: boolean
282
- }): Promise<void>;
283
-
284
- remove(src: string, { sync = false, resolve = true }: {
285
- sync?: boolean,
286
- resolve?: boolean
287
- } = {}) {
288
- if (resolve) {
289
- src = this.resolve(src);
290
- }
291
-
292
- if (sync) {
293
- return recurseSync.remove(src);
294
- }
295
-
296
- return new Promise<void>((resolve, reject) => {
297
- recurse.remove(src, (err) => {
298
- if (err) {
299
- return reject(err);
300
- }
301
-
302
- resolve();
303
- });
304
- });
305
- }
306
-
307
- read(src: string, options: {
308
- sync: true,
309
- resolve?: boolean,
310
- encoding?: BufferEncoding,
311
- flag?: Flag
312
- }): string;
313
-
314
- read(src: string, options: {
315
- sync: true,
316
- resolve?: boolean,
317
- encoding?: null,
318
- flag?: Flag
319
- }): Buffer;
320
-
321
- read(src: string, options: {
322
- sync?: false,
323
- resolve?: boolean,
324
- encoding: null,
325
- flag?: Flag
326
- }): Promise<Buffer>;
327
-
328
- read(src: string, options?: {
329
- sync?: false,
330
- resolve?: boolean,
331
- encoding?: BufferEncoding,
332
- flag?: Flag
333
- }): Promise<string>;
334
-
335
- read(src: string, { sync = false, resolve = true, encoding = 'utf8', flag = 'r' }: {
336
- sync?: boolean,
337
- resolve?: boolean,
338
- encoding?: BufferEncoding | null,
339
- flag?: Flag
340
- } = {}) {
341
- if (resolve) {
342
- src = this.resolve(src);
343
- }
344
-
345
- if (sync) {
346
- return fs.readFileSync(src, {
347
- encoding,
348
- flag
349
- });
350
- }
351
-
352
- return new Promise((resolve, reject) => {
353
- fs.readFile(src, {
354
- encoding,
355
- flag
356
- },
357
- (err, raw) => {
358
- if (err) {
359
- return reject(err);
360
- }
361
-
362
- resolve(raw);
363
- });
364
- });
365
- }
366
-
367
- write(src: string, data: Buffer, options: {
368
- sync: true,
369
- resolve?: boolean,
370
- encoding: null,
371
- umask?: number,
372
- flag?: Flag
373
- }): void;
374
-
375
- write(src: string, data: string, options: {
376
- sync: true,
377
- resolve?: boolean,
378
- encoding?: BufferEncoding,
379
- umask?: number,
380
- flag?: Flag
381
- }): void;
382
-
383
- write(src: string, data: Buffer, options: {
384
- sync?: false,
385
- resolve?: boolean,
386
- encoding: null,
387
- umask?: number,
388
- flag?: Flag
389
- }): Promise<void>;
390
-
391
- write(src: string, data: string, options?: {
392
- sync?: false,
393
- resolve?: boolean,
394
- encoding?: BufferEncoding,
395
- umask?: number,
396
- flag?: Flag
397
- }): Promise<void>;
398
-
399
- write(src: string, data: Buffer | string, { sync = false, resolve = true, encoding = 'utf8', umask = 0o000, flag = 'w' }: {
400
- sync?: boolean,
401
- resolve?: boolean,
402
- encoding?: BufferEncoding | null,
403
- umask?: number,
404
- flag?: Flag
405
- } = {}) {
406
- if (resolve) {
407
- src = this.resolve(src);
408
- }
409
-
410
- const mode = 0o666 - umask;
411
-
412
- if (sync) {
413
- return fs.writeFileSync(src, data, {
414
- encoding,
415
- mode,
416
- flag
417
- });
418
- }
419
-
420
- return new Promise<void>((resolve, reject) => {
421
- fs.writeFile(src, data, {
422
- encoding,
423
- mode,
424
- flag
425
- },
426
- (err) => {
427
- if (err) {
428
- return reject(err);
429
- }
430
-
431
- resolve();
432
- });
433
- });
434
- }
435
-
436
- append(src: string, data: Buffer, options: {
437
- sync: true,
438
- resolve?: boolean,
439
- encoding: null,
440
- umask?: number,
441
- flag?: Flag
442
- }): void;
443
-
444
- append(src: string, data: string, options: {
445
- sync: true,
446
- resolve?: boolean,
447
- encoding?: BufferEncoding,
448
- umask?: number,
449
- flag?: Flag
450
- }): void;
451
-
452
- append(src: string, data: Buffer, options: {
453
- sync?: false,
454
- resolve?: boolean,
455
- encoding: null,
456
- umask?: number,
457
- flag?: Flag
458
- }): Promise<void>;
459
-
460
- append(src: string, data: string, options?: {
461
- sync?: false,
462
- resolve?: boolean,
463
- encoding?: BufferEncoding,
464
- umask?: number,
465
- flag?: Flag
466
- }): Promise<void>;
467
-
468
- append(src: string, data: Buffer | string, { sync = false, resolve = true, encoding = 'utf8', umask = 0o000, flag = 'a' }: {
469
- sync?: boolean,
470
- resolve?: boolean,
471
- encoding?: BufferEncoding | null,
472
- umask?: number,
473
- flag?: Flag
474
- } = {}) {
475
- if (resolve) {
476
- src = this.resolve(src);
477
- }
478
-
479
- const mode = 0o666 - umask;
480
-
481
- if (sync) {
482
- return fs.appendFileSync(src, data, {
483
- encoding,
484
- mode,
485
- flag
486
- });
487
- }
488
-
489
- return new Promise<void>((resolve, reject) => {
490
- fs.appendFile(src, data, {
491
- encoding,
492
- mode,
493
- flag
494
- },
495
- (err) => {
496
- if (err) {
497
- return reject(err);
498
- }
499
-
500
- resolve();
501
- });
502
- });
503
- }
504
-
505
- readdir(dir: string, options: {
506
- sync: true,
507
- resolve?: boolean,
508
- encoding?: BufferEncoding | null
509
- }): string[];
510
-
511
- readdir(dir: string, options?: {
512
- sync?: false,
513
- resolve?: boolean,
514
- encoding?: BufferEncoding | null
515
- }): Promise<string[]>;
516
-
517
- readdir(dir: string, { sync = false, resolve = true, encoding = 'utf8' }: {
518
- sync?: boolean,
519
- resolve?: boolean,
520
- encoding?: BufferEncoding | null
521
- } = {}) {
522
- if (resolve) {
523
- dir = this.resolve(dir);
524
- }
525
-
526
- if (sync) {
527
- return fs.readdirSync(dir, {
528
- encoding
529
- });
530
- }
531
-
532
- return new Promise((resolve, reject) => {
533
- fs.readdir(dir, { encoding }, (err, list) => {
534
- if (err) {
535
- return reject(err);
536
- }
537
-
538
- resolve(list);
539
- });
540
- });
541
- }
542
-
543
- mkdir(dir: string, options: {
544
- sync: true,
545
- resolve?: boolean,
546
- umask?: number
547
- }): void;
548
-
549
- mkdir(dir: string, options?: {
550
- sync?: false,
551
- resolve?: boolean,
552
- umask?: number
553
- }): Promise<void>;
554
-
555
- mkdir(dir: string, { umask = 0o000, resolve = true, sync = false }: {
556
- umask?: number,
557
- resolve?: boolean,
558
- sync?: boolean
559
- } = {}) {
560
- if (resolve) {
561
- dir = this.resolve(dir);
562
- }
563
-
564
- if (sync) {
565
- return recurseSync.mkdir(dir, umask);
566
- }
567
-
568
- return new Promise<void>((resolve, reject) => {
569
- recurse.mkdir(dir, umask, (err) => {
570
- if (err) {
571
- return reject(err);
572
- }
573
-
574
- resolve();
575
- });
576
- });
577
- }
578
-
579
- private resolve(src: string): string {
580
- return path.resolve(this.pwd, src);
581
- }
582
-
583
- static bitmask(mode: number) {
584
- let umask = 0o000;
585
-
586
- if (mode & 256) {
587
- umask += 0o400;
588
- }
589
-
590
- if (mode & 128) {
591
- umask += 0o200;
592
- }
593
-
594
- if (mode & 64) {
595
- umask += 0o100;
596
- }
597
-
598
- if (mode & 32) {
599
- umask += 0o040;
600
- }
601
-
602
- if (mode & 16) {
603
- umask += 0o020;
604
- }
605
-
606
- if (mode & 8) {
607
- umask += 0o010;
608
- }
609
-
610
- if (mode & 4) {
611
- umask += 0o004;
612
- }
613
-
614
- if (mode & 2) {
615
- umask += 0o002;
616
- }
617
-
618
- if (mode & 1) {
619
- umask += 0o001;
620
- }
621
-
622
- return umask;
623
- }
624
- }
625
-
626
- module.exports = PoweredFileSystem;
7
+ export * from './powered-file-system';