async-file-tried 1.1.0 → 1.2.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/README.md +28 -5
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +41 -1
- package/dist/index.js.map +1 -1
- package/index.ts +49 -3
- package/package.json +3 -2
- package/test/index.test.js +15 -5
- package/want.md +4 -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
|
|
@@ -199,14 +199,37 @@ let [res, err] = await fs.appendFile(['fs.__dirname', '..' , 'myfolder', `img_${
|
|
|
199
199
|
|
|
200
200
|
### Bonus Functions
|
|
201
201
|
|
|
202
|
+
- fs.exists
|
|
203
|
+
+ Checks if a file or directory exists, returns boolean
|
|
204
|
+
+ Typescript implementation: `async (path: string|Array<string>)`
|
|
205
|
+
+ Usage example: `let res = await fs.exists('file.txt');`
|
|
206
|
+
|
|
207
|
+
- fs.ensureDir
|
|
208
|
+
+ Checks if a directory exists, creates it if not
|
|
209
|
+
+ Typescript implementation: `async (dir: string|Array<string>)`
|
|
210
|
+
+ Usage example: `let res = await fs.ensureDir('./my-dir');`
|
|
211
|
+
|
|
202
212
|
- fs.readJson
|
|
203
213
|
+ Reads a JSON file and returns it as parsed Javascript object.
|
|
204
214
|
+ Typescript implementation: `async (path: string|Array<string>, options?: Encoding)`
|
|
205
215
|
+ Usage example: `let [res, err] = await fs.readJson('my.json');`
|
|
206
216
|
|
|
207
217
|
- fs.writeJson
|
|
208
|
-
+ Expects a Javascript object
|
|
218
|
+
+ Expects a Javascript object, will stringify it and write it out as JSON.
|
|
209
219
|
+ Typescript implementation: `async (path: string|Array<string>, data: Object, options?: Encoding)`
|
|
210
|
-
+ Usage example: `let [res, err] = await fs.writeJson('
|
|
220
|
+
+ Usage example: `let [res, err] = await fs.writeJson('my.json', { key : "value" });`
|
|
221
|
+
|
|
222
|
+
- fs.readTextFile
|
|
223
|
+
+ Reads a text file as UTF8
|
|
224
|
+
+ Typescript implementation: `async (path: string|Array<string>)`
|
|
225
|
+
+ Usage example: `let [res, err] = await fs.readTextFile('file.txt');`
|
|
211
226
|
|
|
227
|
+
- fs.writeTextFile
|
|
228
|
+
+ Writes out a String as UTF8
|
|
229
|
+
+ Typescript implementation: `async (path: string|Array<string>, data: string)`
|
|
230
|
+
+ Usage example: `let [res, err] = await fs.writeTextFile('file.txt', 'Hello world!');`
|
|
212
231
|
|
|
232
|
+
- fs.asyncHandler
|
|
233
|
+
+ Takes any asynchronous Function and will internally wrap a try-catch block around it. The Return is given in the tuple pattern `[res, err]`.
|
|
234
|
+
+ Typescript implementation: `asyncHandler = async (func: Function)`
|
|
235
|
+
+ 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<any[]>;
|
|
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,27 @@ 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
|
+
return await mkdir(pathResolved, { recursive: true });
|
|
371
|
+
};
|
|
353
372
|
/**
|
|
354
373
|
*
|
|
355
374
|
* @param path
|
|
@@ -374,6 +393,23 @@ const writeJson = async (path, data, options) => {
|
|
|
374
393
|
const pathResolved = __resolvePath(path);
|
|
375
394
|
return await asyncHandler(() => fsp.writeFile(pathResolved, JSON.stringify(data, null, 2), options ?? 'utf8'));
|
|
376
395
|
};
|
|
396
|
+
/**
|
|
397
|
+
*
|
|
398
|
+
* @param path
|
|
399
|
+
*/
|
|
400
|
+
const readTextFile = async (path) => {
|
|
401
|
+
const pathResolved = __resolvePath(path);
|
|
402
|
+
return await asyncHandler(() => fsp.readFile(pathResolved, 'utf8'));
|
|
403
|
+
};
|
|
404
|
+
/**
|
|
405
|
+
*
|
|
406
|
+
* @param path
|
|
407
|
+
* @param data
|
|
408
|
+
*/
|
|
409
|
+
const writeTextFile = async (path, data) => {
|
|
410
|
+
const pathResolved = __resolvePath(path);
|
|
411
|
+
return await asyncHandler(() => fsp.writeFile(pathResolved, data, 'utf8'));
|
|
412
|
+
};
|
|
377
413
|
const fs = {
|
|
378
414
|
access,
|
|
379
415
|
appendFile,
|
|
@@ -408,8 +444,12 @@ const fs = {
|
|
|
408
444
|
__dirname,
|
|
409
445
|
__filename,
|
|
410
446
|
asyncHandler,
|
|
447
|
+
exists,
|
|
448
|
+
ensureDir,
|
|
411
449
|
readJson,
|
|
412
450
|
writeJson,
|
|
451
|
+
readTextFile,
|
|
452
|
+
writeTextFile,
|
|
413
453
|
};
|
|
414
454
|
if (process.env.NODE_ENV === 'TEST')
|
|
415
455
|
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,30 @@ 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
|
+
return await mkdir(pathResolved, { recursive: true })
|
|
416
|
+
};
|
|
417
|
+
|
|
397
418
|
/**
|
|
398
419
|
*
|
|
399
420
|
* @param path
|
|
@@ -420,6 +441,27 @@ const writeJson = async (path: string|Array<string>, data: Object, options?: Enc
|
|
|
420
441
|
return await asyncHandler(() => fsp.writeFile(pathResolved, JSON.stringify(data, null, 2), options ?? 'utf8'));
|
|
421
442
|
};
|
|
422
443
|
|
|
444
|
+
/**
|
|
445
|
+
*
|
|
446
|
+
* @param path
|
|
447
|
+
*/
|
|
448
|
+
const readTextFile = async (path: string|Array<string>) => {
|
|
449
|
+
const pathResolved = __resolvePath(path);
|
|
450
|
+
return await asyncHandler(() => fsp.readFile(pathResolved, 'utf8'));
|
|
451
|
+
};
|
|
452
|
+
|
|
453
|
+
/**
|
|
454
|
+
*
|
|
455
|
+
* @param path
|
|
456
|
+
* @param data
|
|
457
|
+
*/
|
|
458
|
+
const writeTextFile = async (path: string|Array<string>, data: string)=> {
|
|
459
|
+
const pathResolved = __resolvePath(path);
|
|
460
|
+
return await asyncHandler(() => fsp.writeFile(pathResolved, data, 'utf8'));
|
|
461
|
+
};
|
|
462
|
+
|
|
463
|
+
|
|
464
|
+
|
|
423
465
|
|
|
424
466
|
/****************************************
|
|
425
467
|
* Export
|
|
@@ -462,11 +504,15 @@ const fs = {
|
|
|
462
504
|
__dirname,
|
|
463
505
|
__filename,
|
|
464
506
|
asyncHandler,
|
|
507
|
+
exists,
|
|
508
|
+
ensureDir,
|
|
465
509
|
readJson,
|
|
466
510
|
writeJson,
|
|
511
|
+
readTextFile,
|
|
512
|
+
writeTextFile,
|
|
467
513
|
};
|
|
468
514
|
|
|
469
515
|
if (process.env.NODE_ENV === 'TEST')
|
|
470
516
|
fs['__resolvePath'] = __resolvePath;
|
|
471
517
|
|
|
472
|
-
export default fs;
|
|
518
|
+
export default fs;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "async-file-tried",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
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,22 +364,32 @@ 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] ERR: fs.exists shall return TRUE file does not exist', async () => {
|
|
373
|
+
let res = await fs.exists('./test/static-testfiles/file.txt');
|
|
374
|
+
assert.equal(res, true);
|
|
375
|
+
});
|
|
376
|
+
|
|
377
|
+
it('[64] ERR: fs.writeJson shall error when file does not exist', async () => {
|
|
368
378
|
let [res, err] = await fs.writeJson('', '');
|
|
369
379
|
assert.notEqual(err, null);
|
|
370
380
|
});
|
|
371
381
|
|
|
372
|
-
it('[
|
|
382
|
+
it('[65] RES: fs.writeJson shall return valid result when JSON was written', async () => {
|
|
373
383
|
let [res, err] = await fs.writeJson('./test/static-testfiles/test.json', { key : "value" });
|
|
374
384
|
assert.equal(err, null);
|
|
375
385
|
});
|
|
376
386
|
|
|
377
|
-
it('[
|
|
387
|
+
it('[66] ERR: fs.readJson shall error when file does not exist', async () => {
|
|
378
388
|
let [res, err] = await fs.readJson('');
|
|
379
389
|
assert.notEqual(err, null);
|
|
380
390
|
});
|
|
381
391
|
|
|
382
|
-
it('[
|
|
392
|
+
it('[67] RES: fs.readJson shall return object when JSON was read', async () => {
|
|
383
393
|
let [res, err] = await fs.readJson('./test/static-testfiles/test.json', 'utf8');
|
|
384
394
|
assert.isObject(res);
|
|
385
395
|
});
|
|
@@ -390,4 +400,4 @@ describe('Tests for async-file-tried', () => {
|
|
|
390
400
|
await fs.unlink('./test/static-testfiles/symlinkToFile-append.txt');
|
|
391
401
|
|
|
392
402
|
// cleanup symlink from test run:
|
|
393
|
-
await fs.rm('./test/static-testfiles/file.txt');
|
|
403
|
+
await fs.rm('./test/static-testfiles/file.txt');
|
package/want.md
ADDED