async-file-tried 1.1.0 → 1.2.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.
- package/README.md +39 -9
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +42 -1
- package/dist/index.js.map +1 -1
- package/index.ts +50 -3
- package/package.json +3 -2
- package/test/index.test.js +36 -8
- package/want.md +4 -0
- package/test/static-testfiles/file.txt +0 -0
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Async-file-tried
|
|
2
2
|
|
|
3
3
|
*async-file-tried* is a wrapper around node’s `fs/promises` that abstracts the try-catch block for you.
|
|
4
|
-
Write more linear, better readable code by getting a concise response. TypeScript supported.
|
|
4
|
+
Write more linear, better readable code by getting a concise response. Dependency free. TypeScript supported.
|
|
5
5
|
|
|
6
6
|
[](https://opensource.org/licenses/MIT)
|
|
7
7
|

|
|
@@ -11,7 +11,7 @@ Write more linear, better readable code by getting a concise response. TypeScrip
|
|
|
11
11
|
|
|
12
12
|
## License
|
|
13
13
|
|
|
14
|
-
Copyright (c) 2023 Florian Walzel,
|
|
14
|
+
Copyright (c) 2023–24 Florian Walzel,
|
|
15
15
|
MIT License
|
|
16
16
|
|
|
17
17
|
## Install
|
|
@@ -23,7 +23,7 @@ npm install async-file-tried
|
|
|
23
23
|
Import:
|
|
24
24
|
|
|
25
25
|
```javascript
|
|
26
|
-
import
|
|
26
|
+
import fs from 'async-file-tried';
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
## Usage
|
|
@@ -52,17 +52,19 @@ catch (err) {
|
|
|
52
52
|
|
|
53
53
|
## Extra: joined paths
|
|
54
54
|
|
|
55
|
-
*async-file-tried* also has an in-built path.join() so that you can alternatively pass
|
|
55
|
+
*async-file-tried* also has an in-built `path.join()` so that you can alternatively pass the path argument as array of sub-elements.
|
|
56
56
|
|
|
57
57
|
You can write i.e.:
|
|
58
58
|
|
|
59
59
|
```javascript
|
|
60
|
-
let [res, err] = await fs.appendFile(
|
|
60
|
+
let [res, err] = await fs.appendFile(
|
|
61
|
+
['fs.__dirname', '..' , 'myfolder', `img_${i}.txt`],
|
|
62
|
+
'my text');
|
|
61
63
|
```
|
|
62
64
|
|
|
63
|
-
... and the
|
|
65
|
+
... and the path string will be composed automatically.
|
|
64
66
|
|
|
65
|
-
##
|
|
67
|
+
## Public Functions
|
|
66
68
|
|
|
67
69
|
### FS Function List
|
|
68
70
|
|
|
@@ -199,14 +201,42 @@ let [res, err] = await fs.appendFile(['fs.__dirname', '..' , 'myfolder', `img_${
|
|
|
199
201
|
|
|
200
202
|
### Bonus Functions
|
|
201
203
|
|
|
204
|
+
- fs.exists
|
|
205
|
+
+ Checks if a file or directory exists, returns boolean
|
|
206
|
+
+ Typescript implementation: `async (path: string|Array<string>)`
|
|
207
|
+
+ Usage example: `let res = await fs.exists('file.txt');`
|
|
208
|
+
|
|
209
|
+
- fs.ensureDir
|
|
210
|
+
+ Checks if a directory exists, creates it if not
|
|
211
|
+
+ Typescript implementation: `async (dir: string|Array<string>)`
|
|
212
|
+
+ Usage example: `let res = await fs.ensureDir('./my-dir');`
|
|
213
|
+
|
|
202
214
|
- fs.readJson
|
|
203
215
|
+ Reads a JSON file and returns it as parsed Javascript object.
|
|
204
216
|
+ Typescript implementation: `async (path: string|Array<string>, options?: Encoding)`
|
|
205
217
|
+ Usage example: `let [res, err] = await fs.readJson('my.json');`
|
|
206
218
|
|
|
207
219
|
- fs.writeJson
|
|
208
|
-
+ Expects a Javascript object
|
|
220
|
+
+ Expects a Javascript object, will stringify it and write it out as JSON.
|
|
209
221
|
+ Typescript implementation: `async (path: string|Array<string>, data: Object, options?: Encoding)`
|
|
210
|
-
+ Usage example: `let [res, err] = await fs.writeJson('
|
|
222
|
+
+ Usage example: `let [res, err] = await fs.writeJson('my.json', { key : "value" });`
|
|
223
|
+
|
|
224
|
+
- fs.readTextFile
|
|
225
|
+
+ Reads a text file as UTF8
|
|
226
|
+
+ Typescript implementation: `async (path: string|Array<string>)`
|
|
227
|
+
+ Usage example: `let [res, err] = await fs.readTextFile('file.txt');`
|
|
228
|
+
|
|
229
|
+
- fs.writeTextFile
|
|
230
|
+
+ Writes out a String as UTF8
|
|
231
|
+
+ Typescript implementation: `async (path: string|Array<string>, data: string)`
|
|
232
|
+
+ Usage example: `let [res, err] = await fs.writeTextFile('file.txt', 'Hello world!');`
|
|
233
|
+
|
|
234
|
+
### The Async Handler
|
|
211
235
|
|
|
236
|
+
This Handler is behind all Async-file-tried functions. You can pass any function (wrapped in an anonymous function) to it,
|
|
237
|
+
and the Result/ Error will be returned as tuple.
|
|
212
238
|
|
|
239
|
+
- fs.asyncHandler
|
|
240
|
+
+ Takes any asynchronous Function and will internally wrap a try-catch block around it. The Return is given in the tuple pattern `[res, err]`.
|
|
241
|
+
+ Typescript implementation: `asyncHandler = async (func: Function)`
|
|
242
|
+
+ Usage example: `let [res, err] = await fs.asyncHandler(() => await myCustomFunction(someParam));`
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import * as fsNormal from 'node:fs';
|
|
3
2
|
import { CopyOptions } from "node:fs";
|
|
4
3
|
/****************************************
|
|
@@ -22,7 +21,7 @@ declare const fs: {
|
|
|
22
21
|
link: (existingPath: string | Array<string>, newPath: string | Array<string>) => Promise<any[]>;
|
|
23
22
|
lstat: (path: string | Array<string>, options?: object) => Promise<any[]>;
|
|
24
23
|
lutimes: (path: string | Array<string>, atime: Date | number, mtime: Date | number) => Promise<any[]>;
|
|
25
|
-
mkdir: (path: string | Array<string>, options?: number | string) => Promise<any[]>;
|
|
24
|
+
mkdir: (path: string | Array<string>, options?: number | string | object) => Promise<any[]>;
|
|
26
25
|
mkdtemp: (prefix: string, encoding?: Encoding) => Promise<any[]>;
|
|
27
26
|
open: (path: string | Array<string>, flags?: Flags, mode?: number | string) => Promise<any[]>;
|
|
28
27
|
opendir: (path: string | Array<string>, options?: object) => Promise<any[]>;
|
|
@@ -44,8 +43,12 @@ declare const fs: {
|
|
|
44
43
|
__dirname: string;
|
|
45
44
|
__filename: string;
|
|
46
45
|
asyncHandler: (func: Function) => Promise<any[]>;
|
|
46
|
+
exists: (path: string | Array<string>) => Promise<boolean>;
|
|
47
|
+
ensureDir: (dir: string | Array<string>) => Promise<boolean>;
|
|
47
48
|
readJson: (path: string | Array<string>, options?: Encoding) => Promise<any[]>;
|
|
48
49
|
writeJson: (path: string | Array<string>, data: Object, options?: Encoding) => Promise<any[]>;
|
|
50
|
+
readTextFile: (path: string | Array<string>) => Promise<any[]>;
|
|
51
|
+
writeTextFile: (path: string | Array<string>, data: string) => Promise<any[]>;
|
|
49
52
|
};
|
|
50
53
|
export default fs;
|
|
51
54
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -348,8 +348,28 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
|
348
348
|
*/
|
|
349
349
|
const __filename = fileURLToPath(import.meta.url);
|
|
350
350
|
/****************************************
|
|
351
|
-
*
|
|
351
|
+
* Bonus Functions
|
|
352
352
|
****************************************/
|
|
353
|
+
/**
|
|
354
|
+
*
|
|
355
|
+
* @param path
|
|
356
|
+
*/
|
|
357
|
+
const exists = async (path) => {
|
|
358
|
+
const pathResolved = __resolvePath(path);
|
|
359
|
+
let [res, err] = await access(pathResolved);
|
|
360
|
+
return !err;
|
|
361
|
+
};
|
|
362
|
+
/**
|
|
363
|
+
*
|
|
364
|
+
* @param dir
|
|
365
|
+
*/
|
|
366
|
+
const ensureDir = async (dir) => {
|
|
367
|
+
const pathResolved = __resolvePath(dir);
|
|
368
|
+
let [acc, err] = await access(pathResolved);
|
|
369
|
+
if (err)
|
|
370
|
+
await mkdir(pathResolved, { recursive: true });
|
|
371
|
+
return true;
|
|
372
|
+
};
|
|
353
373
|
/**
|
|
354
374
|
*
|
|
355
375
|
* @param path
|
|
@@ -374,6 +394,23 @@ const writeJson = async (path, data, options) => {
|
|
|
374
394
|
const pathResolved = __resolvePath(path);
|
|
375
395
|
return await asyncHandler(() => fsp.writeFile(pathResolved, JSON.stringify(data, null, 2), options ?? 'utf8'));
|
|
376
396
|
};
|
|
397
|
+
/**
|
|
398
|
+
*
|
|
399
|
+
* @param path
|
|
400
|
+
*/
|
|
401
|
+
const readTextFile = async (path) => {
|
|
402
|
+
const pathResolved = __resolvePath(path);
|
|
403
|
+
return await asyncHandler(() => fsp.readFile(pathResolved, 'utf8'));
|
|
404
|
+
};
|
|
405
|
+
/**
|
|
406
|
+
*
|
|
407
|
+
* @param path
|
|
408
|
+
* @param data
|
|
409
|
+
*/
|
|
410
|
+
const writeTextFile = async (path, data) => {
|
|
411
|
+
const pathResolved = __resolvePath(path);
|
|
412
|
+
return await asyncHandler(() => fsp.writeFile(pathResolved, data, 'utf8'));
|
|
413
|
+
};
|
|
377
414
|
const fs = {
|
|
378
415
|
access,
|
|
379
416
|
appendFile,
|
|
@@ -408,8 +445,12 @@ const fs = {
|
|
|
408
445
|
__dirname,
|
|
409
446
|
__filename,
|
|
410
447
|
asyncHandler,
|
|
448
|
+
exists,
|
|
449
|
+
ensureDir,
|
|
411
450
|
readJson,
|
|
412
451
|
writeJson,
|
|
452
|
+
readTextFile,
|
|
453
|
+
writeTextFile,
|
|
413
454
|
};
|
|
414
455
|
if (process.env.NODE_ENV === 'TEST')
|
|
415
456
|
fs['__resolvePath'] = __resolvePath;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,OAAO,KAAK,QAAQ,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC;;0CAE0C;AAE1C;;;;GAIG;AACH,MAAM,aAAa,GAAG,CAAC,QAA8B,EAAE,EAAE;IACvD,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC5B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;QACxB,CAAC,CAAC,QAAQ,CAAA;AACd,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,YAAY,GAAG,KAAK,EAAE,IAAc,EAAE,EAAE;IAC5C,IAAI;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/index.ts
CHANGED
|
@@ -172,7 +172,7 @@ const lutimes = async (path: string|Array<string>, atime: Date|number, mtime: Da
|
|
|
172
172
|
* @param options
|
|
173
173
|
* @returns {Promise<*[]>}
|
|
174
174
|
*/
|
|
175
|
-
const mkdir = async (path: string|Array<string>, options?: number|string) => {
|
|
175
|
+
const mkdir = async (path: string|Array<string>, options?: number|string|object) => {
|
|
176
176
|
const pathResolved = __resolvePath(path);
|
|
177
177
|
return await asyncHandler(() => fsp.mkdir(pathResolved, options));
|
|
178
178
|
};
|
|
@@ -391,9 +391,31 @@ const __filename = fileURLToPath(import.meta.url);
|
|
|
391
391
|
|
|
392
392
|
|
|
393
393
|
/****************************************
|
|
394
|
-
*
|
|
394
|
+
* Bonus Functions
|
|
395
395
|
****************************************/
|
|
396
396
|
|
|
397
|
+
/**
|
|
398
|
+
*
|
|
399
|
+
* @param path
|
|
400
|
+
*/
|
|
401
|
+
const exists = async (path: string|Array<string>) => {
|
|
402
|
+
const pathResolved = __resolvePath(path);
|
|
403
|
+
let [res, err] = await access(pathResolved);
|
|
404
|
+
return !err
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
/**
|
|
408
|
+
*
|
|
409
|
+
* @param dir
|
|
410
|
+
*/
|
|
411
|
+
const ensureDir = async (dir: string|Array<string>)=> {
|
|
412
|
+
const pathResolved = __resolvePath(dir);
|
|
413
|
+
let [acc, err] = await access(pathResolved);
|
|
414
|
+
if (err)
|
|
415
|
+
await mkdir(pathResolved, { recursive: true })
|
|
416
|
+
return true;
|
|
417
|
+
};
|
|
418
|
+
|
|
397
419
|
/**
|
|
398
420
|
*
|
|
399
421
|
* @param path
|
|
@@ -420,6 +442,27 @@ const writeJson = async (path: string|Array<string>, data: Object, options?: Enc
|
|
|
420
442
|
return await asyncHandler(() => fsp.writeFile(pathResolved, JSON.stringify(data, null, 2), options ?? 'utf8'));
|
|
421
443
|
};
|
|
422
444
|
|
|
445
|
+
/**
|
|
446
|
+
*
|
|
447
|
+
* @param path
|
|
448
|
+
*/
|
|
449
|
+
const readTextFile = async (path: string|Array<string>) => {
|
|
450
|
+
const pathResolved = __resolvePath(path);
|
|
451
|
+
return await asyncHandler(() => fsp.readFile(pathResolved, 'utf8'));
|
|
452
|
+
};
|
|
453
|
+
|
|
454
|
+
/**
|
|
455
|
+
*
|
|
456
|
+
* @param path
|
|
457
|
+
* @param data
|
|
458
|
+
*/
|
|
459
|
+
const writeTextFile = async (path: string|Array<string>, data: string)=> {
|
|
460
|
+
const pathResolved = __resolvePath(path);
|
|
461
|
+
return await asyncHandler(() => fsp.writeFile(pathResolved, data, 'utf8'));
|
|
462
|
+
};
|
|
463
|
+
|
|
464
|
+
|
|
465
|
+
|
|
423
466
|
|
|
424
467
|
/****************************************
|
|
425
468
|
* Export
|
|
@@ -462,11 +505,15 @@ const fs = {
|
|
|
462
505
|
__dirname,
|
|
463
506
|
__filename,
|
|
464
507
|
asyncHandler,
|
|
508
|
+
exists,
|
|
509
|
+
ensureDir,
|
|
465
510
|
readJson,
|
|
466
511
|
writeJson,
|
|
512
|
+
readTextFile,
|
|
513
|
+
writeTextFile,
|
|
467
514
|
};
|
|
468
515
|
|
|
469
516
|
if (process.env.NODE_ENV === 'TEST')
|
|
470
517
|
fs['__resolvePath'] = __resolvePath;
|
|
471
518
|
|
|
472
|
-
export default fs;
|
|
519
|
+
export default fs;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "async-file-tried",
|
|
3
|
-
"version": "1.1
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "A try-catch wrapper around node’s fs/promises.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -24,7 +24,8 @@
|
|
|
24
24
|
"@types/node": "^20.9.5",
|
|
25
25
|
"c8": "^8.0.1",
|
|
26
26
|
"chai": "^4.3.6",
|
|
27
|
-
"mocha": "^10.1.0"
|
|
27
|
+
"mocha": "^10.1.0",
|
|
28
|
+
"typescript": "^5.7.2"
|
|
28
29
|
},
|
|
29
30
|
"keywords": [
|
|
30
31
|
"fs promises",
|
package/test/index.test.js
CHANGED
|
@@ -364,30 +364,58 @@ describe('Tests for async-file-tried', () => {
|
|
|
364
364
|
assert.equal(err, null);
|
|
365
365
|
});
|
|
366
366
|
|
|
367
|
-
it('[62] ERR: fs.
|
|
367
|
+
it('[62] ERR: fs.exists shall return FALSE when file does not exist', async () => {
|
|
368
|
+
let res = await fs.exists('somenonexistentpath.txt');
|
|
369
|
+
assert.equal(res, false);
|
|
370
|
+
});
|
|
371
|
+
|
|
372
|
+
it('[63] RES: fs.exists shall return TRUE file exists', async () => {
|
|
373
|
+
let res = await fs.exists('./test/static-testfiles/file.txt');
|
|
374
|
+
assert.equal(res, true);
|
|
375
|
+
});
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
it('[64] RES: fs.exists shall return TRUE if folder exists', async () => {
|
|
379
|
+
let res = await fs.ensureDir('./test/static-testfiles');
|
|
380
|
+
assert.equal(res, true);
|
|
381
|
+
});
|
|
382
|
+
|
|
383
|
+
it('[65] RES: fs.exists shall return TRUE if folder was created', async () => {
|
|
384
|
+
let res = await fs.ensureDir('./test/static-testfiles/ensure-folder');
|
|
385
|
+
assert.equal(res, true);
|
|
386
|
+
});
|
|
387
|
+
|
|
388
|
+
it('[66] ERR: fs.writeJson shall error when file does not exist', async () => {
|
|
368
389
|
let [res, err] = await fs.writeJson('', '');
|
|
369
390
|
assert.notEqual(err, null);
|
|
370
391
|
});
|
|
371
392
|
|
|
372
|
-
it('[
|
|
393
|
+
it('[67] RES: fs.writeJson shall return valid result when JSON was written', async () => {
|
|
373
394
|
let [res, err] = await fs.writeJson('./test/static-testfiles/test.json', { key : "value" });
|
|
374
395
|
assert.equal(err, null);
|
|
375
396
|
});
|
|
376
397
|
|
|
377
|
-
it('[
|
|
398
|
+
it('[68] ERR: fs.readJson shall error when file does not exist', async () => {
|
|
378
399
|
let [res, err] = await fs.readJson('');
|
|
379
400
|
assert.notEqual(err, null);
|
|
380
401
|
});
|
|
381
402
|
|
|
382
|
-
it('[
|
|
403
|
+
it('[69] RES: fs.readJson shall return object when JSON was read', async () => {
|
|
383
404
|
let [res, err] = await fs.readJson('./test/static-testfiles/test.json', 'utf8');
|
|
384
405
|
assert.isObject(res);
|
|
385
406
|
});
|
|
386
407
|
|
|
408
|
+
it('Cleanup', async () => {
|
|
409
|
+
// cleanup symlink from test run:
|
|
410
|
+
await fs.unlink('./test/static-testfiles/symlinkToFile-append.txt');
|
|
411
|
+
|
|
412
|
+
// cleanup symlink from test run:
|
|
413
|
+
await fs.rm('./test/static-testfiles/file.txt');
|
|
414
|
+
|
|
415
|
+
// cleanup symlink from test run:
|
|
416
|
+
await fs.rmdir('./test/static-testfiles/ensure-folder');
|
|
417
|
+
});
|
|
418
|
+
|
|
387
419
|
});
|
|
388
420
|
|
|
389
|
-
// cleanup symlink from test run:
|
|
390
|
-
await fs.unlink('./test/static-testfiles/symlinkToFile-append.txt');
|
|
391
421
|
|
|
392
|
-
// cleanup symlink from test run:
|
|
393
|
-
await fs.rm('./test/static-testfiles/file.txt');
|
package/want.md
ADDED
|
File without changes
|