pwd-fs 2.4.2 → 3.1.3

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 (101) hide show
  1. package/.travis.yml +2 -3
  2. package/__tests__/__fmock.ts +45 -0
  3. package/__tests__/append.spec.ts +72 -0
  4. package/__tests__/bitmask.spec.ts +23 -0
  5. package/__tests__/chmod.spec.ts +78 -0
  6. package/__tests__/chown.spec.ts +88 -0
  7. package/{test → __tests__}/constructor.spec.ts +3 -6
  8. package/__tests__/copy.spec.ts +102 -0
  9. package/__tests__/mkdir.spec.ts +120 -0
  10. package/__tests__/read.spec.ts +92 -0
  11. package/__tests__/readdir.spec.ts +87 -0
  12. package/__tests__/remove.spec.ts +78 -0
  13. package/__tests__/rename.spec.ts +84 -0
  14. package/__tests__/stat.spec.ts +100 -0
  15. package/__tests__/symlink.spec.ts +95 -0
  16. package/__tests__/test.spec.ts +82 -0
  17. package/__tests__/write.spec.ts +104 -0
  18. package/appveyor.yml +2 -4
  19. package/jest.config.ts +14 -0
  20. package/lib/__tests__/__fmock.d.ts +5 -0
  21. package/lib/index.js +24 -0
  22. package/lib/powered-file-system.js +260 -0
  23. package/lib/recurse-io-sync.js +90 -0
  24. package/lib/recurse-io.js +194 -0
  25. package/lib/src/index.d.ts +6 -186
  26. package/lib/src/powered-file-system.d.ts +155 -0
  27. package/lib/src/recurse-io-sync.d.ts +10 -5
  28. package/lib/src/recurse-io.d.ts +14 -6
  29. package/package.json +18 -14
  30. package/readme.md +0 -13
  31. package/rollup.config.js +16 -0
  32. package/src/index.ts +29 -626
  33. package/src/powered-file-system.ts +525 -0
  34. package/src/recurse-io-sync.ts +77 -71
  35. package/src/recurse-io.ts +181 -176
  36. package/tsconfig.json +12 -5
  37. package/lib/src/index.js +0 -297
  38. package/lib/src/index.js.map +0 -1
  39. package/lib/src/recurse-io-sync.js +0 -83
  40. package/lib/src/recurse-io-sync.js.map +0 -1
  41. package/lib/src/recurse-io.js +0 -188
  42. package/lib/src/recurse-io.js.map +0 -1
  43. package/lib/test/append.spec.js +0 -99
  44. package/lib/test/append.spec.js.map +0 -1
  45. package/lib/test/bitmask.spec.js +0 -29
  46. package/lib/test/bitmask.spec.js.map +0 -1
  47. package/lib/test/chmod.spec.js +0 -104
  48. package/lib/test/chmod.spec.js.map +0 -1
  49. package/lib/test/chown.spec.js +0 -94
  50. package/lib/test/chown.spec.js.map +0 -1
  51. package/lib/test/constructor.spec.js +0 -20
  52. package/lib/test/constructor.spec.js.map +0 -1
  53. package/lib/test/copy.spec.js +0 -135
  54. package/lib/test/copy.spec.js.map +0 -1
  55. package/lib/test/mkdir.spec.js +0 -147
  56. package/lib/test/mkdir.spec.js.map +0 -1
  57. package/lib/test/read.spec.js +0 -104
  58. package/lib/test/read.spec.js.map +0 -1
  59. package/lib/test/readdir.spec.js +0 -112
  60. package/lib/test/readdir.spec.js.map +0 -1
  61. package/lib/test/remove.spec.js +0 -84
  62. package/lib/test/remove.spec.js.map +0 -1
  63. package/lib/test/rename.spec.js +0 -98
  64. package/lib/test/rename.spec.js.map +0 -1
  65. package/lib/test/stat.spec.js +0 -104
  66. package/lib/test/stat.spec.js.map +0 -1
  67. package/lib/test/symlink.spec.js +0 -118
  68. package/lib/test/symlink.spec.js.map +0 -1
  69. package/lib/test/test.spec.js +0 -89
  70. package/lib/test/test.spec.js.map +0 -1
  71. package/lib/test/write.spec.js +0 -133
  72. package/lib/test/write.spec.js.map +0 -1
  73. package/test/append.spec.ts +0 -125
  74. package/test/bitmask.spec.ts +0 -26
  75. package/test/chmod.spec.ts +0 -127
  76. package/test/chown.spec.ts +0 -118
  77. package/test/copy.spec.ts +0 -171
  78. package/test/mkdir.spec.ts +0 -187
  79. package/test/read.spec.ts +0 -130
  80. package/test/readdir.spec.ts +0 -134
  81. package/test/remove.spec.ts +0 -102
  82. package/test/rename.spec.ts +0 -122
  83. package/test/stat.spec.ts +0 -131
  84. package/test/symlink.spec.ts +0 -146
  85. package/test/test.spec.ts +0 -113
  86. package/test/write.spec.ts +0 -167
  87. /package/lib/{test → __tests__}/append.spec.d.ts +0 -0
  88. /package/lib/{test → __tests__}/bitmask.spec.d.ts +0 -0
  89. /package/lib/{test → __tests__}/chmod.spec.d.ts +0 -0
  90. /package/lib/{test → __tests__}/chown.spec.d.ts +0 -0
  91. /package/lib/{test → __tests__}/constructor.spec.d.ts +0 -0
  92. /package/lib/{test → __tests__}/copy.spec.d.ts +0 -0
  93. /package/lib/{test → __tests__}/mkdir.spec.d.ts +0 -0
  94. /package/lib/{test → __tests__}/read.spec.d.ts +0 -0
  95. /package/lib/{test → __tests__}/readdir.spec.d.ts +0 -0
  96. /package/lib/{test → __tests__}/remove.spec.d.ts +0 -0
  97. /package/lib/{test → __tests__}/rename.spec.d.ts +0 -0
  98. /package/lib/{test → __tests__}/stat.spec.d.ts +0 -0
  99. /package/lib/{test → __tests__}/symlink.spec.d.ts +0 -0
  100. /package/lib/{test → __tests__}/test.spec.d.ts +0 -0
  101. /package/lib/{test → __tests__}/write.spec.d.ts +0 -0
