@alwatr/node-fs 1.0.2 → 1.0.4

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.4](https://github.com/Alwatr/nanolib/compare/@alwatr/node-fs@1.0.3...@alwatr/node-fs@1.0.4) (2024-01-31)
7
+
8
+ ### Bug Fixes
9
+
10
+ * exported types by add .js extensions to all imports ([fc3d83e](https://github.com/Alwatr/nanolib/commit/fc3d83e8f375da97ba276314b2e6966aa82c9b3f)) by @AliMD
11
+
12
+ ### Miscellaneous Chores
13
+
14
+ * **deps:** update ([1a45030](https://github.com/Alwatr/nanolib/commit/1a450305440b710a300787d4ca24b1ed8c6a39d7)) by @AliMD
15
+
16
+ ## [1.0.3](https://github.com/Alwatr/nanolib/compare/@alwatr/node-fs@1.0.2...@alwatr/node-fs@1.0.3) (2024-01-24)
17
+
18
+ **Note:** Version bump only for package @alwatr/node-fs
19
+
6
20
  ## [1.0.2](https://github.com/Alwatr/nanolib/compare/@alwatr/node-fs@1.0.1...@alwatr/node-fs@1.0.2) (2024-01-20)
7
21
 
8
22
  **Note:** Version bump only for package @alwatr/node-fs
@@ -15,25 +29,25 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
15
29
 
16
30
  ### Features
17
31
 
18
- * **node-fs:** enhance type of JSON-related functions ([69751ed](https://github.com/Alwatr/nanolib/commit/69751ed658f76eb439a9834f861c01c06542352b)) by @AliMD
32
+ - **node-fs:** enhance type of JSON-related functions ([69751ed](https://github.com/Alwatr/nanolib/commit/69751ed658f76eb439a9834f861c01c06542352b)) by @AliMD
19
33
 
20
34
  # 1.0.0-beta.0 (2024-01-08)
21
35
 
22
36
  ### Bug Fixes
23
37
 
24
- * **node-fs:** Update import statement for make-file module ([7bddaa0](https://github.com/Alwatr/nanolib/commit/7bddaa0d629c304fedd07c4022d7503aa9b974b6)) by @AliMD
38
+ - **node-fs:** Update import statement for make-file module ([7bddaa0](https://github.com/Alwatr/nanolib/commit/7bddaa0d629c304fedd07c4022d7503aa9b974b6)) by @AliMD
25
39
 
26
40
  ### Features
27
41
 
28
- * **node-fs:** Add make-file-bench demo script ([ca3a57a](https://github.com/Alwatr/nanolib/commit/ca3a57a31de5a8b9c76c9d33cb9755809f09a335)) by @AliMD
29
- * **node-fs:** base package ([74cbe48](https://github.com/Alwatr/nanolib/commit/74cbe4821c991d1f6c3d5805b29602b922c3f505)) by @njfamirm
30
- * **node-fs:** copy from store ([5c23e01](https://github.com/Alwatr/nanolib/commit/5c23e01e42d438c15dcd272d2cc351527865c86c)) by @njfamirm
31
- * **node-fs:** definePackage and logger ([3880703](https://github.com/Alwatr/nanolib/commit/38807039895c784be6168111506b0721980cbb29)) by @njfamirm
32
- * **node-fs:** demo ([31f3740](https://github.com/Alwatr/nanolib/commit/31f37405a7bb2b4b02440de7f96f5cc8a474aba9)) by @njfamirm
33
- * **node-fs:** enhance json types ([e85d927](https://github.com/Alwatr/nanolib/commit/e85d9276374a8c5171901791a3a43acad64843a6)) by @AliMD
34
- * **node-fs:** enhance writeJson type ([9010c72](https://github.com/Alwatr/nanolib/commit/9010c723b1f34cd647f157466554b312fc84a1d3)) by @AliMD
35
- * **node-fs:** makeFile ([186ba09](https://github.com/Alwatr/nanolib/commit/186ba09822bddfe200a0ac4725063785cadd0999)) by @njfamirm
36
- * **node-fs:** readFile under asyncQueue ([ab12153](https://github.com/Alwatr/nanolib/commit/ab12153281600a4ac90ef627811b430a95140ddd)) by @AliMD
37
- * **node-fs:** rewrite new writeFile method ([7534ed1](https://github.com/Alwatr/nanolib/commit/7534ed158cdfe1ee593050255c17449960b13001)) by @AliMD
38
- * **node-fs:** writeFile under asyncQueue ([6d8b3d7](https://github.com/Alwatr/nanolib/commit/6d8b3d7953938fc954e8ce350206555030560978)) by @AliMD
39
- * **node-fs:** writeJson method ([581d4f9](https://github.com/Alwatr/nanolib/commit/581d4f958ccb262c13f23881151616b7ec5e93ee)) by @AliMD
42
+ - **node-fs:** Add make-file-bench demo script ([ca3a57a](https://github.com/Alwatr/nanolib/commit/ca3a57a31de5a8b9c76c9d33cb9755809f09a335)) by @AliMD
43
+ - **node-fs:** base package ([74cbe48](https://github.com/Alwatr/nanolib/commit/74cbe4821c991d1f6c3d5805b29602b922c3f505)) by @njfamirm
44
+ - **node-fs:** copy from store ([5c23e01](https://github.com/Alwatr/nanolib/commit/5c23e01e42d438c15dcd272d2cc351527865c86c)) by @njfamirm
45
+ - **node-fs:** definePackage and logger ([3880703](https://github.com/Alwatr/nanolib/commit/38807039895c784be6168111506b0721980cbb29)) by @njfamirm
46
+ - **node-fs:** demo ([31f3740](https://github.com/Alwatr/nanolib/commit/31f37405a7bb2b4b02440de7f96f5cc8a474aba9)) by @njfamirm
47
+ - **node-fs:** enhance json types ([e85d927](https://github.com/Alwatr/nanolib/commit/e85d9276374a8c5171901791a3a43acad64843a6)) by @AliMD
48
+ - **node-fs:** enhance writeJson type ([9010c72](https://github.com/Alwatr/nanolib/commit/9010c723b1f34cd647f157466554b312fc84a1d3)) by @AliMD
49
+ - **node-fs:** makeFile ([186ba09](https://github.com/Alwatr/nanolib/commit/186ba09822bddfe200a0ac4725063785cadd0999)) by @njfamirm
50
+ - **node-fs:** readFile under asyncQueue ([ab12153](https://github.com/Alwatr/nanolib/commit/ab12153281600a4ac90ef627811b430a95140ddd)) by @AliMD
51
+ - **node-fs:** rewrite new writeFile method ([7534ed1](https://github.com/Alwatr/nanolib/commit/7534ed158cdfe1ee593050255c17449960b13001)) by @AliMD
52
+ - **node-fs:** writeFile under asyncQueue ([6d8b3d7](https://github.com/Alwatr/nanolib/commit/6d8b3d7953938fc954e8ce350206555030560978)) by @AliMD
53
+ - **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.2 */
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.2"),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.4 */
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.4"),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.2 */
2
- import{AsyncQueue as w}from"@alwatr/async-queue";import{definePackage as x}from"@alwatr/logger";var e=x("@alwatr/node-fs","1.0.2"),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.4 */
2
+ import{AsyncQueue as w}from"@alwatr/async-queue";import{definePackage as x}from"@alwatr/logger";var e=x("@alwatr/node-fs","1.0.4"),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.2",
3
+ "version": "1.0.4",
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.1",
77
- "@alwatr/flat-string": "^1.0.13",
78
- "@alwatr/logger": "^3.2.3"
76
+ "@alwatr/async-queue": "^1.2.3",
77
+ "@alwatr/flat-string": "^1.0.15",
78
+ "@alwatr/logger": "^3.2.5"
79
79
  },
80
80
  "devDependencies": {
81
- "@alwatr/nano-build": "^1.3.1",
81
+ "@alwatr/nano-build": "^1.3.3",
82
82
  "@alwatr/prettier-config": "^1.0.4",
83
- "@alwatr/tsconfig-base": "^1.1.1",
84
- "@alwatr/type-helper": "^1.1.0",
85
- "@types/node": "^20.11.5",
83
+ "@alwatr/tsconfig-base": "^1.1.2",
84
+ "@alwatr/type-helper": "^1.2.1",
85
+ "@types/node": "^20.11.13",
86
86
  "typescript": "^5.3.3"
87
87
  },
88
- "gitHead": "86f36bc089c81a22d5ca27b0745db65ec2f1eca3"
88
+ "gitHead": "54726b7ac06d4a6ffb42731b58e8d976de1211bd"
89
89
  }