@alwatr/node-fs 5.0.0 → 5.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,23 @@
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
+ ## [5.3.0](https://github.com/Alwatr/nanolib/compare/v5.2.1...v5.3.0) (2025-02-03)
7
+
8
+ ### Miscellaneous Chores
9
+
10
+ * edit README ([3860b3d](https://github.com/Alwatr/nanolib/commit/3860b3df48ab82dc479d5236c2e8579df614aabf)) by @ArmanAsadian
11
+
12
+ ### Dependencies update
13
+
14
+ * bump the development-dependencies group across 1 directory with 11 updates ([cb79d07](https://github.com/Alwatr/nanolib/commit/cb79d072a57c79e1c01abff1a293d6757bb65350)) by @dependabot[bot]
15
+ * update typescript and @types/node to version 5.7.3 and 22.13.0 respectively across multiple packages ([ddab05b](https://github.com/Alwatr/nanolib/commit/ddab05b5d767c30191f36a065e4bc88744e8e3fe)) by @alimd
16
+
17
+ ## [5.1.0](https://github.com/Alwatr/nanolib/compare/v5.0.0...v5.1.0) (2024-11-04)
18
+
19
+ ### Features
20
+
21
+ * **node-fs:** enhance makeEmptyFile to create directories recursively if they don't exist ([723a770](https://github.com/Alwatr/nanolib/commit/723a7701c60c3872fc41cb041c1044793145280f)) by @AliMD
22
+
6
23
  ## 5.0.0 (2024-11-02)
7
24
 
8
25
  ### ⚠ BREAKING CHANGES
package/README.md CHANGED
@@ -40,8 +40,6 @@ console.log(data.a); // 3
40
40
 
41
41
  The following companies, organizations, and individuals support Nanolib ongoing maintenance and development. Become a Sponsor to get your logo on our README and website.
42
42
 
43
- [![Exir Studio](https://avatars.githubusercontent.com/u/181194967?s=200&v=4)](https://exirstudio.com)
44
-
45
43
  ### Contributing
46
44
 
47
45
  Contributions are welcome! Please read our [contribution guidelines](https://github.com/Alwatr/.github/blob/next/CONTRIBUTING.md) before submitting a pull request.
package/dist/main.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /* @alwatr/node-fs v5.0.0 */
1
+ /* @alwatr/node-fs v5.3.0 */
2
2
  "use strict";
3
3
  var __defProp = Object.defineProperty;
4
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -21,12 +21,12 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  // src/main.ts
22
22
  var main_exports = {};
23
23
  __export(main_exports, {
24
- existsSync: () => import_node_fs3.existsSync,
24
+ existsSync: () => import_node_fs4.existsSync,
25
25
  makeEmptyFile: () => makeEmptyFile,
26
26
  readFile: () => readFile,
27
27
  readFileSync: () => readFileSync,
28
28
  readJson: () => readJson,
29
- resolve: () => import_node_path2.resolve,
29
+ resolve: () => import_node_path3.resolve,
30
30
  unlink: () => import_promises4.unlink,
31
31
  writeFile: () => writeFile,
32
32
  writeFileSync: () => writeFileSync,
@@ -43,7 +43,7 @@ var import_flat_string = require("@alwatr/flat-string");
43
43
  var import_async_queue = require("@alwatr/async-queue");
44
44
  var import_logger = require("@alwatr/logger");
45
45
  var import_package_tracer = require("@alwatr/package-tracer");
46
- __dev_mode__: import_package_tracer.packageTracer.add("@alwatr/node-fs", "5.0.0");
46
+ __dev_mode__: import_package_tracer.packageTracer.add("@alwatr/node-fs", "5.3.0");
47
47
  var logger = /* @__PURE__ */ (0, import_logger.createLogger)("@alwatr/node-fs");
48
48
  var asyncQueue = /* @__PURE__ */ new import_async_queue.AsyncQueue();
49
49
 
@@ -156,15 +156,29 @@ function writeJson(path, data, sync = false) {
156
156
  }
157
157
 
158
158
  // src/make-file.ts
159
+ var import_node_fs3 = require("node:fs");
159
160
  var import_promises3 = require("node:fs/promises");
161
+ var import_node_path2 = require("node:path");
160
162
  async function makeEmptyFile(path) {
161
163
  logger.logMethodArgs?.("makeEmptyFile", "..." + path.slice(-32));
162
- return (await (0, import_promises3.open)(path, "w")).close();
164
+ try {
165
+ const pathExists = (0, import_node_fs3.existsSync)(path);
166
+ if (!pathExists) {
167
+ const dir = (0, import_node_path2.dirname)(path);
168
+ if (!(0, import_node_fs3.existsSync)(dir)) {
169
+ await (0, import_promises3.mkdir)(dir, { recursive: true });
170
+ }
171
+ }
172
+ await (await (0, import_promises3.open)(path, "w")).close();
173
+ } catch (err) {
174
+ logger.error("makeEmptyFile", "make_file_failed", { path }, err);
175
+ throw new Error("make_file_failed", { cause: err.cause });
176
+ }
163
177
  }
164
178
 
165
179
  // src/main.ts
166
- var import_node_path2 = require("node:path");
167
- var import_node_fs3 = require("node:fs");
180
+ var import_node_path3 = require("node:path");
181
+ var import_node_fs4 = require("node:fs");
168
182
  var import_promises4 = require("node:fs/promises");
169
183
  // Annotate the CommonJS export names for ESM import in node:
170
184
  0 && (module.exports = {
package/dist/main.cjs.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/main.ts", "../src/read-file.ts", "../src/common.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.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 {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 {AsyncQueue} from '@alwatr/async-queue';\nimport {createLogger} from '@alwatr/logger';\nimport {packageTracer} from '@alwatr/package-tracer';\n\n__dev_mode__: packageTracer.add(__package_name__, __package_version__);\n\nexport const logger = /* #__PURE__ */ createLogger('@alwatr/node-fs');\n\nexport const asyncQueue = /* #__PURE__ */ new AsyncQueue();\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: Buffer | 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: Buffer | 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\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\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\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
- "mappings": "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",
6
- "names": ["readFileSync_", "readFile_", "import_node_fs", "import_promises", "writeFileSync_", "writeFile_", "import_flat_string", "import_promises", "import_node_path", "import_node_fs", "import_promises"]
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 {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 {AsyncQueue} from '@alwatr/async-queue';\nimport {createLogger} from '@alwatr/logger';\nimport {packageTracer} from '@alwatr/package-tracer';\n\n__dev_mode__: packageTracer.add(__package_name__, __package_version__);\n\nexport const logger = /* #__PURE__ */ createLogger('@alwatr/node-fs');\n\nexport const asyncQueue = /* #__PURE__ */ new AsyncQueue();\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: Buffer | 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: Buffer | 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\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\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\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 { existsSync } from 'node:fs';\nimport {mkdir, open} from 'node:fs/promises';\nimport { dirname } from 'node:path';\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('./dir/file.txt');\n * ```\n */\nexport async function makeEmptyFile(path: string): Promise<void> {\n logger.logMethodArgs?.('makeEmptyFile', '...' + path.slice(-32));\n try {\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 (await open(path, 'w')).close();\n }\n catch (err) {\n logger.error('makeEmptyFile', 'make_file_failed', {path}, err);\n throw new Error('make_file_failed', {cause: (err as Error).cause});\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,qBAA4C;AAC5C,sBAAoC;AAEpC,yBAAyB;;;ACHzB,yBAAyB;AACzB,oBAA2B;AAC3B,4BAA4B;AAE5B,aAAc,qCAAc,IAAI,mBAAkB,OAAmB;AAE9D,IAAM,SAAyB,gDAAa,iBAAiB;AAE7D,IAAM,aAA6B,oBAAI,8BAAW;;;ADSlD,SAAS,aAAa,MAAsB;AACjD,SAAO,gBAAgB,gBAAgB,QAAQ,KAAK,MAAM,GAAG,CAAC;AAE9D,MAAI;AACF,eAAO,mCAAW,eAAAA,cAAc,MAAM,EAAC,UAAU,SAAS,MAAM,IAAG,CAAC,CAAC;AAAA,EACvE,SACO,KAAK;AACV,WAAO,MAAM,gBAAgB,oBAAoB,EAAC,KAAI,GAAG,GAAG;AAC5D,UAAM,IAAI,MAAM,oBAAoB,EAAC,OAAQ,IAAc,MAAK,CAAC;AAAA,EACnE;AACF;AAcO,SAAS,SAAS,MAA+B;AACtD,SAAO,gBAAgB,YAAY,QAAQ,KAAK,MAAM,GAAG,CAAC;AAE1D,SAAO,WAAW,KAAK,MAAM,YAAY;AACvC,QAAI;AACF,iBAAO,+BAAW,UAAM,gBAAAC,UAAU,MAAM,EAAC,UAAU,SAAS,MAAM,IAAG,CAAC,CAAC;AAAA,IACzE,SACO,KAAK;AACV,aAAO,MAAM,YAAY,oBAAoB,EAAC,KAAI,GAAG,GAAG;AACxD,YAAM,IAAI,MAAM,oBAAoB,EAAC,OAAQ,IAAc,MAAK,CAAC;AAAA,IACnE;AAAA,EACF,CAAC;AACH;;;AErDA,IAAAC,kBAAiF;AACjF,IAAAC,mBAAqD;AACrD,uBAAsB;AAmBf,SAAS,cAAc,MAAc,SAAgC;AAC1E,SAAO,gBAAgB,iBAAiB,QAAQ,KAAK,MAAM,GAAG,CAAC;AAC/D,MAAI;AACF,UAAM,iBAAa,4BAAW,IAAI;AAClC,QAAI,CAAC,YAAY;AACf,YAAM,UAAM,0BAAQ,IAAI;AACxB,UAAI,KAAC,4BAAW,GAAG,GAAG;AACpB,uCAAU,KAAK,EAAC,WAAW,KAAI,CAAC;AAAA,MAClC;AAAA,IACF;AACA,wBAAAC,eAAe,OAAO,QAAQ,SAAS,EAAC,UAAU,SAAS,MAAM,IAAG,CAAC;AACrE,QAAI,YAAY;AACd,sCAAW,MAAM,OAAO,MAAM;AAAA,IAChC;AACA,oCAAW,OAAO,QAAQ,IAAI;AAC9B,WAAO,WAAW,yBAAyB,QAAQ,KAAK,MAAM,GAAG,CAAC;AAAA,EACpE,SACO,KAAK;AACV,WAAO,MAAM,iBAAiB,qBAAqB,EAAC,KAAI,GAAG,GAAG;AAC9D,UAAM,IAAI,MAAM,qBAAqB,EAAC,OAAQ,IAAc,MAAK,CAAC;AAAA,EACpE;AACF;AAiBO,SAAS,UAAU,MAAc,SAAyC;AAC/E,SAAO,gBAAgB,aAAa,QAAQ,KAAK,MAAM,GAAG,CAAC;AAC3D,SAAO,WAAW,KAAK,MAAM,YAAY;AACvC,QAAI;AACF,aAAO,WAAW,mBAAmB,QAAQ,KAAK,MAAM,GAAG,CAAC;AAC5D,YAAM,iBAAa,4BAAW,IAAI;AAClC,UAAI,CAAC,YAAY;AACf,cAAM,UAAM,0BAAQ,IAAI;AACxB,YAAI,KAAC,4BAAW,GAAG,GAAG;AACpB,oBAAM,wBAAM,KAAK,EAAC,WAAW,KAAI,CAAC;AAAA,QACpC;AAAA,MACF;AACA,gBAAM,iBAAAC,WAAW,OAAO,QAAQ,SAAS,EAAC,UAAU,SAAS,MAAM,IAAG,CAAC;AACvE,UAAI,YAAY;AACd,kBAAM,yBAAO,MAAM,OAAO,MAAM;AAAA,MAClC;AACA,gBAAM,yBAAO,OAAO,QAAQ,IAAI;AAChC,aAAO,WAAW,qBAAqB,QAAQ,KAAK,MAAM,GAAG,CAAC;AAAA,IAChE,SACO,KAAK;AACV,aAAO,MAAM,aAAa,qBAAqB,EAAC,KAAI,GAAG,GAAG;AAC1D,YAAM,IAAI,MAAM,qBAAqB,EAAC,OAAQ,IAAc,MAAK,CAAC;AAAA,IACpE;AAAA,EACF,CAAC;AACH;;;ACtEO,SAAS,UAA+B,SAAoB;AACjE,MAAI;AACF,WAAO,KAAK,MAAM,OAAO;AAAA,EAC3B,SACO,KAAK;AACV,WAAO,MAAM,aAAa,gBAAgB,GAAG;AAC7C,UAAM,IAAI,MAAM,gBAAgB,EAAC,OAAQ,IAAc,MAAK,CAAC;AAAA,EAC/D;AACF;AAaO,SAAS,cAAmC,MAAiB;AAClE,MAAI;AACF,WAAO,KAAK,UAAU,IAAI;AAAA,EAC5B,SACO,KAAK;AACV,WAAO,MAAM,iBAAiB,oBAAoB,GAAG;AACrD,UAAM,IAAI,MAAM,oBAAoB,EAAC,OAAQ,IAAc,MAAK,CAAC;AAAA,EACnE;AACF;;;ACQO,SAAS,SAA8B,MAAc,OAAO,OAAwB;AACzF,SAAO,gBAAgB,YAAY,EAAC,MAAM,KAAK,MAAM,GAAG,GAAG,KAAI,CAAC;AAChE,MAAI,SAAS,MAAM;AACjB,WAAO,UAAa,aAAa,IAAI,CAAC;AAAA,EACxC,OACK;AACH,WAAO,SAAS,IAAI,EAAE,KAAK,CAAC,YAAY,UAAa,OAAO,CAAC;AAAA,EAC/D;AACF;;;AC1DA,IAAAC,sBAAyB;AAoDlB,SAAS,UAA+B,MAAc,MAAS,OAAO,OAA2B;AACtG,SAAO,gBAAgB,aAAa,QAAQ,KAAK,MAAM,GAAG,CAAC;AAC3D,QAAM,cAAU,gCAAW,cAAc,IAAI,CAAC;AAC9C,SAAO,SAAS,OAAO,cAAc,MAAM,OAAO,IAAI,UAAU,MAAM,OAAO;AAC/E;;;ACxDA,IAAAC,kBAA2B;AAC3B,IAAAC,mBAA0B;AAC1B,IAAAC,oBAAwB;AAcxB,eAAsB,cAAc,MAA6B;AAC/D,SAAO,gBAAgB,iBAAiB,QAAQ,KAAK,MAAM,GAAG,CAAC;AAC/D,MAAI;AACF,UAAM,iBAAa,4BAAW,IAAI;AAClC,QAAI,CAAC,YAAY;AACf,YAAM,UAAM,2BAAQ,IAAI;AACxB,UAAI,KAAC,4BAAW,GAAG,GAAG;AACpB,kBAAM,wBAAM,KAAK,EAAC,WAAW,KAAI,CAAC;AAAA,MACpC;AAAA,IACF;AACA,WAAO,UAAM,uBAAK,MAAM,GAAG,GAAG,MAAM;AAAA,EACtC,SACO,KAAK;AACV,WAAO,MAAM,iBAAiB,oBAAoB,EAAC,KAAI,GAAG,GAAG;AAC7D,UAAM,IAAI,MAAM,oBAAoB,EAAC,OAAQ,IAAc,MAAK,CAAC;AAAA,EACnE;AACF;;;AP1BA,IAAAC,oBAAsB;AACtB,IAAAC,kBAAyB;AACzB,IAAAC,mBAAqB;",
6
+ "names": ["readFileSync_", "readFile_", "import_node_fs", "import_promises", "writeFileSync_", "writeFile_", "import_flat_string", "import_node_fs", "import_promises", "import_node_path", "import_node_path", "import_node_fs", "import_promises"]
7
7
  }
package/dist/main.mjs CHANGED
@@ -1,4 +1,4 @@
1
- /* @alwatr/node-fs v5.0.0 */
1
+ /* @alwatr/node-fs v5.3.0 */
2
2
 
3
3
  // src/read-file.ts
4
4
  import { readFileSync as readFileSync_ } from "node:fs";
@@ -9,7 +9,7 @@ import { flatString } from "@alwatr/flat-string";
9
9
  import { AsyncQueue } from "@alwatr/async-queue";
10
10
  import { createLogger } from "@alwatr/logger";
11
11
  import { packageTracer } from "@alwatr/package-tracer";
12
- __dev_mode__: packageTracer.add("@alwatr/node-fs", "5.0.0");
12
+ __dev_mode__: packageTracer.add("@alwatr/node-fs", "5.3.0");
13
13
  var logger = /* @__PURE__ */ createLogger("@alwatr/node-fs");
14
14
  var asyncQueue = /* @__PURE__ */ new AsyncQueue();
15
15
 
@@ -122,18 +122,32 @@ function writeJson(path, data, sync = false) {
122
122
  }
123
123
 
124
124
  // src/make-file.ts
125
- import { open } from "node:fs/promises";
125
+ import { existsSync as existsSync2 } from "node:fs";
126
+ import { mkdir as mkdir2, open } from "node:fs/promises";
127
+ import { dirname as dirname2 } from "node:path";
126
128
  async function makeEmptyFile(path) {
127
129
  logger.logMethodArgs?.("makeEmptyFile", "..." + path.slice(-32));
128
- return (await open(path, "w")).close();
130
+ try {
131
+ const pathExists = existsSync2(path);
132
+ if (!pathExists) {
133
+ const dir = dirname2(path);
134
+ if (!existsSync2(dir)) {
135
+ await mkdir2(dir, { recursive: true });
136
+ }
137
+ }
138
+ await (await open(path, "w")).close();
139
+ } catch (err) {
140
+ logger.error("makeEmptyFile", "make_file_failed", { path }, err);
141
+ throw new Error("make_file_failed", { cause: err.cause });
142
+ }
129
143
  }
130
144
 
131
145
  // src/main.ts
132
146
  import { resolve } from "node:path";
133
- import { existsSync as existsSync2 } from "node:fs";
147
+ import { existsSync as existsSync3 } from "node:fs";
134
148
  import { unlink } from "node:fs/promises";
135
149
  export {
136
- existsSync2 as existsSync,
150
+ existsSync3 as existsSync,
137
151
  makeEmptyFile,
138
152
  readFile,
139
153
  readFileSync,
package/dist/main.mjs.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/read-file.ts", "../src/common.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 {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 {AsyncQueue} from '@alwatr/async-queue';\nimport {createLogger} from '@alwatr/logger';\nimport {packageTracer} from '@alwatr/package-tracer';\n\n__dev_mode__: packageTracer.add(__package_name__, __package_version__);\n\nexport const logger = /* #__PURE__ */ createLogger('@alwatr/node-fs');\n\nexport const asyncQueue = /* #__PURE__ */ new AsyncQueue();\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: Buffer | 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: Buffer | 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\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\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\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
- "mappings": "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",
6
- "names": ["flatString", "flatString", "existsSync"]
4
+ "sourcesContent": ["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 {AsyncQueue} from '@alwatr/async-queue';\nimport {createLogger} from '@alwatr/logger';\nimport {packageTracer} from '@alwatr/package-tracer';\n\n__dev_mode__: packageTracer.add(__package_name__, __package_version__);\n\nexport const logger = /* #__PURE__ */ createLogger('@alwatr/node-fs');\n\nexport const asyncQueue = /* #__PURE__ */ new AsyncQueue();\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: Buffer | 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: Buffer | 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\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\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\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 { existsSync } from 'node:fs';\nimport {mkdir, open} from 'node:fs/promises';\nimport { dirname } from 'node:path';\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('./dir/file.txt');\n * ```\n */\nexport async function makeEmptyFile(path: string): Promise<void> {\n logger.logMethodArgs?.('makeEmptyFile', '...' + path.slice(-32));\n try {\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 (await open(path, 'w')).close();\n }\n catch (err) {\n logger.error('makeEmptyFile', 'make_file_failed', {path}, err);\n throw new Error('make_file_failed', {cause: (err as Error).cause});\n }\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
+ "mappings": "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",
6
+ "names": ["flatString", "flatString", "existsSync", "mkdir", "dirname", "existsSync", "dirname", "mkdir", "existsSync"]
7
7
  }
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * @example
7
7
  * ```ts
8
- * await makeFile('./file.txt');
8
+ * await makeFile('./dir/file.txt');
9
9
  * ```
10
10
  */
11
11
  export declare function makeEmptyFile(path: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"make-file.d.ts","sourceRoot":"","sources":["../src/make-file.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG/D"}
1
+ {"version":3,"file":"make-file.d.ts","sourceRoot":"","sources":["../src/make-file.ts"],"names":[],"mappings":"AAMA;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB/D"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alwatr/node-fs",
3
- "version": "5.0.0",
3
+ "version": "5.3.0",
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": [
@@ -74,18 +74,18 @@
74
74
  "clean": "rm -rfv dist *.tsbuildinfo"
75
75
  },
76
76
  "dependencies": {
77
- "@alwatr/async-queue": "^5.0.0",
78
- "@alwatr/flat-string": "^5.0.0",
79
- "@alwatr/logger": "^5.0.0",
80
- "@alwatr/package-tracer": "^5.0.0"
77
+ "@alwatr/async-queue": "^5.3.0",
78
+ "@alwatr/flat-string": "^5.3.0",
79
+ "@alwatr/logger": "^5.3.0",
80
+ "@alwatr/package-tracer": "^5.3.0"
81
81
  },
82
82
  "devDependencies": {
83
- "@alwatr/nano-build": "^5.0.0",
83
+ "@alwatr/nano-build": "^5.3.0",
84
84
  "@alwatr/prettier-config": "^5.0.0",
85
85
  "@alwatr/tsconfig-base": "^5.0.0",
86
- "@alwatr/type-helper": "^5.0.0",
87
- "@types/node": "^22.8.6",
88
- "typescript": "^5.6.3"
86
+ "@alwatr/type-helper": "^5.3.0",
87
+ "@types/node": "^22.13.0",
88
+ "typescript": "^5.7.3"
89
89
  },
90
- "gitHead": "7d12943fafa8ef50636346e66ff56c50e2fd0c72"
90
+ "gitHead": "9cfb80ed0666355887d8e3865fc75311420ac371"
91
91
  }