package/src/index.ts CHANGED
@@ -1,626 +1,29 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
- import recurse from './recurse-io';
4
- import recurseSync from './recurse-io-sync';
5
-
6
- export type Mode = 'e' | 'r' | 'w' | 'x';
7
- export type Flag = Mode | 'a';
8
-
9
- export interface Constants {
10
- e: number,
11
- r: number,
12
- w: number,
13
- x: number
14
- }
15
-
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;
1
+ import {
2
+ type Mode as TMode,
3
+ type Flag as TFlag,
4
+ type Stats as TStats,
5
+ PoweredFileSystem
6
+ } from './powered-file-system';
7
+
8
+ export type Mode = TMode;
9
+ export type Flag = TFlag;
10
+ export type Stats = TStats;
11
+
12
+ // const pfs = new PoweredFileSystem();
13
+
14
+ // export const test = pfs.test;
15
+ // export const stat = pfs.stat;
16
+ // export const chmod = pfs.chmod;
17
+ // export const chown = pfs.chown;
18
+ // export const symlink = pfs.symlink;
19
+ // export const copy = pfs.copy;
20
+ // export const rename = pfs.rename;
21
+ // export const remove = pfs.remove;
22
+ // export const read = pfs.read;
23
+ // export const write = pfs.write;
24
+ // export const append = pfs.append;
25
+ // export const readdir = pfs.readdir;
26
+ // export const mkdir = pfs.mkdir;
27
+
28
+ export const bitmask = PoweredFileSystem.bitmask;
29
+ export default PoweredFileSystem;