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