pwd-fs 3.2.4 → 3.3.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 (101) hide show
  1. package/dist/bitmask.d.ts +4 -0
  2. package/dist/bitmask.js +17 -0
  3. package/dist/bitmask.test.d.ts +1 -0
  4. package/dist/bitmask.test.js +29 -0
  5. package/dist/{src/index.d.ts → index.d.ts} +3 -0
  6. package/dist/{src/index.js → index.js} +3 -0
  7. package/dist/powered-file-system/append.d.ts +9 -0
  8. package/dist/powered-file-system/append.js +10 -0
  9. package/dist/powered-file-system/append.test.d.ts +1 -0
  10. package/dist/powered-file-system/append.test.js +47 -0
  11. package/dist/powered-file-system/chmod.d.ts +7 -0
  12. package/dist/powered-file-system/chmod.js +28 -0
  13. package/dist/powered-file-system/chmod.test.d.ts +1 -0
  14. package/dist/powered-file-system/chmod.test.js +71 -0
  15. package/dist/powered-file-system/chown.d.ts +9 -0
  16. package/dist/powered-file-system/chown.js +45 -0
  17. package/dist/powered-file-system/chown.test.d.ts +1 -0
  18. package/dist/powered-file-system/chown.test.js +82 -0
  19. package/dist/powered-file-system/copy.d.ts +8 -0
  20. package/dist/powered-file-system/copy.js +29 -0
  21. package/dist/powered-file-system/copy.test.d.ts +1 -0
  22. package/dist/powered-file-system/copy.test.js +82 -0
  23. package/dist/powered-file-system/mkdir.d.ts +8 -0
  24. package/dist/powered-file-system/mkdir.js +28 -0
  25. package/dist/powered-file-system/mkdir.test.d.ts +1 -0
  26. package/dist/powered-file-system/mkdir.test.js +116 -0
  27. package/dist/powered-file-system/read.d.ts +9 -0
  28. package/dist/powered-file-system/read.js +29 -0
  29. package/dist/powered-file-system/read.test.d.ts +1 -0
  30. package/dist/powered-file-system/read.test.js +75 -0
  31. package/dist/powered-file-system/readdir.d.ts +8 -0
  32. package/dist/powered-file-system/readdir.js +26 -0
  33. package/dist/powered-file-system/readdir.test.d.ts +1 -0
  34. package/dist/powered-file-system/readdir.test.js +72 -0
  35. package/dist/powered-file-system/remove.d.ts +7 -0
  36. package/dist/powered-file-system/remove.js +36 -0
  37. package/dist/powered-file-system/remove.test.d.ts +1 -0
  38. package/dist/powered-file-system/remove.test.js +78 -0
  39. package/dist/powered-file-system/rename.d.ts +7 -0
  40. package/dist/powered-file-system/rename.js +28 -0
  41. package/dist/powered-file-system/rename.test.d.ts +1 -0
  42. package/dist/powered-file-system/rename.test.js +70 -0
  43. package/dist/powered-file-system/stat.d.ts +7 -0
  44. package/dist/powered-file-system/stat.js +26 -0
  45. package/dist/powered-file-system/stat.test.d.ts +1 -0
  46. package/dist/powered-file-system/stat.test.js +79 -0
  47. package/dist/powered-file-system/symlink.d.ts +4 -0
  48. package/dist/powered-file-system/symlink.js +52 -0
  49. package/dist/powered-file-system/symlink.test.d.ts +1 -0
  50. package/dist/powered-file-system/symlink.test.js +77 -0
  51. package/dist/powered-file-system/test.d.ts +8 -0
  52. package/dist/powered-file-system/test.js +30 -0
  53. package/dist/powered-file-system/test.test.d.ts +1 -0
  54. package/dist/powered-file-system/test.test.js +76 -0
  55. package/dist/powered-file-system/write.d.ts +10 -0
  56. package/dist/powered-file-system/write.js +36 -0
  57. package/dist/powered-file-system/write.test.d.ts +1 -0
  58. package/dist/powered-file-system/write.test.js +97 -0
  59. package/dist/powered-file-system.d.ts +127 -0
  60. package/dist/powered-file-system.js +144 -0
  61. package/dist/powered-file-system.test.d.ts +1 -0
  62. package/dist/powered-file-system.test.js +21 -0
  63. package/dist/recurse-io-sync.d.ts +20 -0
  64. package/dist/{src/recurse-io-sync.js → recurse-io-sync.js} +37 -37
  65. package/dist/{src/recurse-io.d.ts → recurse-io.d.ts} +15 -1
  66. package/dist/{src/recurse-io.js → recurse-io.js} +52 -58
  67. package/dist/suite.test.d.ts +1 -0
  68. package/dist/suite.test.js +40 -0
  69. package/dist/test-utils.d.ts +18 -0
  70. package/dist/test-utils.js +72 -0
  71. package/package.json +31 -14
  72. package/readme.md +331 -246
  73. package/.travis.yml +0 -12
  74. package/appveyor.yml +0 -16
  75. package/dist/src/bitmask.d.ts +0 -1
  76. package/dist/src/bitmask.js +0 -18
  77. package/dist/src/powered-file-system.d.ts +0 -173
  78. package/dist/src/powered-file-system.js +0 -262
  79. package/dist/src/recurse-io-sync.d.ts +0 -5
  80. package/src/bitmask.ts +0 -20
  81. package/src/index.ts +0 -7
  82. package/src/powered-file-system.ts +0 -508
  83. package/src/recurse-io-sync.ts +0 -108
  84. package/src/recurse-io.ts +0 -238
  85. package/test/__fmock.ts +0 -45
  86. package/test/append.spec.ts +0 -71
  87. package/test/bitmask.spec.ts +0 -23
  88. package/test/chmod.spec.ts +0 -77
  89. package/test/chown.spec.ts +0 -92
  90. package/test/constructor.spec.ts +0 -15
  91. package/test/copy.spec.ts +0 -101
  92. package/test/mkdir.spec.ts +0 -121
  93. package/test/read.spec.ts +0 -91
  94. package/test/readdir.spec.ts +0 -86
  95. package/test/remove.spec.ts +0 -78
  96. package/test/rename.spec.ts +0 -84
  97. package/test/stat.spec.ts +0 -99
  98. package/test/symlink.spec.ts +0 -95
  99. package/test/test.spec.ts +0 -80
  100. package/test/write.spec.ts +0 -104
  101. package/tsconfig.json +0 -14
