@ainc/fs 0.1.17 → 0.1.19

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/dist/copy.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ /**
2
+ *****************************************
3
+ * 选项
4
+ *****************************************
5
+ */
6
+ export interface Options {
7
+ force?: boolean;
8
+ }
9
+ /**
10
+ *****************************************
11
+ * 复制文件
12
+ *****************************************
13
+ */
14
+ export declare function copy(src: string, dest: string, options?: Options): boolean;
package/dist/copy.js ADDED
@@ -0,0 +1,51 @@
1
+ /**
2
+ *****************************************
3
+ * Created by edonet@163.com
4
+ * Created on 2025-05-25 11:02:21
5
+ *****************************************
6
+ */
7
+ 'use strict';
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.copy = copy;
10
+ /**
11
+ *****************************************
12
+ * 加载依赖
13
+ *****************************************
14
+ */
15
+ const node_fs_1 = require("node:fs");
16
+ const node_path_1 = require("node:path");
17
+ const stat_1 = require("./stat");
18
+ const mkdir_1 = require("./mkdir");
19
+ const rm_1 = require("./rm");
20
+ /**
21
+ *****************************************
22
+ * 复制文件
23
+ *****************************************
24
+ */
25
+ function copy(src, dest, options) {
26
+ const srcStats = (0, stat_1.stat)(src);
27
+ if (!srcStats) {
28
+ return false;
29
+ }
30
+ // 处理目标文件
31
+ const destStats = (0, stat_1.stat)(dest);
32
+ if (destStats) {
33
+ if (!options || !options.force) {
34
+ return false;
35
+ }
36
+ else {
37
+ (0, rm_1.rm)(dest);
38
+ }
39
+ }
40
+ // 创建目录
41
+ if (!(0, mkdir_1.mkdir)((0, node_path_1.dirname)(dest), options)) {
42
+ return false;
43
+ }
44
+ // 执行拷贝
45
+ if (srcStats.isDirectory()) {
46
+ return ((0, node_fs_1.cpSync)(src, dest, { ...options, recursive: true }), true);
47
+ }
48
+ else {
49
+ return ((0, node_fs_1.writeFileSync)(dest, (0, node_fs_1.readFileSync)(src)), true);
50
+ }
51
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ *****************************************
3
+ * 获取父级目录
4
+ *****************************************
5
+ */
6
+ export declare function dirname(path: string): string | undefined;
@@ -0,0 +1,27 @@
1
+ /**
2
+ *****************************************
3
+ * Created by edonet@163.com
4
+ * Created on 2025-05-25 09:35:01
5
+ *****************************************
6
+ */
7
+ 'use strict';
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.dirname = dirname;
10
+ /**
11
+ *****************************************
12
+ * 加载依赖
13
+ *****************************************
14
+ */
15
+ const node_path_1 = require("node:path");
16
+ /**
17
+ *****************************************
18
+ * 获取父级目录
19
+ *****************************************
20
+ */
21
+ function dirname(path) {
22
+ const parent = (0, node_path_1.dirname)(path);
23
+ // 校验目录
24
+ if (parent && parent !== path) {
25
+ return parent;
26
+ }
27
+ }
package/dist/findUp.js CHANGED
@@ -6,7 +6,7 @@
6
6
  */
7
7
  'use strict';
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.findUp = void 0;
9
+ exports.findUp = findUp;
10
10
  /**
11
11
  *****************************************
12
12
  * 加载依赖
@@ -33,4 +33,3 @@ function findUp(from, handler) {
33
33
  current = (0, node_path_1.dirname)(current);
34
34
  }
35
35
  }
36
- exports.findUp = findUp;
package/dist/index.d.ts CHANGED
@@ -3,11 +3,15 @@
3
3
  * 导出接口
4
4
  *****************************************
5
5
  */
6
- export { stat } from './stat';
7
- export { isRelative, relative } from './relative';
6
+ export { dirname } from './dirname';
7
+ export { mkdir } from './mkdir';
8
+ export { stat, isDir, isFile } from './stat';
9
+ export { relative, isRelative } from './relative';
8
10
  export { resolveFile } from './resolveFile';
9
11
  export { readFile } from './readFile';
12
+ export { writeFile } from './writeFile';
13
+ export { copy } from './copy';
10
14
  export { rm } from './rm';
11
15
  export { lookup } from './lookup';
12
- export { findUp } from './findUp';
13
16
  export { json, jsonc } from './jsonc';
17
+ export { findUp } from './findUp';
package/dist/index.js CHANGED
@@ -6,27 +6,37 @@
6
6
  */
7
7
  'use strict';
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.jsonc = exports.json = exports.findUp = exports.lookup = exports.rm = exports.readFile = exports.resolveFile = exports.relative = exports.isRelative = exports.stat = void 0;
9
+ exports.findUp = exports.jsonc = exports.json = exports.lookup = exports.rm = exports.copy = exports.writeFile = exports.readFile = exports.resolveFile = exports.isRelative = exports.relative = exports.isFile = exports.isDir = exports.stat = exports.mkdir = exports.dirname = void 0;
10
10
  /**
11
11
  *****************************************
12
12
  * 导出接口
13
13
  *****************************************
14
14
  */
15
+ var dirname_1 = require("./dirname");
16
+ Object.defineProperty(exports, "dirname", { enumerable: true, get: function () { return dirname_1.dirname; } });
17
+ var mkdir_1 = require("./mkdir");
18
+ Object.defineProperty(exports, "mkdir", { enumerable: true, get: function () { return mkdir_1.mkdir; } });
15
19
  var stat_1 = require("./stat");
16
20
  Object.defineProperty(exports, "stat", { enumerable: true, get: function () { return stat_1.stat; } });
21
+ Object.defineProperty(exports, "isDir", { enumerable: true, get: function () { return stat_1.isDir; } });
22
+ Object.defineProperty(exports, "isFile", { enumerable: true, get: function () { return stat_1.isFile; } });
17
23
  var relative_1 = require("./relative");
18
- Object.defineProperty(exports, "isRelative", { enumerable: true, get: function () { return relative_1.isRelative; } });
19
24
  Object.defineProperty(exports, "relative", { enumerable: true, get: function () { return relative_1.relative; } });
25
+ Object.defineProperty(exports, "isRelative", { enumerable: true, get: function () { return relative_1.isRelative; } });
20
26
  var resolveFile_1 = require("./resolveFile");
21
27
  Object.defineProperty(exports, "resolveFile", { enumerable: true, get: function () { return resolveFile_1.resolveFile; } });
22
28
  var readFile_1 = require("./readFile");
23
29
  Object.defineProperty(exports, "readFile", { enumerable: true, get: function () { return readFile_1.readFile; } });
30
+ var writeFile_1 = require("./writeFile");
31
+ Object.defineProperty(exports, "writeFile", { enumerable: true, get: function () { return writeFile_1.writeFile; } });
32
+ var copy_1 = require("./copy");
33
+ Object.defineProperty(exports, "copy", { enumerable: true, get: function () { return copy_1.copy; } });
24
34
  var rm_1 = require("./rm");
25
35
  Object.defineProperty(exports, "rm", { enumerable: true, get: function () { return rm_1.rm; } });
26
36
  var lookup_1 = require("./lookup");
27
37
  Object.defineProperty(exports, "lookup", { enumerable: true, get: function () { return lookup_1.lookup; } });
28
- var findUp_1 = require("./findUp");
29
- Object.defineProperty(exports, "findUp", { enumerable: true, get: function () { return findUp_1.findUp; } });
30
38
  var jsonc_1 = require("./jsonc");
31
39
  Object.defineProperty(exports, "json", { enumerable: true, get: function () { return jsonc_1.json; } });
32
40
  Object.defineProperty(exports, "jsonc", { enumerable: true, get: function () { return jsonc_1.jsonc; } });
41
+ var findUp_1 = require("./findUp");
42
+ Object.defineProperty(exports, "findUp", { enumerable: true, get: function () { return findUp_1.findUp; } });
package/dist/jsonc.js CHANGED
@@ -6,7 +6,8 @@
6
6
  */
7
7
  'use strict';
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.jsonc = exports.json = void 0;
9
+ exports.json = json;
10
+ exports.jsonc = jsonc;
10
11
  /**
11
12
  *****************************************
12
13
  * 加载依赖
@@ -21,7 +22,6 @@ const stripComments_1 = require("./utils/stripComments");
21
22
  function json(content) {
22
23
  return JSON.parse(content);
23
24
  }
24
- exports.json = json;
25
25
  /**
26
26
  *****************************************
27
27
  * 解析 JSONC
@@ -30,4 +30,3 @@ exports.json = json;
30
30
  function jsonc(content) {
31
31
  return JSON.parse((0, stripComments_1.stripComments)(content));
32
32
  }
33
- exports.jsonc = jsonc;
package/dist/lookup.d.ts CHANGED
@@ -1,18 +1,16 @@
1
1
  /**
2
2
  *****************************************
3
- * 查找选项
3
+ * 选项
4
4
  *****************************************
5
5
  */
6
- interface Options<T> {
6
+ export interface Options<T> {
7
7
  from?: string;
8
- cache?: Map<string, T>;
9
- extensions?: string[];
10
- readFile?(path: string): T;
8
+ cache?: Map<string, T | undefined>;
9
+ resolve?(path: string, dir: string): T | undefined;
11
10
  }
12
11
  /**
13
12
  *****************************************
14
- * 向上查找
13
+ * 查找最近的文件
15
14
  *****************************************
16
15
  */
17
- export declare function lookup<T = string>(name: string, options?: Options<T>): T | undefined;
18
- export {};
16
+ export declare function lookup<T = string>(name: string, options?: Options<T>): any;
package/dist/lookup.js CHANGED
@@ -1,64 +1,50 @@
1
1
  /**
2
2
  *****************************************
3
3
  * Created by edonet@163.com
4
- * Created on 2023-12-31 10:38:51
4
+ * Created on 2025-05-29 20:56:24
5
5
  *****************************************
6
6
  */
7
7
  'use strict';
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.lookup = void 0;
9
+ exports.lookup = lookup;
10
10
  /**
11
11
  *****************************************
12
12
  * 加载依赖
13
13
  *****************************************
14
14
  */
15
15
  const node_path_1 = require("node:path");
16
- const resolveFile_1 = require("./resolveFile");
16
+ const stat_1 = require("./stat");
17
+ const dirname_1 = require("./dirname");
17
18
  /**
18
19
  *****************************************
19
- * 向上查找
20
+ * 查找最近的文件
20
21
  *****************************************
21
22
  */
22
- function lookup(name, options = {}) {
23
- const from = options.from ? (0, node_path_1.resolve)(options.from) : process.cwd();
24
- // 解析目标
25
- return resolveDir(from, name, options);
23
+ function lookup(name, options) {
24
+ const opts = { cache: new Map(), resolve: stat_1.isFile, ...options };
25
+ const dir = opts.from ? (0, node_path_1.resolve)(opts.from) : process.cwd();
26
+ // 查找文件
27
+ return find(name, dir, opts);
26
28
  }
27
- exports.lookup = lookup;
28
29
  /**
29
30
  *****************************************
30
- * 解析目录文件
31
+ * 查找最近的文件
31
32
  *****************************************
32
33
  */
33
- function resolveDir(from, name, options) {
34
- const { cache, extensions, readFile } = options;
35
- const id = (0, node_path_1.resolve)(from, name);
36
- // 存在缓存
37
- if (cache && cache.has(id)) {
38
- return cache.get(id);
39
- }
40
- // 获取文件状态
41
- const path = (0, resolveFile_1.resolveFile)(id, extensions);
42
- // 加载配置
43
- const result = path ?
44
- readFile ? readFile(path) : path :
45
- resolveParent(from, name, options);
46
- // 添加缓存
47
- cache && cache.set(id, result);
48
- // 返回配置
49
- return result;
50
- }
51
- /**
52
- *****************************************
53
- * 加载配置
54
- *****************************************
55
- */
56
- function resolveParent(from, name, options) {
57
- const parent = (0, node_path_1.dirname)(from);
58
- // 到达根目录
59
- if (parent === from) {
34
+ function find(name, dir, options) {
35
+ const { cache, resolve } = options;
36
+ if (!dir) {
60
37
  return;
61
38
  }
62
- // 加载配置
63
- return resolveDir(parent, name, options);
39
+ // 解析路径
40
+ const path = (0, node_path_1.resolve)(dir, name);
41
+ if (cache.has(path)) {
42
+ return cache.get(path);
43
+ }
44
+ // 查找文件
45
+ const result = resolve(path, dir) || find(name, (0, dirname_1.dirname)(dir), options);
46
+ // 缓存结果
47
+ cache.set(path, result);
48
+ // 返回结果
49
+ return result;
64
50
  }
@@ -0,0 +1,14 @@
1
+ /**
2
+ *****************************************
3
+ * 选项
4
+ *****************************************
5
+ */
6
+ export interface Options {
7
+ force?: boolean;
8
+ }
9
+ /**
10
+ *****************************************
11
+ * 创建目录
12
+ *****************************************
13
+ */
14
+ export declare function mkdir(dir: string, options?: Options): boolean;
package/dist/mkdir.js ADDED
@@ -0,0 +1,39 @@
1
+ /**
2
+ *****************************************
3
+ * Created by edonet@163.com
4
+ * Created on 2025-05-25 11:15:33
5
+ *****************************************
6
+ */
7
+ 'use strict';
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.mkdir = mkdir;
10
+ /**
11
+ *****************************************
12
+ * 创建目录
13
+ *****************************************
14
+ */
15
+ const node_fs_1 = require("node:fs");
16
+ const stat_1 = require("./stat");
17
+ /**
18
+ *****************************************
19
+ * 创建目录
20
+ *****************************************
21
+ */
22
+ function mkdir(dir, options) {
23
+ const stats = (0, stat_1.stat)(dir);
24
+ if (!stats) {
25
+ return ((0, node_fs_1.mkdirSync)(dir, { recursive: true }), true);
26
+ }
27
+ // 目录已存在
28
+ if (stats.isDirectory()) {
29
+ return true;
30
+ }
31
+ // 非强制模式下,返回失败
32
+ if (!options || !options.force) {
33
+ return false;
34
+ }
35
+ // 删除文件
36
+ (0, node_fs_1.unlinkSync)(dir);
37
+ // 创建目录
38
+ return ((0, node_fs_1.mkdirSync)(dir, { recursive: true }), true);
39
+ }
package/dist/readFile.js CHANGED
@@ -6,7 +6,7 @@
6
6
  */
7
7
  'use strict';
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.readFile = void 0;
9
+ exports.readFile = readFile;
10
10
  /**
11
11
  *****************************************
12
12
  * 加载依赖
@@ -21,4 +21,3 @@ const node_fs_1 = require("node:fs");
21
21
  function readFile(path) {
22
22
  return (0, node_fs_1.readFileSync)(path, 'utf8');
23
23
  }
24
- exports.readFile = readFile;
package/dist/relative.js CHANGED
@@ -6,7 +6,9 @@
6
6
  */
7
7
  'use strict';
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.relative = exports.relativeFrom = exports.isRelative = void 0;
9
+ exports.relativeFrom = void 0;
10
+ exports.isRelative = isRelative;
11
+ exports.relative = relative;
10
12
  /**
11
13
  *****************************************
12
14
  * 加载依赖
@@ -37,7 +39,6 @@ function isRelative(id) {
37
39
  // 判断以
38
40
  return c2 === '/' || c2 === '';
39
41
  }
40
- exports.isRelative = isRelative;
41
42
  /**
42
43
  *****************************************
43
44
  * 获取相对路径
@@ -67,4 +68,3 @@ function relative(from, to) {
67
68
  return result.charAt(0) === '.' ? result : './' + result;
68
69
  }
69
70
  }
70
- exports.relative = relative;
@@ -6,7 +6,7 @@
6
6
  */
7
7
  'use strict';
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.resolveFile = void 0;
9
+ exports.resolveFile = resolveFile;
10
10
  /**
11
11
  *****************************************
12
12
  * 加载依赖
@@ -21,11 +21,11 @@ const stat_1 = require("./stat");
21
21
  function resolveFile(path, extensions) {
22
22
  const stats = (0, stat_1.stat)(path);
23
23
  // 找到文件
24
- if (stats === null || stats === void 0 ? void 0 : stats.isFile()) {
24
+ if (stats && stats.isFile()) {
25
25
  return path;
26
26
  }
27
27
  // 不再查找
28
- if (!(extensions === null || extensions === void 0 ? void 0 : extensions.length)) {
28
+ if (!extensions || !extensions.length) {
29
29
  return;
30
30
  }
31
31
  // 遍历扩展名
@@ -38,4 +38,3 @@ function resolveFile(path, extensions) {
38
38
  }
39
39
  }
40
40
  }
41
- exports.resolveFile = resolveFile;
package/dist/rm.js CHANGED
@@ -6,7 +6,7 @@
6
6
  */
7
7
  'use strict';
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.rm = void 0;
9
+ exports.rm = rm;
10
10
  /**
11
11
  *****************************************
12
12
  * 加载依赖
@@ -32,4 +32,3 @@ function rm(path) {
32
32
  // 遍历文件
33
33
  (0, node_fs_1.rmSync)(path, { force: true, recursive: true });
34
34
  }
35
- exports.rm = rm;
package/dist/stat.d.ts CHANGED
@@ -1,7 +1,18 @@
1
- /// <reference types="node" />
2
1
  /**
3
2
  *****************************************
4
3
  * 获取文件状态
5
4
  *****************************************
6
5
  */
7
6
  export declare function stat(path: string): import("fs").Stats | undefined;
7
+ /**
8
+ *****************************************
9
+ * 判断为目录
10
+ *****************************************
11
+ */
12
+ export declare function isDir(path: string): string | undefined;
13
+ /**
14
+ *****************************************
15
+ * 判断为文件
16
+ *****************************************
17
+ */
18
+ export declare function isFile(path: string): string | undefined;
package/dist/stat.js CHANGED
@@ -6,7 +6,9 @@
6
6
  */
7
7
  'use strict';
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.stat = void 0;
9
+ exports.stat = stat;
10
+ exports.isDir = isDir;
11
+ exports.isFile = isFile;
10
12
  /**
11
13
  *****************************************
12
14
  * 加载依赖
@@ -21,4 +23,27 @@ const node_fs_1 = require("node:fs");
21
23
  function stat(path) {
22
24
  return (0, node_fs_1.statSync)(path, { throwIfNoEntry: false });
23
25
  }
24
- exports.stat = stat;
26
+ /**
27
+ *****************************************
28
+ * 判断为目录
29
+ *****************************************
30
+ */
31
+ function isDir(path) {
32
+ const stats = stat(path);
33
+ // 目录存在时,返回路径
34
+ if (stats && stats.isDirectory()) {
35
+ return path;
36
+ }
37
+ }
38
+ /**
39
+ *****************************************
40
+ * 判断为文件
41
+ *****************************************
42
+ */
43
+ function isFile(path) {
44
+ const stats = stat(path);
45
+ // 文件存在时,返回路径
46
+ if (stats && stats.isFile()) {
47
+ return path;
48
+ }
49
+ }
@@ -6,7 +6,7 @@
6
6
  */
7
7
  'use strict';
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.stripComments = void 0;
9
+ exports.stripComments = stripComments;
10
10
  /**
11
11
  *****************************************
12
12
  * 定义注释标识
@@ -21,8 +21,9 @@ const multiComment = Symbol('multiComment');
21
21
  */
22
22
  function isEscaped(content, index) {
23
23
  let backslashCount = 0;
24
+ let idx = index;
24
25
  // 遍历字符
25
- while (content[index--] === '\\') {
26
+ while (content[idx--] === '\\') {
26
27
  backslashCount++;
27
28
  }
28
29
  // 返回结果
@@ -117,4 +118,3 @@ function stripComments(content) {
117
118
  // 返回结果
118
119
  return result + buffer + (isInsideComment ? '' : content.slice(offset));
119
120
  }
120
- exports.stripComments = stripComments;
@@ -0,0 +1,14 @@
1
+ /**
2
+ *****************************************
3
+ * 选项
4
+ *****************************************
5
+ */
6
+ export interface Options {
7
+ force?: boolean;
8
+ }
9
+ /**
10
+ *****************************************
11
+ * 写入文件
12
+ *****************************************
13
+ */
14
+ export declare function writeFile(dest: string, content: string, options?: Options): boolean;
@@ -0,0 +1,41 @@
1
+ /**
2
+ *****************************************
3
+ * Created by edonet@163.com
4
+ * Created on 2025-05-25 12:10:08
5
+ *****************************************
6
+ */
7
+ 'use strict';
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.writeFile = writeFile;
10
+ /**
11
+ *****************************************
12
+ * 加载依赖
13
+ *****************************************
14
+ */
15
+ const node_fs_1 = require("node:fs");
16
+ const node_path_1 = require("node:path");
17
+ const stat_1 = require("./stat");
18
+ const rm_1 = require("./rm");
19
+ const mkdir_1 = require("./mkdir");
20
+ /**
21
+ *****************************************
22
+ * 写入文件
23
+ *****************************************
24
+ */
25
+ function writeFile(dest, content, options) {
26
+ const stats = (0, stat_1.stat)(dest);
27
+ if (stats) {
28
+ if (!options || !options.force) {
29
+ return false;
30
+ }
31
+ else {
32
+ (0, rm_1.rm)(dest);
33
+ }
34
+ }
35
+ // 创建目录
36
+ if (!(0, mkdir_1.mkdir)((0, node_path_1.dirname)(dest), options)) {
37
+ return false;
38
+ }
39
+ // 写入文件
40
+ return ((0, node_fs_1.writeFileSync)(dest, content), true);
41
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ainc/fs",
3
- "version": "0.1.17",
3
+ "version": "0.1.19",
4
4
  "description": "Let's do something nice with @ainc/esb!",
5
5
  "types": "dist/index.d.ts",
6
6
  "main": "dist/index.js",
@@ -14,19 +14,19 @@
14
14
  "access": "public"
15
15
  },
16
16
  "dependencies": {
17
- "typescript": "^5.3.3"
17
+ "typescript": "^5.8.3"
18
18
  },
19
19
  "devDependencies": {
20
20
  "@jest/globals": "^29.7.0",
21
- "@swc/core": "^1.3.101",
22
- "@swc/jest": "^0.2.29",
23
- "@types/node": "^20.10.6",
21
+ "@swc/core": "^1.11.24",
22
+ "@swc/jest": "^0.2.38",
23
+ "@types/node": "^22.15.19",
24
24
  "jest": "^29.7.0"
25
25
  },
26
26
  "scripts": {
27
27
  "start": "tsc",
28
- "build": "yarn clean && yarn compile",
29
- "watch": "yarn compile --watch",
28
+ "build": "pnpm clean && pnpm compile",
29
+ "watch": "pnpm compile --watch",
30
30
  "compile": "tsc -p ./tsconfig.build.json",
31
31
  "test": "jest",
32
32
  "clean": "rimraf ./dist"