@alwatr/node-fs 1.0.3 → 1.0.5

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/CHANGELOG.md CHANGED
@@ -3,6 +3,20 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [1.0.5](https://github.com/Alwatr/nanolib/compare/@alwatr/node-fs@1.0.4...@alwatr/node-fs@1.0.5) (2024-03-28)
7
+
8
+ **Note:** Version bump only for package @alwatr/node-fs
9
+
10
+ ## [1.0.4](https://github.com/Alwatr/nanolib/compare/@alwatr/node-fs@1.0.3...@alwatr/node-fs@1.0.4) (2024-01-31)
11
+
12
+ ### Bug Fixes
13
+
14
+ * exported types by add .js extensions to all imports ([fc3d83e](https://github.com/Alwatr/nanolib/commit/fc3d83e8f375da97ba276314b2e6966aa82c9b3f)) by @AliMD
15
+
16
+ ### Miscellaneous Chores
17
+
18
+ * **deps:** update ([1a45030](https://github.com/Alwatr/nanolib/commit/1a450305440b710a300787d4ca24b1ed8c6a39d7)) by @AliMD
19
+
6
20
  ## [1.0.3](https://github.com/Alwatr/nanolib/compare/@alwatr/node-fs@1.0.2...@alwatr/node-fs@1.0.3) (2024-01-24)
7
21
 
8
22
  **Note:** Version bump only for package @alwatr/node-fs
@@ -19,25 +33,25 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
19
33
 
20
34
  ### Features
21
35
 
22
- * **node-fs:** enhance type of JSON-related functions ([69751ed](https://github.com/Alwatr/nanolib/commit/69751ed658f76eb439a9834f861c01c06542352b)) by @AliMD
36
+ - **node-fs:** enhance type of JSON-related functions ([69751ed](https://github.com/Alwatr/nanolib/commit/69751ed658f76eb439a9834f861c01c06542352b)) by @AliMD
23
37
 
24
38
  # 1.0.0-beta.0 (2024-01-08)
25
39
 
26
40
  ### Bug Fixes
27
41
 
28
- * **node-fs:** Update import statement for make-file module ([7bddaa0](https://github.com/Alwatr/nanolib/commit/7bddaa0d629c304fedd07c4022d7503aa9b974b6)) by @AliMD
42
+ - **node-fs:** Update import statement for make-file module ([7bddaa0](https://github.com/Alwatr/nanolib/commit/7bddaa0d629c304fedd07c4022d7503aa9b974b6)) by @AliMD
29
43
 
30
44
  ### Features
31
45
 
32
- * **node-fs:** Add make-file-bench demo script ([ca3a57a](https://github.com/Alwatr/nanolib/commit/ca3a57a31de5a8b9c76c9d33cb9755809f09a335)) by @AliMD
33
- * **node-fs:** base package ([74cbe48](https://github.com/Alwatr/nanolib/commit/74cbe4821c991d1f6c3d5805b29602b922c3f505)) by @njfamirm
34
- * **node-fs:** copy from store ([5c23e01](https://github.com/Alwatr/nanolib/commit/5c23e01e42d438c15dcd272d2cc351527865c86c)) by @njfamirm
35
- * **node-fs:** definePackage and logger ([3880703](https://github.com/Alwatr/nanolib/commit/38807039895c784be6168111506b0721980cbb29)) by @njfamirm
36
- * **node-fs:** demo ([31f3740](https://github.com/Alwatr/nanolib/commit/31f37405a7bb2b4b02440de7f96f5cc8a474aba9)) by @njfamirm
37
- * **node-fs:** enhance json types ([e85d927](https://github.com/Alwatr/nanolib/commit/e85d9276374a8c5171901791a3a43acad64843a6)) by @AliMD
38
- * **node-fs:** enhance writeJson type ([9010c72](https://github.com/Alwatr/nanolib/commit/9010c723b1f34cd647f157466554b312fc84a1d3)) by @AliMD
39
- * **node-fs:** makeFile ([186ba09](https://github.com/Alwatr/nanolib/commit/186ba09822bddfe200a0ac4725063785cadd0999)) by @njfamirm
40
- * **node-fs:** readFile under asyncQueue ([ab12153](https://github.com/Alwatr/nanolib/commit/ab12153281600a4ac90ef627811b430a95140ddd)) by @AliMD
41
- * **node-fs:** rewrite new writeFile method ([7534ed1](https://github.com/Alwatr/nanolib/commit/7534ed158cdfe1ee593050255c17449960b13001)) by @AliMD
42
- * **node-fs:** writeFile under asyncQueue ([6d8b3d7](https://github.com/Alwatr/nanolib/commit/6d8b3d7953938fc954e8ce350206555030560978)) by @AliMD
43
- * **node-fs:** writeJson method ([581d4f9](https://github.com/Alwatr/nanolib/commit/581d4f958ccb262c13f23881151616b7ec5e93ee)) by @AliMD
46
+ - **node-fs:** Add make-file-bench demo script ([ca3a57a](https://github.com/Alwatr/nanolib/commit/ca3a57a31de5a8b9c76c9d33cb9755809f09a335)) by @AliMD
47
+ - **node-fs:** base package ([74cbe48](https://github.com/Alwatr/nanolib/commit/74cbe4821c991d1f6c3d5805b29602b922c3f505)) by @njfamirm
48
+ - **node-fs:** copy from store ([5c23e01](https://github.com/Alwatr/nanolib/commit/5c23e01e42d438c15dcd272d2cc351527865c86c)) by @njfamirm
49
+ - **node-fs:** definePackage and logger ([3880703](https://github.com/Alwatr/nanolib/commit/38807039895c784be6168111506b0721980cbb29)) by @njfamirm
50
+ - **node-fs:** demo ([31f3740](https://github.com/Alwatr/nanolib/commit/31f37405a7bb2b4b02440de7f96f5cc8a474aba9)) by @njfamirm
51
+ - **node-fs:** enhance json types ([e85d927](https://github.com/Alwatr/nanolib/commit/e85d9276374a8c5171901791a3a43acad64843a6)) by @AliMD
52
+ - **node-fs:** enhance writeJson type ([9010c72](https://github.com/Alwatr/nanolib/commit/9010c723b1f34cd647f157466554b312fc84a1d3)) by @AliMD
53
+ - **node-fs:** makeFile ([186ba09](https://github.com/Alwatr/nanolib/commit/186ba09822bddfe200a0ac4725063785cadd0999)) by @njfamirm
54
+ - **node-fs:** readFile under asyncQueue ([ab12153](https://github.com/Alwatr/nanolib/commit/ab12153281600a4ac90ef627811b430a95140ddd)) by @AliMD
55
+ - **node-fs:** rewrite new writeFile method ([7534ed1](https://github.com/Alwatr/nanolib/commit/7534ed158cdfe1ee593050255c17449960b13001)) by @AliMD
56
+ - **node-fs:** writeFile under asyncQueue ([6d8b3d7](https://github.com/Alwatr/nanolib/commit/6d8b3d7953938fc954e8ce350206555030560978)) by @AliMD
57
+ - **node-fs:** writeJson method ([581d4f9](https://github.com/Alwatr/nanolib/commit/581d4f958ccb262c13f23881151616b7ec5e93ee)) by @AliMD
package/dist/main.cjs CHANGED
@@ -1,3 +1,3 @@
1
- /* @alwatr/node-fs v1.0.3 */
2
- "use strict";var c=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var k=(r,e)=>{for(var i in e)c(r,i,{get:e[i],enumerable:!0})},A=(r,e,i,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of P(e))!b.call(r,a)&&a!==i&&c(r,a,{get:()=>e[a],enumerable:!(n=V(e,a))||n.enumerable});return r};var h=r=>A(c({},"__esModule",{value:!0}),r);var N={};k(N,{existsSync:()=>v.existsSync,makeEmptyFile:()=>Q,readFile:()=>u,readFileSync:()=>m,readJson:()=>j,resolve:()=>E.resolve,unlink:()=>M.unlink,writeFile:()=>y,writeFileSync:()=>g,writeJson:()=>O});module.exports=h(N);var w=require("@alwatr/async-queue"),x=require("@alwatr/logger"),o=(0,x.definePackage)("@alwatr/node-fs","1.0.3"),l=new w.AsyncQueue;var F=require("fs"),_=require("fs/promises"),f=require("@alwatr/flat-string");function m(r){o.logMethodArgs?.("readFileSync","..."+r.slice(-32));try{return(0,f.flatString)((0,F.readFileSync)(r,{encoding:"utf-8",flag:"r"}))}catch(e){throw o.error("readFileSync","read_file_failed",{path:r},e),new Error("read_file_failed",{cause:e.cause})}}function u(r){return o.logMethodArgs?.("readFile","..."+r.slice(-32)),l.push(r,async()=>{try{return(0,f.flatString)(await(0,_.readFile)(r,{encoding:"utf-8",flag:"r"}))}catch(e){throw o.error("readFile","read_file_failed",{path:r},e),new Error("read_file_failed",{cause:e.cause})}})}var t=require("fs"),s=require("fs/promises"),d=require("path");function g(r,e){o.logMethodArgs?.("writeFileSync","..."+r.slice(-32));try{let i=(0,t.existsSync)(r);if(!i){let n=(0,d.dirname)(r);(0,t.existsSync)(n)||(0,t.mkdirSync)(n,{recursive:!0})}(0,t.writeFileSync)(r+".tmp",e,{encoding:"utf-8",flag:"w"}),i&&(0,t.renameSync)(r,r+".bak"),(0,t.renameSync)(r+".tmp",r),o.logOther?.("writeFileSync success","..."+r.slice(-32))}catch(i){throw o.error("writeFileSync","write_file_failed",{path:r},i),new Error("write_file_failed",{cause:i.cause})}}function y(r,e){return o.logMethodArgs?.("writeFile","..."+r.slice(-32)),l.push(r,async()=>{try{o.logOther?.("writeFile start","..."+r.slice(-32));let i=(0,t.existsSync)(r);if(!i){let n=(0,d.dirname)(r);(0,t.existsSync)(n)||await(0,s.mkdir)(n,{recursive:!0})}await(0,s.writeFile)(r+".tmp",e,{encoding:"utf-8",flag:"w"}),i&&await(0,s.rename)(r,r+".bak"),await(0,s.rename)(r+".tmp",r),o.logOther?.("writeFile success","..."+r.slice(-32))}catch(i){throw o.error("writeFile","write_file_failed",{path:r},i),new Error("write_file_failed",{cause:i.cause})}})}function p(r){try{return JSON.parse(r)}catch(e){throw o.error("parseJson","invalid_json",e),new Error("invalid_json",{cause:e.cause})}}function J(r){try{return JSON.stringify(r)}catch(e){throw o.error("jsonStringify","stringify_failed",e),new Error("stringify_failed",{cause:e.cause})}}function j(r,e=!1){return o.logMethodArgs?.("readJson",{path:r.slice(-32),sync:e}),e===!0?p(m(r)):u(r).then(i=>p(i))}var S=require("@alwatr/flat-string");function O(r,e,i=!1){o.logMethodArgs?.("writeJson","..."+r.slice(-32));let n=(0,S.flatString)(J(e));return i===!0?g(r,n):y(r,n)}var T=require("fs/promises");async function Q(r){return o.logMethodArgs?.("makeEmptyFile","..."+r.slice(-32)),(await(0,T.open)(r,"w")).close()}var E=require("path"),v=require("fs"),M=require("fs/promises");0&&(module.exports={existsSync,makeEmptyFile,readFile,readFileSync,readJson,resolve,unlink,writeFile,writeFileSync,writeJson});
1
+ /* @alwatr/node-fs v1.0.5 */
2
+ "use strict";var c=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var k=(r,e)=>{for(var i in e)c(r,i,{get:e[i],enumerable:!0})},A=(r,e,i,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of P(e))!b.call(r,a)&&a!==i&&c(r,a,{get:()=>e[a],enumerable:!(n=V(e,a))||n.enumerable});return r};var h=r=>A(c({},"__esModule",{value:!0}),r);var N={};k(N,{existsSync:()=>v.existsSync,makeEmptyFile:()=>Q,readFile:()=>u,readFileSync:()=>m,readJson:()=>j,resolve:()=>E.resolve,unlink:()=>M.unlink,writeFile:()=>y,writeFileSync:()=>g,writeJson:()=>O});module.exports=h(N);var w=require("@alwatr/async-queue"),x=require("@alwatr/logger"),o=(0,x.definePackage)("@alwatr/node-fs","1.0.5"),l=new w.AsyncQueue;var F=require("fs"),_=require("fs/promises"),f=require("@alwatr/flat-string");function m(r){o.logMethodArgs?.("readFileSync","..."+r.slice(-32));try{return(0,f.flatString)((0,F.readFileSync)(r,{encoding:"utf-8",flag:"r"}))}catch(e){throw o.error("readFileSync","read_file_failed",{path:r},e),new Error("read_file_failed",{cause:e.cause})}}function u(r){return o.logMethodArgs?.("readFile","..."+r.slice(-32)),l.push(r,async()=>{try{return(0,f.flatString)(await(0,_.readFile)(r,{encoding:"utf-8",flag:"r"}))}catch(e){throw o.error("readFile","read_file_failed",{path:r},e),new Error("read_file_failed",{cause:e.cause})}})}var t=require("fs"),s=require("fs/promises"),d=require("path");function g(r,e){o.logMethodArgs?.("writeFileSync","..."+r.slice(-32));try{let i=(0,t.existsSync)(r);if(!i){let n=(0,d.dirname)(r);(0,t.existsSync)(n)||(0,t.mkdirSync)(n,{recursive:!0})}(0,t.writeFileSync)(r+".tmp",e,{encoding:"utf-8",flag:"w"}),i&&(0,t.renameSync)(r,r+".bak"),(0,t.renameSync)(r+".tmp",r),o.logOther?.("writeFileSync success","..."+r.slice(-32))}catch(i){throw o.error("writeFileSync","write_file_failed",{path:r},i),new Error("write_file_failed",{cause:i.cause})}}function y(r,e){return o.logMethodArgs?.("writeFile","..."+r.slice(-32)),l.push(r,async()=>{try{o.logOther?.("writeFile start","..."+r.slice(-32));let i=(0,t.existsSync)(r);if(!i){let n=(0,d.dirname)(r);(0,t.existsSync)(n)||await(0,s.mkdir)(n,{recursive:!0})}await(0,s.writeFile)(r+".tmp",e,{encoding:"utf-8",flag:"w"}),i&&await(0,s.rename)(r,r+".bak"),await(0,s.rename)(r+".tmp",r),o.logOther?.("writeFile success","..."+r.slice(-32))}catch(i){throw o.error("writeFile","write_file_failed",{path:r},i),new Error("write_file_failed",{cause:i.cause})}})}function p(r){try{return JSON.parse(r)}catch(e){throw o.error("parseJson","invalid_json",e),new Error("invalid_json",{cause:e.cause})}}function J(r){try{return JSON.stringify(r)}catch(e){throw o.error("jsonStringify","stringify_failed",e),new Error("stringify_failed",{cause:e.cause})}}function j(r,e=!1){return o.logMethodArgs?.("readJson",{path:r.slice(-32),sync:e}),e===!0?p(m(r)):u(r).then(i=>p(i))}var S=require("@alwatr/flat-string");function O(r,e,i=!1){o.logMethodArgs?.("writeJson","..."+r.slice(-32));let n=(0,S.flatString)(J(e));return i===!0?g(r,n):y(r,n)}var T=require("fs/promises");async function Q(r){return o.logMethodArgs?.("makeEmptyFile","..."+r.slice(-32)),(await(0,T.open)(r,"w")).close()}var E=require("path"),v=require("fs"),M=require("fs/promises");0&&(module.exports={existsSync,makeEmptyFile,readFile,readFileSync,readJson,resolve,unlink,writeFile,writeFileSync,writeJson});
3
3
  //# sourceMappingURL=main.cjs.map
package/dist/main.cjs.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/main.ts", "../src/common.ts", "../src/read-file.ts", "../src/write-file.ts", "../src/json.ts", "../src/read-json.ts", "../src/write-json.ts", "../src/make-file.ts"],
4
- "sourcesContent": ["export * from './read-file';\nexport * from './write-file';\nexport * from './read-json';\nexport * from './write-json';\nexport * from './make-file';\n\nexport {resolve} from 'node:path';\nexport {existsSync} from 'node:fs';\nexport {unlink} from 'node:fs/promises';\n", "import {AsyncQueue} from '@alwatr/async-queue';\nimport {definePackage} from '@alwatr/logger';\n\nimport type {} from '@alwatr/nano-build';\n\nexport const logger = definePackage('@alwatr/node-fs', __package_version__);\n\nexport const asyncQueue = new AsyncQueue();\n", "import {readFileSync as readFileSync_} from 'node:fs';\nimport {readFile as readFile_} from 'node:fs/promises';\n\nimport {flatString} from '@alwatr/flat-string';\n\nimport {asyncQueue, logger} from './common';\n\n/**\n * Enhanced read File (Synchronous).\n *\n * @param path - file path\n * @returns file content\n * @example\n * ```typescript\n * const fileContent = readFileSync('./file.txt', sync);\n * ```\n */\nexport function readFileSync(path: string): string {\n logger.logMethodArgs?.('readFileSync', '...' + path.slice(-32));\n // if (!existsSync(path)) throw new Error('file_not_found');\n try {\n return flatString(readFileSync_(path, {encoding: 'utf-8', flag: 'r'}));\n }\n catch (err) {\n logger.error('readFileSync', 'read_file_failed', {path}, err);\n throw new Error('read_file_failed', {cause: (err as Error).cause});\n }\n}\n\n/**\n * Enhanced read File (Asynchronous).\n *\n * - If writing queue is running for target path, it will wait for it to finish.\n *\n * @param path - file path\n * @returns file content\n * @example\n * ```typescript\n * const fileContent = await readFile('./file.txt', sync);\n * ```\n */\nexport function readFile(path: string): Promise<string> {\n logger.logMethodArgs?.('readFile', '...' + path.slice(-32));\n // if (!existsSync(path)) throw new Error('file_not_found');\n return asyncQueue.push(path, async () => {\n try {\n return flatString(await readFile_(path, {encoding: 'utf-8', flag: 'r'}));\n }\n catch (err) {\n logger.error('readFile', 'read_file_failed', {path}, err);\n throw new Error('read_file_failed', {cause: (err as Error).cause});\n }\n });\n}\n", "import {writeFileSync as writeFileSync_, existsSync, mkdirSync, renameSync} from 'node:fs';\nimport {mkdir, rename, writeFile as writeFile_} from 'node:fs/promises';\nimport {dirname} from 'node:path';\n\nimport {asyncQueue, logger} from './common';\n\n/**\n * Enhanced write file (Synchronous).\n *\n * - If directory not exists, create it recursively.\n * - Write file to `path.tmp` before write success.\n * - If file exists, renamed (keep) to `path.bak`.\n * - If write failed, original file will not be changed.\n *\n * @param path - file path\n * @param content - file content\n * @example\n * ```typescript\n * writeFileSync('./file.txt', 'Hello World!');\n * ```\n */\nexport function writeFileSync(path: string, content: string): void {\n logger.logMethodArgs?.('writeFileSync', '...' + path.slice(-32));\n try {\n const pathExists = existsSync(path);\n if (!pathExists) {\n const dir = dirname(path);\n if (!existsSync(dir)) {\n mkdirSync(dir, {recursive: true});\n }\n }\n writeFileSync_(path + '.tmp', content, {encoding: 'utf-8', flag: 'w'});\n if (pathExists) {\n renameSync(path, path + '.bak');\n }\n renameSync(path + '.tmp', path);\n logger.logOther?.('writeFileSync success', '...' + path.slice(-32));\n }\n catch (err) {\n logger.error('writeFileSync', 'write_file_failed', {path}, err);\n throw new Error('write_file_failed', {cause: (err as Error).cause});\n }\n}\n\n/**\n * Enhanced write file (Asynchronous).\n *\n * - If directory not exists, create it recursively.\n * - Write file to `path.tmp` before write success.\n * - If file exists, renamed (keep) to `path.bak`.\n * - If write failed, original file will not be changed.\n *\n * @param path - file path\n * @param content - file content\n * @example\n * ```typescript\n * await writeFile('./file.txt', 'Hello World!');\n * ```\n */\nexport function writeFile(path: string, content: string): Promise<void> {\n logger.logMethodArgs?.('writeFile', '...' + path.slice(-32));\n return asyncQueue.push(path, async () => {\n try {\n logger.logOther?.('writeFile start', '...' + path.slice(-32));\n const pathExists = existsSync(path);\n if (!pathExists) {\n const dir = dirname(path);\n if (!existsSync(dir)) {\n await mkdir(dir, {recursive: true});\n }\n }\n await writeFile_(path + '.tmp', content, {encoding: 'utf-8', flag: 'w'});\n if (pathExists) {\n await rename(path, path + '.bak');\n }\n await rename(path + '.tmp', path);\n logger.logOther?.('writeFile success', '...' + path.slice(-32));\n }\n catch (err) {\n logger.error('writeFile', 'write_file_failed', {path}, err);\n throw new Error('write_file_failed', {cause: (err as Error).cause});\n }\n });\n}\n", "import {logger} from './common';\n\nimport type {JsonValue} from '@alwatr/type-helper';\n\n/**\n * Parse json string.\n *\n * @param content - json string\n * @returns json object\n * @example\n * ```typescript\n * const json = parseJson('{\"a\":1,\"b\":2}');\n * console.log(json.a); // 1\n * ```\n */\nexport function parseJson<T extends JsonValue>(content: string): T {\n try {\n return JSON.parse(content);\n }\n catch (err) {\n logger.error('parseJson', 'invalid_json', err);\n throw new Error('invalid_json', {cause: (err as Error).cause});\n }\n}\n\n/**\n * Stringify json object.\n *\n * @param data - json object\n * @returns json string\n * @example\n * ```typescript\n * const json = jsonStringify({a:1, b:2});\n * console.log(json); // '{\"a\":1,\"b\":2}'\n * ```\n */\nexport function jsonStringify<T extends JsonValue>(data: T): string {\n try {\n return JSON.stringify(data);\n }\n catch (err) {\n logger.error('jsonStringify', 'stringify_failed', err);\n throw new Error('stringify_failed', {cause: (err as Error).cause});\n }\n}\n", "import {logger} from './common';\nimport {parseJson} from './json';\nimport {readFile, readFileSync} from './read-file';\n\nimport type {JsonValue, MaybePromise} from '@alwatr/type-helper';\n\n/**\n * Enhanced read json file (async).\n *\n * @param path - file path\n * @returns json object\n * @example\n * ```typescript\n * const fileContent = await readJson('./file.json');\n * ```\n */\nexport function readJson<T extends JsonValue>(path: string): Promise<T>;\n/**\n * Enhanced read json file (sync).\n *\n * @param path - file path\n * @param sync - sync mode\n * @returns json object\n * @example\n * ```typescript\n * const fileContent = readJson('./file.json', true);\n * ```\n */\nexport function readJson<T extends JsonValue>(path: string, sync: true): T;\n/**\n * Enhanced read json file.\n *\n * @param path - file path\n * @param sync - sync mode\n * @returns json object\n * @example\n * ```typescript\n * const fileContent = await readJson('./file.json', sync);\n * ```\n */\nexport function readJson<T extends JsonValue>(path: string, sync: boolean): MaybePromise<T>;\n/**\n * Enhanced read json file.\n *\n * @param path - file path\n * @param sync - sync mode\n * @returns json object\n * @example\n * ```typescript\n * const fileContent = await readJson('./file.json');\n * ```\n */\nexport function readJson<T extends JsonValue>(path: string, sync = false): MaybePromise<T> {\n logger.logMethodArgs?.('readJson', {path: path.slice(-32), sync});\n if (sync === true) {\n return parseJson<T>(readFileSync(path));\n }\n else {\n return readFile(path).then((content) => parseJson<T>(content));\n }\n}\n", "import {flatString} from '@alwatr/flat-string';\n\nimport {logger} from './common';\nimport {jsonStringify} from './json';\nimport {writeFile, writeFileSync} from './write-file';\n\nimport type {JsonValue, MaybePromise} from '@alwatr/type-helper';\n\n/**\n * Enhanced write json file (Asynchronous).\n *\n * @param path - file path\n * @param data - json object\n * @example\n * ```typescript\n * await writeJsonFile('./file.json', { a:1, b:2, c:3 });\n * ```\n */\nexport function writeJson<T extends JsonValue>(path: string, data: T, sync?: false): Promise<void>;\n/**\n * Enhanced write json file (Synchronous).\n *\n * @param path - file path\n * @param data - json object\n * @param sync - sync mode\n * @example\n * ```typescript\n * writeJsonFile('./file.json', { a:1, b:2, c:3 }, true);\n * ```\n */\nexport function writeJson<T extends JsonValue>(path: string, data: T, sync: true): void;\n/**\n * Enhanced write json file.\n *\n * @param path - file path\n * @param data - json object\n * @param sync - sync mode\n * @example\n * ```typescript\n * await writeJsonFile('./file.json', { a:1, b:2, c:3 }, sync);\n * ```\n */\nexport function writeJson<T extends JsonValue>(path: string, data: T, sync: boolean): MaybePromise<void>;\n/**\n * Enhanced write json file.\n *\n * @param path - file path\n * @param data - json object\n * @param sync - sync mode\n * @example\n * ```typescript\n * await writeJsonFile('./file.json', { a:1, b:2, c:3 });\n * ```\n */\nexport function writeJson<T extends JsonValue>(path: string, data: T, sync = false): MaybePromise<void> {\n logger.logMethodArgs?.('writeJson', '...' + path.slice(-32));\n const content = flatString(jsonStringify(data));\n return sync === true ? writeFileSync(path, content) : writeFile(path, content);\n}\n", "import {open} from 'node:fs/promises';\n\nimport {logger} from './common';\n\n/**\n * Make empty file.\n *\n * @param path - file path\n *\n * @example\n * ```ts\n * await makeFile('./file.txt');\n * ```\n */\nexport async function makeEmptyFile(path: string): Promise<void> {\n logger.logMethodArgs?.('makeEmptyFile', '...' + path.slice(-32));\n return (await open(path, 'w')).close();\n}\n"],
4
+ "sourcesContent": ["export * from './read-file.js';\nexport * from './write-file.js';\nexport * from './read-json.js';\nexport * from './write-json.js';\nexport * from './make-file.js';\n\nexport {resolve} from 'node:path';\nexport {existsSync} from 'node:fs';\nexport {unlink} from 'node:fs/promises';\n", "import {AsyncQueue} from '@alwatr/async-queue';\nimport {definePackage} from '@alwatr/logger';\n\nimport type {} from '@alwatr/nano-build';\n\nexport const logger = definePackage('@alwatr/node-fs', __package_version__);\n\nexport const asyncQueue = new AsyncQueue();\n", "import {readFileSync as readFileSync_} from 'node:fs';\nimport {readFile as readFile_} from 'node:fs/promises';\n\nimport {flatString} from '@alwatr/flat-string';\n\nimport {asyncQueue, logger} from './common.js';\n\n/**\n * Enhanced read File (Synchronous).\n *\n * @param path - file path\n * @returns file content\n * @example\n * ```typescript\n * const fileContent = readFileSync('./file.txt', sync);\n * ```\n */\nexport function readFileSync(path: string): string {\n logger.logMethodArgs?.('readFileSync', '...' + path.slice(-32));\n // if (!existsSync(path)) throw new Error('file_not_found');\n try {\n return flatString(readFileSync_(path, {encoding: 'utf-8', flag: 'r'}));\n }\n catch (err) {\n logger.error('readFileSync', 'read_file_failed', {path}, err);\n throw new Error('read_file_failed', {cause: (err as Error).cause});\n }\n}\n\n/**\n * Enhanced read File (Asynchronous).\n *\n * - If writing queue is running for target path, it will wait for it to finish.\n *\n * @param path - file path\n * @returns file content\n * @example\n * ```typescript\n * const fileContent = await readFile('./file.txt', sync);\n * ```\n */\nexport function readFile(path: string): Promise<string> {\n logger.logMethodArgs?.('readFile', '...' + path.slice(-32));\n // if (!existsSync(path)) throw new Error('file_not_found');\n return asyncQueue.push(path, async () => {\n try {\n return flatString(await readFile_(path, {encoding: 'utf-8', flag: 'r'}));\n }\n catch (err) {\n logger.error('readFile', 'read_file_failed', {path}, err);\n throw new Error('read_file_failed', {cause: (err as Error).cause});\n }\n });\n}\n", "import {writeFileSync as writeFileSync_, existsSync, mkdirSync, renameSync} from 'node:fs';\nimport {mkdir, rename, writeFile as writeFile_} from 'node:fs/promises';\nimport {dirname} from 'node:path';\n\nimport {asyncQueue, logger} from './common.js';\n\n/**\n * Enhanced write file (Synchronous).\n *\n * - If directory not exists, create it recursively.\n * - Write file to `path.tmp` before write success.\n * - If file exists, renamed (keep) to `path.bak`.\n * - If write failed, original file will not be changed.\n *\n * @param path - file path\n * @param content - file content\n * @example\n * ```typescript\n * writeFileSync('./file.txt', 'Hello World!');\n * ```\n */\nexport function writeFileSync(path: string, content: string): void {\n logger.logMethodArgs?.('writeFileSync', '...' + path.slice(-32));\n try {\n const pathExists = existsSync(path);\n if (!pathExists) {\n const dir = dirname(path);\n if (!existsSync(dir)) {\n mkdirSync(dir, {recursive: true});\n }\n }\n writeFileSync_(path + '.tmp', content, {encoding: 'utf-8', flag: 'w'});\n if (pathExists) {\n renameSync(path, path + '.bak');\n }\n renameSync(path + '.tmp', path);\n logger.logOther?.('writeFileSync success', '...' + path.slice(-32));\n }\n catch (err) {\n logger.error('writeFileSync', 'write_file_failed', {path}, err);\n throw new Error('write_file_failed', {cause: (err as Error).cause});\n }\n}\n\n/**\n * Enhanced write file (Asynchronous).\n *\n * - If directory not exists, create it recursively.\n * - Write file to `path.tmp` before write success.\n * - If file exists, renamed (keep) to `path.bak`.\n * - If write failed, original file will not be changed.\n *\n * @param path - file path\n * @param content - file content\n * @example\n * ```typescript\n * await writeFile('./file.txt', 'Hello World!');\n * ```\n */\nexport function writeFile(path: string, content: string): Promise<void> {\n logger.logMethodArgs?.('writeFile', '...' + path.slice(-32));\n return asyncQueue.push(path, async () => {\n try {\n logger.logOther?.('writeFile start', '...' + path.slice(-32));\n const pathExists = existsSync(path);\n if (!pathExists) {\n const dir = dirname(path);\n if (!existsSync(dir)) {\n await mkdir(dir, {recursive: true});\n }\n }\n await writeFile_(path + '.tmp', content, {encoding: 'utf-8', flag: 'w'});\n if (pathExists) {\n await rename(path, path + '.bak');\n }\n await rename(path + '.tmp', path);\n logger.logOther?.('writeFile success', '...' + path.slice(-32));\n }\n catch (err) {\n logger.error('writeFile', 'write_file_failed', {path}, err);\n throw new Error('write_file_failed', {cause: (err as Error).cause});\n }\n });\n}\n", "import {logger} from './common.js';\n\nimport type {JsonValue} from '@alwatr/type-helper';\n\n/**\n * Parse json string.\n *\n * @param content - json string\n * @returns json object\n * @example\n * ```typescript\n * const json = parseJson('{\"a\":1,\"b\":2}');\n * console.log(json.a); // 1\n * ```\n */\nexport function parseJson<T extends JsonValue>(content: string): T {\n try {\n return JSON.parse(content);\n }\n catch (err) {\n logger.error('parseJson', 'invalid_json', err);\n throw new Error('invalid_json', {cause: (err as Error).cause});\n }\n}\n\n/**\n * Stringify json object.\n *\n * @param data - json object\n * @returns json string\n * @example\n * ```typescript\n * const json = jsonStringify({a:1, b:2});\n * console.log(json); // '{\"a\":1,\"b\":2}'\n * ```\n */\nexport function jsonStringify<T extends JsonValue>(data: T): string {\n try {\n return JSON.stringify(data);\n }\n catch (err) {\n logger.error('jsonStringify', 'stringify_failed', err);\n throw new Error('stringify_failed', {cause: (err as Error).cause});\n }\n}\n", "import {logger} from './common.js';\nimport {parseJson} from './json.js';\nimport {readFile, readFileSync} from './read-file.js';\n\nimport type {JsonValue, MaybePromise} from '@alwatr/type-helper';\n\n/**\n * Enhanced read json file (async).\n *\n * @param path - file path\n * @returns json object\n * @example\n * ```typescript\n * const fileContent = await readJson('./file.json');\n * ```\n */\nexport function readJson<T extends JsonValue>(path: string): Promise<T>;\n/**\n * Enhanced read json file (sync).\n *\n * @param path - file path\n * @param sync - sync mode\n * @returns json object\n * @example\n * ```typescript\n * const fileContent = readJson('./file.json', true);\n * ```\n */\nexport function readJson<T extends JsonValue>(path: string, sync: true): T;\n/**\n * Enhanced read json file.\n *\n * @param path - file path\n * @param sync - sync mode\n * @returns json object\n * @example\n * ```typescript\n * const fileContent = await readJson('./file.json', sync);\n * ```\n */\nexport function readJson<T extends JsonValue>(path: string, sync: boolean): MaybePromise<T>;\n/**\n * Enhanced read json file.\n *\n * @param path - file path\n * @param sync - sync mode\n * @returns json object\n * @example\n * ```typescript\n * const fileContent = await readJson('./file.json');\n * ```\n */\nexport function readJson<T extends JsonValue>(path: string, sync = false): MaybePromise<T> {\n logger.logMethodArgs?.('readJson', {path: path.slice(-32), sync});\n if (sync === true) {\n return parseJson<T>(readFileSync(path));\n }\n else {\n return readFile(path).then((content) => parseJson<T>(content));\n }\n}\n", "import {flatString} from '@alwatr/flat-string';\n\nimport {logger} from './common.js';\nimport {jsonStringify} from './json.js';\nimport {writeFile, writeFileSync} from './write-file.js';\n\nimport type {JsonValue, MaybePromise} from '@alwatr/type-helper';\n\n/**\n * Enhanced write json file (Asynchronous).\n *\n * @param path - file path\n * @param data - json object\n * @example\n * ```typescript\n * await writeJsonFile('./file.json', { a:1, b:2, c:3 });\n * ```\n */\nexport function writeJson<T extends JsonValue>(path: string, data: T, sync?: false): Promise<void>;\n/**\n * Enhanced write json file (Synchronous).\n *\n * @param path - file path\n * @param data - json object\n * @param sync - sync mode\n * @example\n * ```typescript\n * writeJsonFile('./file.json', { a:1, b:2, c:3 }, true);\n * ```\n */\nexport function writeJson<T extends JsonValue>(path: string, data: T, sync: true): void;\n/**\n * Enhanced write json file.\n *\n * @param path - file path\n * @param data - json object\n * @param sync - sync mode\n * @example\n * ```typescript\n * await writeJsonFile('./file.json', { a:1, b:2, c:3 }, sync);\n * ```\n */\nexport function writeJson<T extends JsonValue>(path: string, data: T, sync: boolean): MaybePromise<void>;\n/**\n * Enhanced write json file.\n *\n * @param path - file path\n * @param data - json object\n * @param sync - sync mode\n * @example\n * ```typescript\n * await writeJsonFile('./file.json', { a:1, b:2, c:3 });\n * ```\n */\nexport function writeJson<T extends JsonValue>(path: string, data: T, sync = false): MaybePromise<void> {\n logger.logMethodArgs?.('writeJson', '...' + path.slice(-32));\n const content = flatString(jsonStringify(data));\n return sync === true ? writeFileSync(path, content) : writeFile(path, content);\n}\n", "import {open} from 'node:fs/promises';\n\nimport {logger} from './common.js';\n\n/**\n * Make empty file.\n *\n * @param path - file path\n *\n * @example\n * ```ts\n * await makeFile('./file.txt');\n * ```\n */\nexport async function makeEmptyFile(path: string): Promise<void> {\n logger.logMethodArgs?.('makeEmptyFile', '...' + path.slice(-32));\n return (await open(path, 'w')).close();\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": ["main_exports", "__export", "makeEmptyFile", "readFile", "readFileSync", "readJson", "writeFile", "writeFileSync", "writeJson", "__toCommonJS", "import_async_queue", "import_logger", "logger", "asyncQueue", "import_node_fs", "import_promises", "import_flat_string", "readFileSync", "path", "logger", "readFileSync_", "err", "readFile", "asyncQueue", "readFile_", "import_node_fs", "import_promises", "import_node_path", "writeFileSync", "path", "content", "logger", "pathExists", "dir", "writeFileSync_", "err", "writeFile", "asyncQueue", "writeFile_", "parseJson", "content", "err", "logger", "jsonStringify", "data", "readJson", "path", "sync", "logger", "parseJson", "readFileSync", "readFile", "content", "import_flat_string", "writeJson", "path", "data", "sync", "logger", "content", "jsonStringify", "writeFileSync", "writeFile", "import_promises", "makeEmptyFile", "path", "logger", "import_node_path", "import_node_fs", "import_promises"]
7
7
  }
package/dist/main.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node" />
3
3
  /// <reference types="node" />
4
- export * from './read-file';
5
- export * from './write-file';
6
- export * from './read-json';
7
- export * from './write-json';
8
- export * from './make-file';
4
+ export * from './read-file.js';
5
+ export * from './write-file.js';
6
+ export * from './read-json.js';
7
+ export * from './write-json.js';
8
+ export * from './make-file.js';
9
9
  export { resolve } from 'node:path';
10
10
  export { existsSync } from 'node:fs';
11
11
  export { unlink } from 'node:fs/promises';
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;;AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,EAAC,UAAU,EAAC,MAAM,SAAS,CAAC;AACnC,OAAO,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;;AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAE/B,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,EAAC,UAAU,EAAC,MAAM,SAAS,CAAC;AACnC,OAAO,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC"}
package/dist/main.mjs CHANGED
@@ -1,3 +1,3 @@
1
- /* @alwatr/node-fs v1.0.3 */
2
- import{AsyncQueue as w}from"@alwatr/async-queue";import{definePackage as x}from"@alwatr/logger";var e=x("@alwatr/node-fs","1.0.3"),n=new w;import{readFileSync as F}from"fs";import{readFile as _}from"fs/promises";import{flatString as l}from"@alwatr/flat-string";function c(r){e.logMethodArgs?.("readFileSync","..."+r.slice(-32));try{return l(F(r,{encoding:"utf-8",flag:"r"}))}catch(o){throw e.error("readFileSync","read_file_failed",{path:r},o),new Error("read_file_failed",{cause:o.cause})}}function f(r){return e.logMethodArgs?.("readFile","..."+r.slice(-32)),n.push(r,async()=>{try{return l(await _(r,{encoding:"utf-8",flag:"r"}))}catch(o){throw e.error("readFile","read_file_failed",{path:r},o),new Error("read_file_failed",{cause:o.cause})}})}import{writeFileSync as J,existsSync as s,mkdirSync as S,renameSync as m}from"fs";import{mkdir as T,rename as u,writeFile as E}from"fs/promises";import{dirname as d}from"path";function g(r,o){e.logMethodArgs?.("writeFileSync","..."+r.slice(-32));try{let i=s(r);if(!i){let t=d(r);s(t)||S(t,{recursive:!0})}J(r+".tmp",o,{encoding:"utf-8",flag:"w"}),i&&m(r,r+".bak"),m(r+".tmp",r),e.logOther?.("writeFileSync success","..."+r.slice(-32))}catch(i){throw e.error("writeFileSync","write_file_failed",{path:r},i),new Error("write_file_failed",{cause:i.cause})}}function y(r,o){return e.logMethodArgs?.("writeFile","..."+r.slice(-32)),n.push(r,async()=>{try{e.logOther?.("writeFile start","..."+r.slice(-32));let i=s(r);if(!i){let t=d(r);s(t)||await T(t,{recursive:!0})}await E(r+".tmp",o,{encoding:"utf-8",flag:"w"}),i&&await u(r,r+".bak"),await u(r+".tmp",r),e.logOther?.("writeFile success","..."+r.slice(-32))}catch(i){throw e.error("writeFile","write_file_failed",{path:r},i),new Error("write_file_failed",{cause:i.cause})}})}function a(r){try{return JSON.parse(r)}catch(o){throw e.error("parseJson","invalid_json",o),new Error("invalid_json",{cause:o.cause})}}function p(r){try{return JSON.stringify(r)}catch(o){throw e.error("jsonStringify","stringify_failed",o),new Error("stringify_failed",{cause:o.cause})}}function K(r,o=!1){return e.logMethodArgs?.("readJson",{path:r.slice(-32),sync:o}),o===!0?a(c(r)):f(r).then(i=>a(i))}import{flatString as v}from"@alwatr/flat-string";function Y(r,o,i=!1){e.logMethodArgs?.("writeJson","..."+r.slice(-32));let t=v(p(o));return i===!0?g(r,t):y(r,t)}import{open as M}from"fs/promises";async function er(r){return e.logMethodArgs?.("makeEmptyFile","..."+r.slice(-32)),(await M(r,"w")).close()}import{resolve as fr}from"path";import{existsSync as ur}from"fs";import{unlink as gr}from"fs/promises";export{ur as existsSync,er as makeEmptyFile,f as readFile,c as readFileSync,K as readJson,fr as resolve,gr as unlink,y as writeFile,g as writeFileSync,Y as writeJson};
1
+ /* @alwatr/node-fs v1.0.5 */
2
+ import{AsyncQueue as w}from"@alwatr/async-queue";import{definePackage as x}from"@alwatr/logger";var e=x("@alwatr/node-fs","1.0.5"),n=new w;import{readFileSync as F}from"fs";import{readFile as _}from"fs/promises";import{flatString as l}from"@alwatr/flat-string";function c(r){e.logMethodArgs?.("readFileSync","..."+r.slice(-32));try{return l(F(r,{encoding:"utf-8",flag:"r"}))}catch(o){throw e.error("readFileSync","read_file_failed",{path:r},o),new Error("read_file_failed",{cause:o.cause})}}function f(r){return e.logMethodArgs?.("readFile","..."+r.slice(-32)),n.push(r,async()=>{try{return l(await _(r,{encoding:"utf-8",flag:"r"}))}catch(o){throw e.error("readFile","read_file_failed",{path:r},o),new Error("read_file_failed",{cause:o.cause})}})}import{writeFileSync as J,existsSync as s,mkdirSync as S,renameSync as m}from"fs";import{mkdir as T,rename as u,writeFile as E}from"fs/promises";import{dirname as d}from"path";function g(r,o){e.logMethodArgs?.("writeFileSync","..."+r.slice(-32));try{let i=s(r);if(!i){let t=d(r);s(t)||S(t,{recursive:!0})}J(r+".tmp",o,{encoding:"utf-8",flag:"w"}),i&&m(r,r+".bak"),m(r+".tmp",r),e.logOther?.("writeFileSync success","..."+r.slice(-32))}catch(i){throw e.error("writeFileSync","write_file_failed",{path:r},i),new Error("write_file_failed",{cause:i.cause})}}function y(r,o){return e.logMethodArgs?.("writeFile","..."+r.slice(-32)),n.push(r,async()=>{try{e.logOther?.("writeFile start","..."+r.slice(-32));let i=s(r);if(!i){let t=d(r);s(t)||await T(t,{recursive:!0})}await E(r+".tmp",o,{encoding:"utf-8",flag:"w"}),i&&await u(r,r+".bak"),await u(r+".tmp",r),e.logOther?.("writeFile success","..."+r.slice(-32))}catch(i){throw e.error("writeFile","write_file_failed",{path:r},i),new Error("write_file_failed",{cause:i.cause})}})}function a(r){try{return JSON.parse(r)}catch(o){throw e.error("parseJson","invalid_json",o),new Error("invalid_json",{cause:o.cause})}}function p(r){try{return JSON.stringify(r)}catch(o){throw e.error("jsonStringify","stringify_failed",o),new Error("stringify_failed",{cause:o.cause})}}function K(r,o=!1){return e.logMethodArgs?.("readJson",{path:r.slice(-32),sync:o}),o===!0?a(c(r)):f(r).then(i=>a(i))}import{flatString as v}from"@alwatr/flat-string";function Y(r,o,i=!1){e.logMethodArgs?.("writeJson","..."+r.slice(-32));let t=v(p(o));return i===!0?g(r,t):y(r,t)}import{open as M}from"fs/promises";async function er(r){return e.logMethodArgs?.("makeEmptyFile","..."+r.slice(-32)),(await M(r,"w")).close()}import{resolve as fr}from"path";import{existsSync as ur}from"fs";import{unlink as gr}from"fs/promises";export{ur as existsSync,er as makeEmptyFile,f as readFile,c as readFileSync,K as readJson,fr as resolve,gr as unlink,y as writeFile,g as writeFileSync,Y as writeJson};
3
3
  //# sourceMappingURL=main.mjs.map
package/dist/main.mjs.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/common.ts", "../src/read-file.ts", "../src/write-file.ts", "../src/json.ts", "../src/read-json.ts", "../src/write-json.ts", "../src/make-file.ts", "../src/main.ts"],
4
- "sourcesContent": ["import {AsyncQueue} from '@alwatr/async-queue';\nimport {definePackage} from '@alwatr/logger';\n\nimport type {} from '@alwatr/nano-build';\n\nexport const logger = definePackage('@alwatr/node-fs', __package_version__);\n\nexport const asyncQueue = new AsyncQueue();\n", "import {readFileSync as readFileSync_} from 'node:fs';\nimport {readFile as readFile_} from 'node:fs/promises';\n\nimport {flatString} from '@alwatr/flat-string';\n\nimport {asyncQueue, logger} from './common';\n\n/**\n * Enhanced read File (Synchronous).\n *\n * @param path - file path\n * @returns file content\n * @example\n * ```typescript\n * const fileContent = readFileSync('./file.txt', sync);\n * ```\n */\nexport function readFileSync(path: string): string {\n logger.logMethodArgs?.('readFileSync', '...' + path.slice(-32));\n // if (!existsSync(path)) throw new Error('file_not_found');\n try {\n return flatString(readFileSync_(path, {encoding: 'utf-8', flag: 'r'}));\n }\n catch (err) {\n logger.error('readFileSync', 'read_file_failed', {path}, err);\n throw new Error('read_file_failed', {cause: (err as Error).cause});\n }\n}\n\n/**\n * Enhanced read File (Asynchronous).\n *\n * - If writing queue is running for target path, it will wait for it to finish.\n *\n * @param path - file path\n * @returns file content\n * @example\n * ```typescript\n * const fileContent = await readFile('./file.txt', sync);\n * ```\n */\nexport function readFile(path: string): Promise<string> {\n logger.logMethodArgs?.('readFile', '...' + path.slice(-32));\n // if (!existsSync(path)) throw new Error('file_not_found');\n return asyncQueue.push(path, async () => {\n try {\n return flatString(await readFile_(path, {encoding: 'utf-8', flag: 'r'}));\n }\n catch (err) {\n logger.error('readFile', 'read_file_failed', {path}, err);\n throw new Error('read_file_failed', {cause: (err as Error).cause});\n }\n });\n}\n", "import {writeFileSync as writeFileSync_, existsSync, mkdirSync, renameSync} from 'node:fs';\nimport {mkdir, rename, writeFile as writeFile_} from 'node:fs/promises';\nimport {dirname} from 'node:path';\n\nimport {asyncQueue, logger} from './common';\n\n/**\n * Enhanced write file (Synchronous).\n *\n * - If directory not exists, create it recursively.\n * - Write file to `path.tmp` before write success.\n * - If file exists, renamed (keep) to `path.bak`.\n * - If write failed, original file will not be changed.\n *\n * @param path - file path\n * @param content - file content\n * @example\n * ```typescript\n * writeFileSync('./file.txt', 'Hello World!');\n * ```\n */\nexport function writeFileSync(path: string, content: string): void {\n logger.logMethodArgs?.('writeFileSync', '...' + path.slice(-32));\n try {\n const pathExists = existsSync(path);\n if (!pathExists) {\n const dir = dirname(path);\n if (!existsSync(dir)) {\n mkdirSync(dir, {recursive: true});\n }\n }\n writeFileSync_(path + '.tmp', content, {encoding: 'utf-8', flag: 'w'});\n if (pathExists) {\n renameSync(path, path + '.bak');\n }\n renameSync(path + '.tmp', path);\n logger.logOther?.('writeFileSync success', '...' + path.slice(-32));\n }\n catch (err) {\n logger.error('writeFileSync', 'write_file_failed', {path}, err);\n throw new Error('write_file_failed', {cause: (err as Error).cause});\n }\n}\n\n/**\n * Enhanced write file (Asynchronous).\n *\n * - If directory not exists, create it recursively.\n * - Write file to `path.tmp` before write success.\n * - If file exists, renamed (keep) to `path.bak`.\n * - If write failed, original file will not be changed.\n *\n * @param path - file path\n * @param content - file content\n * @example\n * ```typescript\n * await writeFile('./file.txt', 'Hello World!');\n * ```\n */\nexport function writeFile(path: string, content: string): Promise<void> {\n logger.logMethodArgs?.('writeFile', '...' + path.slice(-32));\n return asyncQueue.push(path, async () => {\n try {\n logger.logOther?.('writeFile start', '...' + path.slice(-32));\n const pathExists = existsSync(path);\n if (!pathExists) {\n const dir = dirname(path);\n if (!existsSync(dir)) {\n await mkdir(dir, {recursive: true});\n }\n }\n await writeFile_(path + '.tmp', content, {encoding: 'utf-8', flag: 'w'});\n if (pathExists) {\n await rename(path, path + '.bak');\n }\n await rename(path + '.tmp', path);\n logger.logOther?.('writeFile success', '...' + path.slice(-32));\n }\n catch (err) {\n logger.error('writeFile', 'write_file_failed', {path}, err);\n throw new Error('write_file_failed', {cause: (err as Error).cause});\n }\n });\n}\n", "import {logger} from './common';\n\nimport type {JsonValue} from '@alwatr/type-helper';\n\n/**\n * Parse json string.\n *\n * @param content - json string\n * @returns json object\n * @example\n * ```typescript\n * const json = parseJson('{\"a\":1,\"b\":2}');\n * console.log(json.a); // 1\n * ```\n */\nexport function parseJson<T extends JsonValue>(content: string): T {\n try {\n return JSON.parse(content);\n }\n catch (err) {\n logger.error('parseJson', 'invalid_json', err);\n throw new Error('invalid_json', {cause: (err as Error).cause});\n }\n}\n\n/**\n * Stringify json object.\n *\n * @param data - json object\n * @returns json string\n * @example\n * ```typescript\n * const json = jsonStringify({a:1, b:2});\n * console.log(json); // '{\"a\":1,\"b\":2}'\n * ```\n */\nexport function jsonStringify<T extends JsonValue>(data: T): string {\n try {\n return JSON.stringify(data);\n }\n catch (err) {\n logger.error('jsonStringify', 'stringify_failed', err);\n throw new Error('stringify_failed', {cause: (err as Error).cause});\n }\n}\n", "import {logger} from './common';\nimport {parseJson} from './json';\nimport {readFile, readFileSync} from './read-file';\n\nimport type {JsonValue, MaybePromise} from '@alwatr/type-helper';\n\n/**\n * Enhanced read json file (async).\n *\n * @param path - file path\n * @returns json object\n * @example\n * ```typescript\n * const fileContent = await readJson('./file.json');\n * ```\n */\nexport function readJson<T extends JsonValue>(path: string): Promise<T>;\n/**\n * Enhanced read json file (sync).\n *\n * @param path - file path\n * @param sync - sync mode\n * @returns json object\n * @example\n * ```typescript\n * const fileContent = readJson('./file.json', true);\n * ```\n */\nexport function readJson<T extends JsonValue>(path: string, sync: true): T;\n/**\n * Enhanced read json file.\n *\n * @param path - file path\n * @param sync - sync mode\n * @returns json object\n * @example\n * ```typescript\n * const fileContent = await readJson('./file.json', sync);\n * ```\n */\nexport function readJson<T extends JsonValue>(path: string, sync: boolean): MaybePromise<T>;\n/**\n * Enhanced read json file.\n *\n * @param path - file path\n * @param sync - sync mode\n * @returns json object\n * @example\n * ```typescript\n * const fileContent = await readJson('./file.json');\n * ```\n */\nexport function readJson<T extends JsonValue>(path: string, sync = false): MaybePromise<T> {\n logger.logMethodArgs?.('readJson', {path: path.slice(-32), sync});\n if (sync === true) {\n return parseJson<T>(readFileSync(path));\n }\n else {\n return readFile(path).then((content) => parseJson<T>(content));\n }\n}\n", "import {flatString} from '@alwatr/flat-string';\n\nimport {logger} from './common';\nimport {jsonStringify} from './json';\nimport {writeFile, writeFileSync} from './write-file';\n\nimport type {JsonValue, MaybePromise} from '@alwatr/type-helper';\n\n/**\n * Enhanced write json file (Asynchronous).\n *\n * @param path - file path\n * @param data - json object\n * @example\n * ```typescript\n * await writeJsonFile('./file.json', { a:1, b:2, c:3 });\n * ```\n */\nexport function writeJson<T extends JsonValue>(path: string, data: T, sync?: false): Promise<void>;\n/**\n * Enhanced write json file (Synchronous).\n *\n * @param path - file path\n * @param data - json object\n * @param sync - sync mode\n * @example\n * ```typescript\n * writeJsonFile('./file.json', { a:1, b:2, c:3 }, true);\n * ```\n */\nexport function writeJson<T extends JsonValue>(path: string, data: T, sync: true): void;\n/**\n * Enhanced write json file.\n *\n * @param path - file path\n * @param data - json object\n * @param sync - sync mode\n * @example\n * ```typescript\n * await writeJsonFile('./file.json', { a:1, b:2, c:3 }, sync);\n * ```\n */\nexport function writeJson<T extends JsonValue>(path: string, data: T, sync: boolean): MaybePromise<void>;\n/**\n * Enhanced write json file.\n *\n * @param path - file path\n * @param data - json object\n * @param sync - sync mode\n * @example\n * ```typescript\n * await writeJsonFile('./file.json', { a:1, b:2, c:3 });\n * ```\n */\nexport function writeJson<T extends JsonValue>(path: string, data: T, sync = false): MaybePromise<void> {\n logger.logMethodArgs?.('writeJson', '...' + path.slice(-32));\n const content = flatString(jsonStringify(data));\n return sync === true ? writeFileSync(path, content) : writeFile(path, content);\n}\n", "import {open} from 'node:fs/promises';\n\nimport {logger} from './common';\n\n/**\n * Make empty file.\n *\n * @param path - file path\n *\n * @example\n * ```ts\n * await makeFile('./file.txt');\n * ```\n */\nexport async function makeEmptyFile(path: string): Promise<void> {\n logger.logMethodArgs?.('makeEmptyFile', '...' + path.slice(-32));\n return (await open(path, 'w')).close();\n}\n", "export * from './read-file';\nexport * from './write-file';\nexport * from './read-json';\nexport * from './write-json';\nexport * from './make-file';\n\nexport {resolve} from 'node:path';\nexport {existsSync} from 'node:fs';\nexport {unlink} from 'node:fs/promises';\n"],
4
+ "sourcesContent": ["import {AsyncQueue} from '@alwatr/async-queue';\nimport {definePackage} from '@alwatr/logger';\n\nimport type {} from '@alwatr/nano-build';\n\nexport const logger = definePackage('@alwatr/node-fs', __package_version__);\n\nexport const asyncQueue = new AsyncQueue();\n", "import {readFileSync as readFileSync_} from 'node:fs';\nimport {readFile as readFile_} from 'node:fs/promises';\n\nimport {flatString} from '@alwatr/flat-string';\n\nimport {asyncQueue, logger} from './common.js';\n\n/**\n * Enhanced read File (Synchronous).\n *\n * @param path - file path\n * @returns file content\n * @example\n * ```typescript\n * const fileContent = readFileSync('./file.txt', sync);\n * ```\n */\nexport function readFileSync(path: string): string {\n logger.logMethodArgs?.('readFileSync', '...' + path.slice(-32));\n // if (!existsSync(path)) throw new Error('file_not_found');\n try {\n return flatString(readFileSync_(path, {encoding: 'utf-8', flag: 'r'}));\n }\n catch (err) {\n logger.error('readFileSync', 'read_file_failed', {path}, err);\n throw new Error('read_file_failed', {cause: (err as Error).cause});\n }\n}\n\n/**\n * Enhanced read File (Asynchronous).\n *\n * - If writing queue is running for target path, it will wait for it to finish.\n *\n * @param path - file path\n * @returns file content\n * @example\n * ```typescript\n * const fileContent = await readFile('./file.txt', sync);\n * ```\n */\nexport function readFile(path: string): Promise<string> {\n logger.logMethodArgs?.('readFile', '...' + path.slice(-32));\n // if (!existsSync(path)) throw new Error('file_not_found');\n return asyncQueue.push(path, async () => {\n try {\n return flatString(await readFile_(path, {encoding: 'utf-8', flag: 'r'}));\n }\n catch (err) {\n logger.error('readFile', 'read_file_failed', {path}, err);\n throw new Error('read_file_failed', {cause: (err as Error).cause});\n }\n });\n}\n", "import {writeFileSync as writeFileSync_, existsSync, mkdirSync, renameSync} from 'node:fs';\nimport {mkdir, rename, writeFile as writeFile_} from 'node:fs/promises';\nimport {dirname} from 'node:path';\n\nimport {asyncQueue, logger} from './common.js';\n\n/**\n * Enhanced write file (Synchronous).\n *\n * - If directory not exists, create it recursively.\n * - Write file to `path.tmp` before write success.\n * - If file exists, renamed (keep) to `path.bak`.\n * - If write failed, original file will not be changed.\n *\n * @param path - file path\n * @param content - file content\n * @example\n * ```typescript\n * writeFileSync('./file.txt', 'Hello World!');\n * ```\n */\nexport function writeFileSync(path: string, content: string): void {\n logger.logMethodArgs?.('writeFileSync', '...' + path.slice(-32));\n try {\n const pathExists = existsSync(path);\n if (!pathExists) {\n const dir = dirname(path);\n if (!existsSync(dir)) {\n mkdirSync(dir, {recursive: true});\n }\n }\n writeFileSync_(path + '.tmp', content, {encoding: 'utf-8', flag: 'w'});\n if (pathExists) {\n renameSync(path, path + '.bak');\n }\n renameSync(path + '.tmp', path);\n logger.logOther?.('writeFileSync success', '...' + path.slice(-32));\n }\n catch (err) {\n logger.error('writeFileSync', 'write_file_failed', {path}, err);\n throw new Error('write_file_failed', {cause: (err as Error).cause});\n }\n}\n\n/**\n * Enhanced write file (Asynchronous).\n *\n * - If directory not exists, create it recursively.\n * - Write file to `path.tmp` before write success.\n * - If file exists, renamed (keep) to `path.bak`.\n * - If write failed, original file will not be changed.\n *\n * @param path - file path\n * @param content - file content\n * @example\n * ```typescript\n * await writeFile('./file.txt', 'Hello World!');\n * ```\n */\nexport function writeFile(path: string, content: string): Promise<void> {\n logger.logMethodArgs?.('writeFile', '...' + path.slice(-32));\n return asyncQueue.push(path, async () => {\n try {\n logger.logOther?.('writeFile start', '...' + path.slice(-32));\n const pathExists = existsSync(path);\n if (!pathExists) {\n const dir = dirname(path);\n if (!existsSync(dir)) {\n await mkdir(dir, {recursive: true});\n }\n }\n await writeFile_(path + '.tmp', content, {encoding: 'utf-8', flag: 'w'});\n if (pathExists) {\n await rename(path, path + '.bak');\n }\n await rename(path + '.tmp', path);\n logger.logOther?.('writeFile success', '...' + path.slice(-32));\n }\n catch (err) {\n logger.error('writeFile', 'write_file_failed', {path}, err);\n throw new Error('write_file_failed', {cause: (err as Error).cause});\n }\n });\n}\n", "import {logger} from './common.js';\n\nimport type {JsonValue} from '@alwatr/type-helper';\n\n/**\n * Parse json string.\n *\n * @param content - json string\n * @returns json object\n * @example\n * ```typescript\n * const json = parseJson('{\"a\":1,\"b\":2}');\n * console.log(json.a); // 1\n * ```\n */\nexport function parseJson<T extends JsonValue>(content: string): T {\n try {\n return JSON.parse(content);\n }\n catch (err) {\n logger.error('parseJson', 'invalid_json', err);\n throw new Error('invalid_json', {cause: (err as Error).cause});\n }\n}\n\n/**\n * Stringify json object.\n *\n * @param data - json object\n * @returns json string\n * @example\n * ```typescript\n * const json = jsonStringify({a:1, b:2});\n * console.log(json); // '{\"a\":1,\"b\":2}'\n * ```\n */\nexport function jsonStringify<T extends JsonValue>(data: T): string {\n try {\n return JSON.stringify(data);\n }\n catch (err) {\n logger.error('jsonStringify', 'stringify_failed', err);\n throw new Error('stringify_failed', {cause: (err as Error).cause});\n }\n}\n", "import {logger} from './common.js';\nimport {parseJson} from './json.js';\nimport {readFile, readFileSync} from './read-file.js';\n\nimport type {JsonValue, MaybePromise} from '@alwatr/type-helper';\n\n/**\n * Enhanced read json file (async).\n *\n * @param path - file path\n * @returns json object\n * @example\n * ```typescript\n * const fileContent = await readJson('./file.json');\n * ```\n */\nexport function readJson<T extends JsonValue>(path: string): Promise<T>;\n/**\n * Enhanced read json file (sync).\n *\n * @param path - file path\n * @param sync - sync mode\n * @returns json object\n * @example\n * ```typescript\n * const fileContent = readJson('./file.json', true);\n * ```\n */\nexport function readJson<T extends JsonValue>(path: string, sync: true): T;\n/**\n * Enhanced read json file.\n *\n * @param path - file path\n * @param sync - sync mode\n * @returns json object\n * @example\n * ```typescript\n * const fileContent = await readJson('./file.json', sync);\n * ```\n */\nexport function readJson<T extends JsonValue>(path: string, sync: boolean): MaybePromise<T>;\n/**\n * Enhanced read json file.\n *\n * @param path - file path\n * @param sync - sync mode\n * @returns json object\n * @example\n * ```typescript\n * const fileContent = await readJson('./file.json');\n * ```\n */\nexport function readJson<T extends JsonValue>(path: string, sync = false): MaybePromise<T> {\n logger.logMethodArgs?.('readJson', {path: path.slice(-32), sync});\n if (sync === true) {\n return parseJson<T>(readFileSync(path));\n }\n else {\n return readFile(path).then((content) => parseJson<T>(content));\n }\n}\n", "import {flatString} from '@alwatr/flat-string';\n\nimport {logger} from './common.js';\nimport {jsonStringify} from './json.js';\nimport {writeFile, writeFileSync} from './write-file.js';\n\nimport type {JsonValue, MaybePromise} from '@alwatr/type-helper';\n\n/**\n * Enhanced write json file (Asynchronous).\n *\n * @param path - file path\n * @param data - json object\n * @example\n * ```typescript\n * await writeJsonFile('./file.json', { a:1, b:2, c:3 });\n * ```\n */\nexport function writeJson<T extends JsonValue>(path: string, data: T, sync?: false): Promise<void>;\n/**\n * Enhanced write json file (Synchronous).\n *\n * @param path - file path\n * @param data - json object\n * @param sync - sync mode\n * @example\n * ```typescript\n * writeJsonFile('./file.json', { a:1, b:2, c:3 }, true);\n * ```\n */\nexport function writeJson<T extends JsonValue>(path: string, data: T, sync: true): void;\n/**\n * Enhanced write json file.\n *\n * @param path - file path\n * @param data - json object\n * @param sync - sync mode\n * @example\n * ```typescript\n * await writeJsonFile('./file.json', { a:1, b:2, c:3 }, sync);\n * ```\n */\nexport function writeJson<T extends JsonValue>(path: string, data: T, sync: boolean): MaybePromise<void>;\n/**\n * Enhanced write json file.\n *\n * @param path - file path\n * @param data - json object\n * @param sync - sync mode\n * @example\n * ```typescript\n * await writeJsonFile('./file.json', { a:1, b:2, c:3 });\n * ```\n */\nexport function writeJson<T extends JsonValue>(path: string, data: T, sync = false): MaybePromise<void> {\n logger.logMethodArgs?.('writeJson', '...' + path.slice(-32));\n const content = flatString(jsonStringify(data));\n return sync === true ? writeFileSync(path, content) : writeFile(path, content);\n}\n", "import {open} from 'node:fs/promises';\n\nimport {logger} from './common.js';\n\n/**\n * Make empty file.\n *\n * @param path - file path\n *\n * @example\n * ```ts\n * await makeFile('./file.txt');\n * ```\n */\nexport async function makeEmptyFile(path: string): Promise<void> {\n logger.logMethodArgs?.('makeEmptyFile', '...' + path.slice(-32));\n return (await open(path, 'w')).close();\n}\n", "export * from './read-file.js';\nexport * from './write-file.js';\nexport * from './read-json.js';\nexport * from './write-json.js';\nexport * from './make-file.js';\n\nexport {resolve} from 'node:path';\nexport {existsSync} from 'node:fs';\nexport {unlink} from 'node:fs/promises';\n"],
5
5
  "mappings": "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",
6
6
  "names": ["AsyncQueue", "definePackage", "logger", "asyncQueue", "readFileSync_", "readFile_", "flatString", "readFileSync", "path", "logger", "err", "readFile", "asyncQueue", "writeFileSync_", "existsSync", "mkdirSync", "renameSync", "mkdir", "rename", "writeFile_", "dirname", "writeFileSync", "path", "content", "logger", "pathExists", "dir", "err", "writeFile", "asyncQueue", "parseJson", "content", "err", "logger", "jsonStringify", "data", "readJson", "path", "sync", "logger", "parseJson", "readFileSync", "readFile", "content", "flatString", "writeJson", "path", "data", "sync", "logger", "content", "jsonStringify", "writeFileSync", "writeFile", "open", "makeEmptyFile", "path", "logger", "resolve", "existsSync", "unlink"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alwatr/node-fs",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "Enhanced file system operations in Node.js with asynchronous queue to prevent parallel writes.",
5
5
  "author": "S. Ali Mihandoost <ali.mihandoost@gmail.com>",
6
6
  "keywords": [
@@ -73,17 +73,17 @@
73
73
  "clean": "rm -rfv dist *.tsbuildinfo"
74
74
  },
75
75
  "dependencies": {
76
- "@alwatr/async-queue": "^1.2.2",
77
- "@alwatr/flat-string": "^1.0.14",
78
- "@alwatr/logger": "^3.2.4"
76
+ "@alwatr/async-queue": "^1.2.4",
77
+ "@alwatr/flat-string": "^1.0.16",
78
+ "@alwatr/logger": "^3.2.6"
79
79
  },
80
80
  "devDependencies": {
81
- "@alwatr/nano-build": "^1.3.2",
81
+ "@alwatr/nano-build": "^1.3.4",
82
82
  "@alwatr/prettier-config": "^1.0.4",
83
- "@alwatr/tsconfig-base": "^1.1.1",
84
- "@alwatr/type-helper": "^1.2.0",
85
- "@types/node": "^20.11.6",
86
- "typescript": "^5.3.3"
83
+ "@alwatr/tsconfig-base": "^1.1.2",
84
+ "@alwatr/type-helper": "^1.2.2",
85
+ "@types/node": "^20.11.30",
86
+ "typescript": "^5.4.3"
87
87
  },
88
- "gitHead": "3486060abc5f331a3b8c78da7f1d671ba1139b5d"
88
+ "gitHead": "df149736d1e85335aaeb9c547ff3bdd1161f9b33"
89
89
  }