@@ -1,508 +0,0 @@
1
- import fs, { NoParamCallback } from 'node:fs';
2
- import path from 'node:path';
3
- import { chmod, chown, copy, remove, mkdir } from './recurse-io';
4
- import { chmodSync, chownSync, copySync, removeSync, mkdirSync } from './recurse-io-sync';
5
- import { bitmask } from './bitmask';
6
-
7
- export type Mode = keyof IConstants;
8
- export type Flag = Mode | 'a';
9
- export type Stats = fs.Stats;
10
-
11
- export * from './bitmask';
12
-
13
- export interface IConstants {
14
- e: number,
15
- r: number,
16
- w: number,
17
- x: number
18
- }
19
-
20
- export class PoweredFileSystem {
21
- readonly pwd: string;
22
-
23
- readonly constants: IConstants = {
24
- e: fs.constants.F_OK,
25
- r: fs.constants.R_OK,
26
- w: fs.constants.W_OK,
27
- x: fs.constants.X_OK
28
- };
29
-
30
- static bitmask = bitmask;
31
-
32
- constructor(pwd?: string) {
33
- this.pwd = pwd ? path.resolve(pwd) : process.cwd();
34
- }
35
-
36
- private resolve(src: string) {
37
- return path.resolve(this.pwd, src);
38
- }
39
-
40
- test(src: string, options: {
41
- sync: true,
42
- flag?: Mode
43
- }): boolean;
44
-
45
- test(src: string, options?: {
46
- sync?: false,
47
- flag?: Mode
48
- }): Promise<boolean>;
49
-
50
- test(src: string, { sync = false, flag = 'e' }: {
51
- sync?: boolean,
52
- flag?: Mode
53
- } = {}) {
54
- const mode = this.constants[flag];
55
-
56
- src = path.resolve(this.pwd, src);
57
-
58
- if (sync) {
59
- return fs.existsSync(src);
60
- }
61
-
62
- return new Promise((resolve) => {
63
- fs.access(src, mode, (err) => {
64
- if (err) {
65
- return resolve(false);
66
- }
67
-
68
- resolve(true);
69
- });
70
- });
71
- }
72
-
73
- stat(src: string, options: { sync: true }): Stats;
74
-
75
- stat(src: string, options?: { sync?: false }): Promise<Stats>;
76
-
77
- stat(src: string, { sync = false }: { sync?: boolean } = {}) {
78
- src = this.resolve(src);
79
-
80
- if (sync) {
81
- return fs.lstatSync(src);
82
- }
83
-
84
- return new Promise((resolve, reject) => {
85
- fs.lstat(src, (err, stats) => {
86
- if (err) {
87
- return reject(err);
88
- }
89
-
90
- resolve(stats);
91
- });
92
- });
93
- }
94
-
95
- chmod(src: string, mode: number, options: { sync: true }): void;
96
-
97
- chmod(src: string, mode: number, options?: { sync?: false }): Promise<void>;
98
-
99
- chmod(src: string, mode: number, { sync = false }: { sync?: boolean } = {}) {
100
- src = this.resolve(src);
101
-
102
- if (sync) {
103
- return chmodSync(src, mode);
104
- }
105
-
106
- return new Promise<void>((resolve, reject) => {
107
- chmod(src, mode, (err) => {
108
- if (err) {
109
- return reject(err);
110
- }
111
-
112
- resolve();
113
- });
114
- });
115
- }
116
-
117
- chown(src: string, options: {
118
- sync: true,
119
- uid?: number,
120
- gid?: number
121
- }): void;
122
-
123
- chown(src: string, options?: {
124
- sync?: false,
125
- uid?: number,
126
- gid?: number
127
- }): Promise<void>;
128
-
129
- chown(src: string, { sync = false, uid = 0, gid = 0 }: { sync?: boolean, uid?: number, gid?: number } = {}) {
130
- src = this.resolve(src);
131
-
132
- if (sync) {
133
- return chownSync(src, uid, gid);
134
- }
135
-
136
- return new Promise<void>((resolve, reject) => {
137
- chown(src, uid, gid, (err) => {
138
- if (err) {
139
- return reject(err);
140
- }
141
-
142
- resolve();
143
- });
144
- });
145
- }
146
-
147
- symlink(src: string, use: string, options: { sync: true }): void;
148
-
149
- symlink(src: string, use: string, options?: { sync?: false }): Promise<void>;
150
-
151
- symlink(src: string, use: string, { sync = false }: { sync?: boolean } = {}) {
152
- src = this.resolve(src);
153
- use = this.resolve(use);
154
-
155
- if (sync) {
156
- return fs.symlinkSync(src, use);
157
- }
158
-
159
- return new Promise<void>((resolve, reject) => {
160
- fs.symlink(src, use, (err) => {
161
- if (err) {
162
- return reject(err);
163
- }
164
-
165
- resolve();
166
- });
167
- });
168
- }
169
-
170
- copy(src: string, dir: string, options: {
171
- sync: true,
172
- umask?: number
173
- }): void;
174
-
175
- copy(src: string, dir: string, options?: {
176
- sync?: false,
177
- umask?: number
178
- }): Promise<void>;
179
-
180
- copy(src: string, dir: string, { sync = false, umask = 0o000 }: {
181
- sync?: boolean,
182
- umask?: number
183
- } = {}) {
184
- src = this.resolve(src);
185
- dir = this.resolve(dir);
186
-
187
- if (sync) {
188
- return copySync(src, dir, umask);
189
- }
190
-
191
- return new Promise<void>((resolve, reject) => {
192
- copy(src, dir, umask, (err) => {
193
- if (err) {
194
- return reject(err);
195
- }
196
-
197
- resolve();
198
- });
199
- });
200
- }
201
-
202
- rename(src: string, use: string, options: { sync: true }): void;
203
-
204
- rename(src: string, use: string, options?: { sync?: false }): Promise<void>;
205
-
206
- rename(src: string, use: string, { sync = false }: { sync?: boolean } = {}) {
207
- src = this.resolve(src);
208
- use = this.resolve(use);
209
-
210
- if (sync) {
211
- return fs.renameSync(src, use);
212
- }
213
-
214
- return new Promise<void>((resolve, reject) => {
215
- fs.rename(src, use, (err) => {
216
- if (err) {
217
- return reject(err);
218
- }
219
-
220
- resolve();
221
- });
222
- });
223
- }
224
-
225
- remove(src: string, options: { sync: true }): void;
226
-
227
- remove(src: string, options?: { sync?: false }): Promise<void>;
228
-
229
- remove(src: string, { sync = false }: { sync?: boolean } = {}) {
230
- src = this.resolve(src);
231
-
232
- if (sync) {
233
- removeSync(src);
234
- }
235
-
236
- return new Promise<void>((resolve, reject) => {
237
- const callback: NoParamCallback = (err) => {
238
- if (err) {
239
- return reject(err);
240
- }
241
-
242
- resolve();
243
- };
244
-
245
- if ('rm' in fs) {
246
- return fs.rm(src, { recursive: true }, callback);
247
- }
248
-
249
- remove(src, callback);
250
- });
251
- }
252
-
253
- read(src: string, options: {
254
- sync: true,
255
- encoding: null,
256
- flag?: Flag
257
- }): Buffer;
258
-
259
- read(src: string, options: {
260
- sync: true,
261
- encoding?: BufferEncoding,
262
- flag?: Flag
263
- }): string;
264
-
265
- read(src: string, options: {
266
- sync?: false,
267
- encoding: null,
268
- flag?: Flag
269
- }): Promise<Buffer>;
270
-
271
- read(src: string, options?: {
272
- sync?: false,
273
- encoding?: BufferEncoding,
274
- flag?: Flag
275
- }): Promise<string>;
276
-
277
- read(src: string, { sync = false, encoding = 'utf8', flag = 'r' }: {
278
- sync?: boolean,
279
- encoding?: BufferEncoding | null,
280
- flag?: Flag
281
- } = {}) {
282
- src = this.resolve(src);
283
-
284
- if (sync) {
285
- const content = fs.readFileSync(src, {
286
- encoding,
287
- flag
288
- });
289
-
290
- return encoding === null
291
- ? Buffer.from(content)
292
- : content;
293
- }
294
-
295
- return new Promise((resolve, reject) => {
296
- fs.readFile(src, {
297
- encoding,
298
- flag
299
- },
300
- (err, raw) => {
301
- if (err) {
302
- return reject(err);
303
- }
304
-
305
- resolve(raw);
306
- });
307
- });
308
- }
309
-
310
- write(src: string, data: Buffer, options: {
311
- sync: true,
312
- encoding: null,
313
- umask?: number,
314
- flag?: Flag
315
- }): void;
316
-
317
- write(src: string, data: string, options: {
318
- sync: true,
319
- encoding?: BufferEncoding,
320
- umask?: number,
321
- flag?: Flag
322
- }): void;
323
-
324
- write(src: string, data: Buffer, options: {
325
- sync?: false,
326
- encoding: null,
327
- umask?: number,
328
- flag?: Flag
329
- }): Promise<void>;
330
-
331
- write(src: string, data: string, options?: {
332
- sync?: false,
333
- encoding?: BufferEncoding,
334
- umask?: number,
335
- flag?: Flag
336
- }): Promise<void>;
337
-
338
- write(src: string, data: Buffer | string, { sync = false, encoding = 'utf8', umask = 0o000, flag = 'w' }: {
339
- sync?: boolean,
340
- encoding?: BufferEncoding | null,
341
- umask?: number,
342
- flag?: Flag
343
- } = {}) {
344
- src = this.resolve(src);
345
-
346
- const mode = 0o666 - umask;
347
-
348
- if (sync) {
349
- return fs.writeFileSync(src, data, {
350
- encoding,
351
- mode,
352
- flag
353
- });
354
- }
355
-
356
- return new Promise<void>((resolve, reject) => {
357
- fs.writeFile(src, data, {
358
- encoding,
359
- mode,
360
- flag
361
- },
362
- (err) => {
363
- if (err) {
364
- return reject(err);
365
- }
366
-
367
- resolve();
368
- });
369
- });
370
- }
371
-
372
- /**
373
- * @deprecated The method should not be used
374
- */
375
- append(src: string, data: Buffer, options: {
376
- sync: true,
377
- encoding: null,
378
- umask?: number,
379
- flag?: Flag
380
- }): void;
381
-
382
- /**
383
- * @deprecated The method should not be used
384
- */
385
- append(src: string, data: string, options: {
386
- sync: true,
387
- encoding?: BufferEncoding,
388
- umask?: number,
389
- flag?: Flag
390
- }): void;
391
-
392
- /**
393
- * @deprecated The method should not be used
394
- */
395
- append(src: string, data: Buffer, options: {
396
- sync?: false,
397
- encoding: null,
398
- umask?: number,
399
- flag?: Flag
400
- }): Promise<void>;
401
-
402
- /**
403
- * @deprecated The method should not be used
404
- */
405
- append(src: string, data: string, options?: {
406
- sync?: false,
407
- encoding?: BufferEncoding,
408
- umask?: number,
409
- flag?: Flag
410
- }): Promise<void>;
411
-
412
- append(src: string, data: Buffer | string, { sync = false, encoding = 'utf8', umask = 0o000, flag = 'a' }: {
413
- sync?: boolean,
414
- encoding?: BufferEncoding | null,
415
- umask?: number,
416
- flag?: Flag
417
- } = {}) {
418
- src = this.resolve(src);
419
- const mode = 0o666 - umask;
420
-
421
- if (sync) {
422
- return fs.appendFileSync(src, data, {
423
- encoding,
424
- mode,
425
- flag
426
- });
427
- }
428
-
429
- return new Promise<void>((resolve, reject) => {
430
- fs.appendFile(src, data, {
431
- encoding,
432
- mode,
433
- flag
434
- },
435
- (err) => {
436
- if (err) {
437
- return reject(err);
438
- }
439
-
440
- resolve();
441
- });
442
- });
443
- }
444
-
445
- readdir(dir: string, options: {
446
- sync: true,
447
- encoding?: BufferEncoding | null
448
- }): string[];
449
-
450
- readdir(dir: string, options?: {
451
- sync?: false,
452
- encoding?: BufferEncoding | null
453
- }): Promise<string[]>;
454
-
455
- readdir(dir: string, { sync = false, encoding = 'utf8' }: {
456
- sync?: boolean,
457
- encoding?: BufferEncoding | null
458
- } = {}) {
459
- dir = this.resolve(dir);
460
-
461
- if (sync) {
462
- return fs.readdirSync(dir, {
463
- encoding
464
- });
465
- }
466
-
467
- return new Promise((resolve, reject) => {
468
- fs.readdir(dir, { encoding }, (err, list) => {
469
- if (err) {
470
- return reject(err);
471
- }
472
-
473
- resolve(list);
474
- });
475
- });
476
- }
477
-
478
- mkdir(dir: string, options: {
479
- sync: true,
480
- umask?: number
481
- }): void;
482
-
483
- mkdir(dir: string, options?: {
484
- sync?: false,
485
- umask?: number
486
- }): Promise<void>;
487
-
488
- mkdir(dir: string, { umask = 0o000, sync = false }: {
489
- umask?: number,
490
- sync?: boolean
491
- } = {}) {
492
- dir = this.resolve(dir);
493
-
494
- if (sync) {
495
- return mkdirSync(dir, umask);
496
- }
497
-
498
- return new Promise<void>((resolve, reject) => {
499
- mkdir(dir, umask, (err) => {
500
- if (err) {
501
- return reject(err);
502
- }
503
-
504
- resolve();
505
- });
506
- });
507
- }
508
- }
@@ -1,108 +0,0 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
-
4
- const { sep } = path;
5
-
6
- export function chmodSync(src: string, mode: number) {
7
- const stats = fs.statSync(src);
8
-
9
- if (stats.isDirectory()) {
10
- const list = fs.readdirSync(src);
11
-
12
- for (const loc of list) {
13
- chmodSync(`${src}${sep}${loc}`, mode);
14
- }
15
- }
16
-
17
- fs.chmodSync(src, mode);
18
- }
19
-
20
- export function chownSync(src: string, uid: number, gid: number) {
21
- const stats = fs.statSync(src);
22
-
23
- if (uid === 0) {
24
- uid = stats.uid;
25
- }
26
-
27
- if (gid === 0) {
28
- gid = stats.gid;
29
- }
30
-
31
- if (stats.isDirectory()) {
32
- const list = fs.readdirSync(src);
33
-
34
- for (const loc of list) {
35
- chownSync(`${src}${sep}${loc}`, uid, gid);
36
- }
37
- }
38
-
39
- fs.chownSync(src, uid, gid);
40
- }
41
-
42
- export function copySync(src: string, dir: string, umask: number) {
43
- const stat = fs.statSync(src);
44
-
45
- if (stat.isDirectory()) {
46
- const list = fs.readdirSync(src);
47
-
48
- const paths = src.split(sep);
49
- const loc = paths[paths.length - 1];
50
- const mode = 0o777 - umask;
51
-
52
- dir = `${dir}${sep}${loc}`;
53
- fs.mkdirSync(dir, mode);
54
-
55
- for (const loc of list) {
56
- copySync(`${src}${sep}${loc}`, dir, umask);
57
- }
58
- }
59
- else {
60
- const loc = path.basename(src);
61
- const use = `${dir}${sep}${loc}`;
62
-
63
- fs.copyFileSync(src, use);
64
- }
65
- }
66
-
67
- export function removeSync(src: string) {
68
- const stats = fs.statSync(src);
69
-
70
- if (stats.isDirectory()) {
71
- const list = fs.readdirSync(src);
72
-
73
- for (const loc of list) {
74
- removeSync(`${src}${sep}${loc}`);
75
- }
76
-
77
- fs.rmdirSync(src);
78
- }
79
- else {
80
- fs.unlinkSync(src);
81
- }
82
- }
83
-
84
- export function mkdirSync(dir: string, umask: number) {
85
- const mode = 0o777 - umask;
86
- const cwd = process.cwd();
87
- let use = '';
88
-
89
- if (dir.indexOf(cwd) === 0) {
90
- use = cwd;
91
- dir = dir.substring(cwd.length);
92
- }
93
-
94
- const ways = dir.split(sep).slice(1);
95
-
96
- for (const loc of ways) {
97
- use += `${sep}${loc}`;
98
-
99
- try {
100
- fs.mkdirSync(use, { mode });
101
- }
102
- catch (err) {
103
- if (err.errno !== -17) {
104
- throw err;
105
- }
106
- }
107
- }
108
- }