@ainc/fs 0.1.22 → 0.1.24
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/cache.d.ts +16 -0
- package/dist/cache.js +24 -0
- package/dist/dict.d.ts +21 -0
- package/dist/dict.js +66 -0
- package/dist/download.js +4 -16
- package/dist/downloadFile.js +19 -13
- package/dist/gzip.d.ts +13 -0
- package/dist/gzip.js +50 -0
- package/dist/index.d.ts +37 -1
- package/dist/index.exports.json +34 -0
- package/dist/index.js +60 -3
- package/dist/isEsmModule.d.ts +18 -0
- package/dist/isEsmModule.js +63 -0
- package/dist/loadPackageDescription.d.ts +61 -0
- package/dist/loadPackageDescription.js +71 -0
- package/dist/loadTsConfig.d.ts +87 -0
- package/dist/loadTsConfig.js +219 -0
- package/dist/match.d.ts +30 -0
- package/dist/match.js +59 -0
- package/dist/promises.d.ts +69 -0
- package/dist/promises.js +103 -0
- package/dist/resolveAlias.d.ts +25 -0
- package/dist/resolveAlias.js +82 -0
- package/dist/resolveDirect.d.ts +15 -0
- package/dist/resolveDirect.js +144 -0
- package/dist/resolveExports.d.ts +19 -0
- package/dist/resolveExports.js +54 -0
- package/dist/resolveImports.d.ts +21 -0
- package/dist/resolveImports.js +114 -0
- package/dist/resolveModuleDir.d.ts +12 -0
- package/dist/resolveModuleDir.js +67 -0
- package/dist/resolveModuleId.d.ts +6 -0
- package/dist/resolveModuleId.js +32 -0
- package/dist/resolvePath.d.ts +23 -0
- package/dist/resolvePath.js +86 -0
- package/dist/resolvePaths.d.ts +13 -0
- package/dist/resolvePaths.js +42 -0
- package/dist/split.d.ts +6 -0
- package/dist/split.js +24 -0
- package/dist/sys.d.ts +60 -0
- package/dist/sys.js +260 -0
- package/esm/cache.mjs +22 -0
- package/esm/dict.mjs +63 -0
- package/esm/download.mjs +4 -16
- package/esm/downloadFile.mjs +19 -13
- package/esm/gzip.mjs +47 -0
- package/esm/index.exports.json +34 -0
- package/esm/index.mjs +29 -1
- package/esm/isEsmModule.mjs +59 -0
- package/esm/loadPackageDescription.mjs +67 -0
- package/esm/loadTsConfig.mjs +215 -0
- package/esm/match.mjs +53 -0
- package/esm/promises.mjs +96 -0
- package/esm/resolveAlias.mjs +79 -0
- package/esm/resolveDirect.mjs +142 -0
- package/esm/resolveExports.mjs +51 -0
- package/esm/resolveImports.mjs +112 -0
- package/esm/resolveModuleDir.mjs +64 -0
- package/esm/resolveModuleId.mjs +30 -0
- package/esm/resolvePath.mjs +84 -0
- package/esm/resolvePaths.mjs +40 -0
- package/esm/split.mjs +22 -0
- package/esm/sys.mjs +258 -0
- package/package.json +5 -6
package/dist/cache.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*****************************************
|
|
3
|
+
* 缓存
|
|
4
|
+
*****************************************
|
|
5
|
+
*/
|
|
6
|
+
export interface Cache<T, P> {
|
|
7
|
+
set(id: T, handler: (id: T) => P): P;
|
|
8
|
+
get(id: T, handler: (id: T) => P): P;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
*****************************************
|
|
12
|
+
* 创建缓存
|
|
13
|
+
*****************************************
|
|
14
|
+
*/
|
|
15
|
+
export declare function cache<T, P>(map?: Map<T, P>): Cache<T, P>;
|
|
16
|
+
export declare function cache<T extends object, P>(map: WeakMap<T, P>): Cache<T, P>;
|
package/dist/cache.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*****************************************
|
|
3
|
+
* Created by edonet@163.com
|
|
4
|
+
* Created on 2026-03-19 12:43:17
|
|
5
|
+
*****************************************
|
|
6
|
+
*/
|
|
7
|
+
'use strict';
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.cache = cache;
|
|
10
|
+
function cache(map) {
|
|
11
|
+
const cached = map || new Map();
|
|
12
|
+
// 获取缓存
|
|
13
|
+
function get(id, handler) {
|
|
14
|
+
return cached.has(id) ? cached.get(id) : set(id, handler);
|
|
15
|
+
}
|
|
16
|
+
// 更新缓存
|
|
17
|
+
function set(id, handler) {
|
|
18
|
+
const result = handler(id);
|
|
19
|
+
cached.set(id, result);
|
|
20
|
+
return result;
|
|
21
|
+
}
|
|
22
|
+
// 返回结果
|
|
23
|
+
return { set, get };
|
|
24
|
+
}
|
package/dist/dict.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*****************************************
|
|
3
|
+
* 字典对象
|
|
4
|
+
*****************************************
|
|
5
|
+
*/
|
|
6
|
+
export declare class Dict<T> {
|
|
7
|
+
/** 键值映射 */
|
|
8
|
+
private data;
|
|
9
|
+
/** 键列表 */
|
|
10
|
+
private keys;
|
|
11
|
+
/** 添加映射 */
|
|
12
|
+
set(key: string, value: T): this;
|
|
13
|
+
/** 获取值 */
|
|
14
|
+
get(key: string): T | undefined;
|
|
15
|
+
/** 遍历 */
|
|
16
|
+
map<P>(handler: (key: string, value: T) => P): Dict<P>;
|
|
17
|
+
/** 排序 */
|
|
18
|
+
sort(handler: (a: string, b: string) => number): this;
|
|
19
|
+
/** 匹配对象 */
|
|
20
|
+
match<P>(handler: (value: T, key: string) => P | undefined): P | undefined;
|
|
21
|
+
}
|
package/dist/dict.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*****************************************
|
|
3
|
+
* Created by edonet@163.com
|
|
4
|
+
* Created on 2025-06-11 22:56:35
|
|
5
|
+
*****************************************
|
|
6
|
+
*/
|
|
7
|
+
'use strict';
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.Dict = void 0;
|
|
10
|
+
/**
|
|
11
|
+
*****************************************
|
|
12
|
+
* 字典对象
|
|
13
|
+
*****************************************
|
|
14
|
+
*/
|
|
15
|
+
class Dict {
|
|
16
|
+
constructor() {
|
|
17
|
+
/** 键值映射 */
|
|
18
|
+
this.data = {};
|
|
19
|
+
/** 键列表 */
|
|
20
|
+
this.keys = [];
|
|
21
|
+
}
|
|
22
|
+
/** 添加映射 */
|
|
23
|
+
set(key, value) {
|
|
24
|
+
if (!Object.prototype.hasOwnProperty.call(this.data, key)) {
|
|
25
|
+
this.keys.push(key);
|
|
26
|
+
}
|
|
27
|
+
// 更新值
|
|
28
|
+
this.data[key] = value;
|
|
29
|
+
// 返回自身
|
|
30
|
+
return this;
|
|
31
|
+
}
|
|
32
|
+
/** 获取值 */
|
|
33
|
+
get(key) {
|
|
34
|
+
return this.data[key];
|
|
35
|
+
}
|
|
36
|
+
/** 遍历 */
|
|
37
|
+
map(handler) {
|
|
38
|
+
const dict = new Dict();
|
|
39
|
+
// 遍历映射
|
|
40
|
+
this.keys.forEach(key => {
|
|
41
|
+
dict.set(key, handler(key, this.data[key]));
|
|
42
|
+
});
|
|
43
|
+
// 返回结果
|
|
44
|
+
return dict;
|
|
45
|
+
}
|
|
46
|
+
/** 排序 */
|
|
47
|
+
sort(handler) {
|
|
48
|
+
this.keys.sort(handler);
|
|
49
|
+
return this;
|
|
50
|
+
}
|
|
51
|
+
/** 匹配对象 */
|
|
52
|
+
match(handler) {
|
|
53
|
+
const keys = this.keys;
|
|
54
|
+
const data = this.data;
|
|
55
|
+
const size = keys.length;
|
|
56
|
+
// 遍历匹配
|
|
57
|
+
for (let i = 0; i < size; i++) {
|
|
58
|
+
const key = keys[i];
|
|
59
|
+
const result = handler(data[key], key);
|
|
60
|
+
if (result !== undefined) {
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.Dict = Dict;
|
package/dist/download.js
CHANGED
|
@@ -20,6 +20,7 @@ const node_stream_1 = require("node:stream");
|
|
|
20
20
|
const promises_2 = require("node:stream/promises");
|
|
21
21
|
const retry_1 = require("./retry");
|
|
22
22
|
const md5_1 = require("./md5");
|
|
23
|
+
const promises_3 = require("./promises");
|
|
23
24
|
const concurrency_1 = require("./concurrency");
|
|
24
25
|
/**
|
|
25
26
|
*****************************************
|
|
@@ -52,7 +53,7 @@ async function download(dest, url, options = {}) {
|
|
|
52
53
|
*****************************************
|
|
53
54
|
*/
|
|
54
55
|
async function downloadFileByChunk(dest, url, init, options) {
|
|
55
|
-
const stats = await (0,
|
|
56
|
+
const stats = await (0, promises_3.stat)(dest).catch(err => err.code === 'ENOENT' ? null : Promise.reject(err));
|
|
56
57
|
// 已经存在文件,不再下载
|
|
57
58
|
if (stats && stats.isFile() && !options.force) {
|
|
58
59
|
options.onProgress && options.onProgress(stats.size, stats.size);
|
|
@@ -93,7 +94,7 @@ async function downloadFileByChunk(dest, url, init, options) {
|
|
|
93
94
|
// 创建下载目录
|
|
94
95
|
await (0, promises_1.mkdir)(dir, { recursive: true });
|
|
95
96
|
// 合并文件
|
|
96
|
-
await chunkConcurrency.execute(path => pipe(path, stream));
|
|
97
|
+
await chunkConcurrency.execute(path => (0, promises_3.pipe)((0, node_fs_1.createReadStream)(path), stream, { end: false }));
|
|
97
98
|
// 结束传输
|
|
98
99
|
stream.end();
|
|
99
100
|
// 重命名临时文件
|
|
@@ -156,26 +157,13 @@ function getDownloadURL(url) {
|
|
|
156
157
|
function getDownloadDir(url, options) {
|
|
157
158
|
return (0, node_path_1.join)((0, node_os_1.tmpdir)(), 'downloads', generateDownloadID(getDownloadURL(url), options));
|
|
158
159
|
}
|
|
159
|
-
/**
|
|
160
|
-
*****************************************
|
|
161
|
-
* 写入文件流
|
|
162
|
-
*****************************************
|
|
163
|
-
*/
|
|
164
|
-
function pipe(src, dest) {
|
|
165
|
-
return new Promise((resolve, reject) => {
|
|
166
|
-
const stream = (0, node_fs_1.createReadStream)(src);
|
|
167
|
-
stream.once('close', resolve);
|
|
168
|
-
stream.once('error', reject);
|
|
169
|
-
stream.pipe(dest, { end: false });
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
160
|
/**
|
|
173
161
|
*****************************************
|
|
174
162
|
* 下载文件
|
|
175
163
|
*****************************************
|
|
176
164
|
*/
|
|
177
165
|
async function downloadFile(dest, url, init, options) {
|
|
178
|
-
const stats = await (0,
|
|
166
|
+
const stats = await (0, promises_3.stat)(dest);
|
|
179
167
|
// 已经存在文件,不再下载
|
|
180
168
|
if (stats && stats.isFile() && !options.force) {
|
|
181
169
|
options.onProgress && options.onProgress(stats.size, stats.size);
|
package/dist/downloadFile.js
CHANGED
|
@@ -28,11 +28,10 @@ async function downloadFile(dest, url) {
|
|
|
28
28
|
if (size < total) {
|
|
29
29
|
print(` -> ${((size / total) * 100).toFixed(2)}% (${format(size)}/${format(total)})`);
|
|
30
30
|
}
|
|
31
|
-
else {
|
|
32
|
-
print('[download]: done', true);
|
|
33
|
-
}
|
|
34
31
|
},
|
|
35
32
|
});
|
|
33
|
+
// 下载完成
|
|
34
|
+
print('[download]: done', true);
|
|
36
35
|
}
|
|
37
36
|
/**
|
|
38
37
|
*****************************************
|
|
@@ -54,6 +53,16 @@ function format(bytes) {
|
|
|
54
53
|
// 返回默认
|
|
55
54
|
return `${(bytes / limit).toFixed(2)} TB`;
|
|
56
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
*****************************************
|
|
58
|
+
* 上移一行并清除该行内容
|
|
59
|
+
* a. 移动光标上移一行:\x1B[1A
|
|
60
|
+
* b. 清除当前行:\x1B[2K
|
|
61
|
+
* c. 移动光标到行首:\x1B[0G
|
|
62
|
+
*****************************************
|
|
63
|
+
*/
|
|
64
|
+
const clearCurrentLine = '\x1B[0G\x1B[2K';
|
|
65
|
+
const clearPreviousLine = '\x1B[1A\x1B[2K';
|
|
57
66
|
/**
|
|
58
67
|
*****************************************
|
|
59
68
|
* 进度条
|
|
@@ -61,23 +70,20 @@ function format(bytes) {
|
|
|
61
70
|
*/
|
|
62
71
|
function stdout() {
|
|
63
72
|
let progressContent = '';
|
|
64
|
-
let progressSize = 0;
|
|
65
73
|
let progressTime = 0;
|
|
66
74
|
return function print(content, flush) {
|
|
67
75
|
const now = Date.now();
|
|
68
76
|
if ((content === progressContent || now - progressTime < 600) && !flush) {
|
|
69
77
|
return;
|
|
70
78
|
}
|
|
71
|
-
|
|
72
|
-
|
|
79
|
+
// 清除内容
|
|
80
|
+
if (progressContent) {
|
|
81
|
+
process.stdout.write(clearCurrentLine);
|
|
82
|
+
process.stdout.write(clearPreviousLine);
|
|
83
|
+
}
|
|
84
|
+
// 更新内容
|
|
73
85
|
progressContent = content;
|
|
74
86
|
progressTime = now;
|
|
75
|
-
|
|
76
|
-
if (diff > 0) {
|
|
77
|
-
process.stdout.write(`\r${content}${' '.repeat(diff)}`);
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
process.stdout.write(`\r${content}`);
|
|
81
|
-
}
|
|
87
|
+
process.stdout.write(content + '\n');
|
|
82
88
|
};
|
|
83
89
|
}
|
package/dist/gzip.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ZlibOptions } from 'node:zlib';
|
|
2
|
+
/**
|
|
3
|
+
*****************************************
|
|
4
|
+
* gzip
|
|
5
|
+
*****************************************
|
|
6
|
+
*/
|
|
7
|
+
export declare function gzip(src: string, dest: string, options?: ZlibOptions): Promise<string>;
|
|
8
|
+
/**
|
|
9
|
+
*****************************************
|
|
10
|
+
* ungzip
|
|
11
|
+
*****************************************
|
|
12
|
+
*/
|
|
13
|
+
export declare function ungzip(src: string, dest: string, options?: ZlibOptions): Promise<string>;
|
package/dist/gzip.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*****************************************
|
|
3
|
+
* Created by edonet@163.com
|
|
4
|
+
* Created on 2026-03-20 23:07:36
|
|
5
|
+
*****************************************
|
|
6
|
+
*/
|
|
7
|
+
'use strict';
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.gzip = gzip;
|
|
10
|
+
exports.ungzip = ungzip;
|
|
11
|
+
/**
|
|
12
|
+
*****************************************
|
|
13
|
+
* 加载依赖
|
|
14
|
+
*****************************************
|
|
15
|
+
*/
|
|
16
|
+
const node_fs_1 = require("node:fs");
|
|
17
|
+
const node_zlib_1 = require("node:zlib");
|
|
18
|
+
const promises_1 = require("./promises");
|
|
19
|
+
/**
|
|
20
|
+
*****************************************
|
|
21
|
+
* gzip
|
|
22
|
+
*****************************************
|
|
23
|
+
*/
|
|
24
|
+
function gzip(src, dest, options) {
|
|
25
|
+
return new Promise((resolve, reject) => {
|
|
26
|
+
const readable = (0, node_fs_1.createReadStream)(src);
|
|
27
|
+
const gzip = (0, node_zlib_1.createGzip)(options);
|
|
28
|
+
const writable = (0, node_fs_1.createWriteStream)(dest);
|
|
29
|
+
readable.pipe(gzip)
|
|
30
|
+
.pipe(writable)
|
|
31
|
+
.once('finish', () => resolve(dest))
|
|
32
|
+
.once('error', err => (0, promises_1.rm)(dest).then(() => reject(err)));
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
*****************************************
|
|
37
|
+
* ungzip
|
|
38
|
+
*****************************************
|
|
39
|
+
*/
|
|
40
|
+
function ungzip(src, dest, options) {
|
|
41
|
+
return new Promise((resolve, reject) => {
|
|
42
|
+
const readable = (0, node_fs_1.createReadStream)(src);
|
|
43
|
+
const gzip = (0, node_zlib_1.createGunzip)(options);
|
|
44
|
+
const writable = (0, node_fs_1.createWriteStream)(dest);
|
|
45
|
+
readable.pipe(gzip)
|
|
46
|
+
.pipe(writable)
|
|
47
|
+
.once('finish', () => resolve(dest))
|
|
48
|
+
.once('error', err => (0, promises_1.rm)(dest).then(() => reject(err)));
|
|
49
|
+
});
|
|
50
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*****************************************
|
|
3
|
+
* 导出类型
|
|
4
|
+
*****************************************
|
|
5
|
+
*/
|
|
6
|
+
export type { PackageConfig, PackageDescription, TargetDescription } from './loadPackageDescription';
|
|
7
|
+
export type { TsConfigDescription, TsConfig, CompilerOptions, WatchOptions } from './loadTsConfig';
|
|
8
|
+
export type { FileSystem } from './sys';
|
|
9
|
+
/**
|
|
10
|
+
*****************************************
|
|
11
|
+
* 文件系统
|
|
12
|
+
*****************************************
|
|
13
|
+
*/
|
|
14
|
+
export { sys } from './sys';
|
|
15
|
+
/**
|
|
16
|
+
*****************************************
|
|
17
|
+
* 导出工具
|
|
18
|
+
*****************************************
|
|
19
|
+
*/
|
|
20
|
+
export { unary, noop, nil, match } from './match';
|
|
21
|
+
export { split } from './split';
|
|
22
|
+
export { cache } from './cache';
|
|
23
|
+
export { retry } from './retry';
|
|
24
|
+
export { Dict } from './dict';
|
|
1
25
|
/**
|
|
2
26
|
*****************************************
|
|
3
27
|
* 导出接口
|
|
@@ -6,8 +30,8 @@
|
|
|
6
30
|
export { resolve, join, isAbsolute } from 'node:path';
|
|
7
31
|
export { relative, isRelative } from './relative';
|
|
8
32
|
export { dirname } from './dirname';
|
|
33
|
+
export { isEsmModule, isEsmFile, isEsmPackage } from './isEsmModule';
|
|
9
34
|
export { stat, isDir, isFile } from './stat';
|
|
10
|
-
export { resolveFile } from './resolveFile';
|
|
11
35
|
export { readFile } from './readFile';
|
|
12
36
|
export { writeFile } from './writeFile';
|
|
13
37
|
export { copy } from './copy';
|
|
@@ -17,3 +41,15 @@ export { md5 } from './md5';
|
|
|
17
41
|
export { json, jsonc } from './jsonc';
|
|
18
42
|
export { findUp } from './findUp';
|
|
19
43
|
export { download } from './download';
|
|
44
|
+
export { gzip, ungzip } from './gzip';
|
|
45
|
+
export { loadPackageDescription, resolvePackageDescription } from './loadPackageDescription';
|
|
46
|
+
export { loadTsConfig, loadCompilerOptions, resolveTsConfig } from './loadTsConfig';
|
|
47
|
+
export { resolveAlias, resolveDict } from './resolveAlias';
|
|
48
|
+
export { resolvePaths } from './resolvePaths';
|
|
49
|
+
export { resolvePath } from './resolvePath';
|
|
50
|
+
export { resolveFile } from './resolveFile';
|
|
51
|
+
export { resolveDirect } from './resolveDirect';
|
|
52
|
+
export { resolveImports } from './resolveImports';
|
|
53
|
+
export { resolveExports } from './resolveExports';
|
|
54
|
+
export { resolveModuleDir, resolveModuleDirs } from './resolveModuleDir';
|
|
55
|
+
export { resolveModuleId } from './resolveModuleId';
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
[
|
|
2
|
+
{"path": "./sys", "names": ["sys"]},
|
|
3
|
+
{"path": "./match", "names": ["unary", "noop", "nil", "match"]},
|
|
4
|
+
{"path": "./split", "names": ["split"]},
|
|
5
|
+
{"path": "./cache", "names": ["cache"]},
|
|
6
|
+
{"path": "./retry", "names": ["retry"]},
|
|
7
|
+
{"path": "./dict", "names": ["Dict"]},
|
|
8
|
+
{"path": "node:path", "names": ["resolve", "join", "isAbsolute"]},
|
|
9
|
+
{"path": "./relative", "names": ["relative", "isRelative"]},
|
|
10
|
+
{"path": "./dirname", "names": ["dirname"]},
|
|
11
|
+
{"path": "./isEsmModule", "names": ["isEsmModule", "isEsmFile", "isEsmPackage"]},
|
|
12
|
+
{"path": "./stat", "names": ["stat", "isDir", "isFile"]},
|
|
13
|
+
{"path": "./readFile", "names": ["readFile"]},
|
|
14
|
+
{"path": "./writeFile", "names": ["writeFile"]},
|
|
15
|
+
{"path": "./copy", "names": ["copy"]},
|
|
16
|
+
{"path": "./rm", "names": ["rm"]},
|
|
17
|
+
{"path": "./lookup", "names": ["lookup"]},
|
|
18
|
+
{"path": "./md5", "names": ["md5"]},
|
|
19
|
+
{"path": "./jsonc", "names": ["json", "jsonc"]},
|
|
20
|
+
{"path": "./findUp", "names": ["findUp"]},
|
|
21
|
+
{"path": "./download", "names": ["download"]},
|
|
22
|
+
{"path": "./gzip", "names": ["gzip", "ungzip"]},
|
|
23
|
+
{"path": "./loadPackageDescription", "names": ["loadPackageDescription", "resolvePackageDescription"]},
|
|
24
|
+
{"path": "./loadTsConfig", "names": ["loadTsConfig", "loadCompilerOptions", "resolveTsConfig"]},
|
|
25
|
+
{"path": "./resolveAlias", "names": ["resolveAlias", "resolveDict"]},
|
|
26
|
+
{"path": "./resolvePaths", "names": ["resolvePaths"]},
|
|
27
|
+
{"path": "./resolvePath", "names": ["resolvePath"]},
|
|
28
|
+
{"path": "./resolveFile", "names": ["resolveFile"]},
|
|
29
|
+
{"path": "./resolveDirect", "names": ["resolveDirect"]},
|
|
30
|
+
{"path": "./resolveImports", "names": ["resolveImports"]},
|
|
31
|
+
{"path": "./resolveExports", "names": ["resolveExports"]},
|
|
32
|
+
{"path": "./resolveModuleDir", "names": ["resolveModuleDir", "resolveModuleDirs"]},
|
|
33
|
+
{"path": "./resolveModuleId", "names": ["resolveModuleId"]}
|
|
34
|
+
]
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,32 @@
|
|
|
6
6
|
*/
|
|
7
7
|
'use strict';
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.download = exports.findUp = exports.jsonc = exports.json = exports.md5 = exports.lookup = exports.rm = exports.copy = exports.writeFile = exports.readFile = exports.
|
|
9
|
+
exports.resolveModuleId = exports.resolveModuleDirs = exports.resolveModuleDir = exports.resolveExports = exports.resolveImports = exports.resolveDirect = exports.resolveFile = exports.resolvePath = exports.resolvePaths = exports.resolveDict = exports.resolveAlias = exports.resolveTsConfig = exports.loadCompilerOptions = exports.loadTsConfig = exports.resolvePackageDescription = exports.loadPackageDescription = exports.ungzip = exports.gzip = exports.download = exports.findUp = exports.jsonc = exports.json = exports.md5 = exports.lookup = exports.rm = exports.copy = exports.writeFile = exports.readFile = exports.isFile = exports.isDir = exports.stat = exports.isEsmPackage = exports.isEsmFile = exports.isEsmModule = exports.dirname = exports.isRelative = exports.relative = exports.isAbsolute = exports.join = exports.resolve = exports.Dict = exports.retry = exports.cache = exports.split = exports.match = exports.nil = exports.noop = exports.unary = exports.sys = void 0;
|
|
10
|
+
/**
|
|
11
|
+
*****************************************
|
|
12
|
+
* 文件系统
|
|
13
|
+
*****************************************
|
|
14
|
+
*/
|
|
15
|
+
var sys_1 = require("./sys");
|
|
16
|
+
Object.defineProperty(exports, "sys", { enumerable: true, get: function () { return sys_1.sys; } });
|
|
17
|
+
/**
|
|
18
|
+
*****************************************
|
|
19
|
+
* 导出工具
|
|
20
|
+
*****************************************
|
|
21
|
+
*/
|
|
22
|
+
var match_1 = require("./match");
|
|
23
|
+
Object.defineProperty(exports, "unary", { enumerable: true, get: function () { return match_1.unary; } });
|
|
24
|
+
Object.defineProperty(exports, "noop", { enumerable: true, get: function () { return match_1.noop; } });
|
|
25
|
+
Object.defineProperty(exports, "nil", { enumerable: true, get: function () { return match_1.nil; } });
|
|
26
|
+
Object.defineProperty(exports, "match", { enumerable: true, get: function () { return match_1.match; } });
|
|
27
|
+
var split_1 = require("./split");
|
|
28
|
+
Object.defineProperty(exports, "split", { enumerable: true, get: function () { return split_1.split; } });
|
|
29
|
+
var cache_1 = require("./cache");
|
|
30
|
+
Object.defineProperty(exports, "cache", { enumerable: true, get: function () { return cache_1.cache; } });
|
|
31
|
+
var retry_1 = require("./retry");
|
|
32
|
+
Object.defineProperty(exports, "retry", { enumerable: true, get: function () { return retry_1.retry; } });
|
|
33
|
+
var dict_1 = require("./dict");
|
|
34
|
+
Object.defineProperty(exports, "Dict", { enumerable: true, get: function () { return dict_1.Dict; } });
|
|
10
35
|
/**
|
|
11
36
|
*****************************************
|
|
12
37
|
* 导出接口
|
|
@@ -21,12 +46,14 @@ Object.defineProperty(exports, "relative", { enumerable: true, get: function ()
|
|
|
21
46
|
Object.defineProperty(exports, "isRelative", { enumerable: true, get: function () { return relative_1.isRelative; } });
|
|
22
47
|
var dirname_1 = require("./dirname");
|
|
23
48
|
Object.defineProperty(exports, "dirname", { enumerable: true, get: function () { return dirname_1.dirname; } });
|
|
49
|
+
var isEsmModule_1 = require("./isEsmModule");
|
|
50
|
+
Object.defineProperty(exports, "isEsmModule", { enumerable: true, get: function () { return isEsmModule_1.isEsmModule; } });
|
|
51
|
+
Object.defineProperty(exports, "isEsmFile", { enumerable: true, get: function () { return isEsmModule_1.isEsmFile; } });
|
|
52
|
+
Object.defineProperty(exports, "isEsmPackage", { enumerable: true, get: function () { return isEsmModule_1.isEsmPackage; } });
|
|
24
53
|
var stat_1 = require("./stat");
|
|
25
54
|
Object.defineProperty(exports, "stat", { enumerable: true, get: function () { return stat_1.stat; } });
|
|
26
55
|
Object.defineProperty(exports, "isDir", { enumerable: true, get: function () { return stat_1.isDir; } });
|
|
27
56
|
Object.defineProperty(exports, "isFile", { enumerable: true, get: function () { return stat_1.isFile; } });
|
|
28
|
-
var resolveFile_1 = require("./resolveFile");
|
|
29
|
-
Object.defineProperty(exports, "resolveFile", { enumerable: true, get: function () { return resolveFile_1.resolveFile; } });
|
|
30
57
|
var readFile_1 = require("./readFile");
|
|
31
58
|
Object.defineProperty(exports, "readFile", { enumerable: true, get: function () { return readFile_1.readFile; } });
|
|
32
59
|
var writeFile_1 = require("./writeFile");
|
|
@@ -46,3 +73,33 @@ var findUp_1 = require("./findUp");
|
|
|
46
73
|
Object.defineProperty(exports, "findUp", { enumerable: true, get: function () { return findUp_1.findUp; } });
|
|
47
74
|
var download_1 = require("./download");
|
|
48
75
|
Object.defineProperty(exports, "download", { enumerable: true, get: function () { return download_1.download; } });
|
|
76
|
+
var gzip_1 = require("./gzip");
|
|
77
|
+
Object.defineProperty(exports, "gzip", { enumerable: true, get: function () { return gzip_1.gzip; } });
|
|
78
|
+
Object.defineProperty(exports, "ungzip", { enumerable: true, get: function () { return gzip_1.ungzip; } });
|
|
79
|
+
var loadPackageDescription_1 = require("./loadPackageDescription");
|
|
80
|
+
Object.defineProperty(exports, "loadPackageDescription", { enumerable: true, get: function () { return loadPackageDescription_1.loadPackageDescription; } });
|
|
81
|
+
Object.defineProperty(exports, "resolvePackageDescription", { enumerable: true, get: function () { return loadPackageDescription_1.resolvePackageDescription; } });
|
|
82
|
+
var loadTsConfig_1 = require("./loadTsConfig");
|
|
83
|
+
Object.defineProperty(exports, "loadTsConfig", { enumerable: true, get: function () { return loadTsConfig_1.loadTsConfig; } });
|
|
84
|
+
Object.defineProperty(exports, "loadCompilerOptions", { enumerable: true, get: function () { return loadTsConfig_1.loadCompilerOptions; } });
|
|
85
|
+
Object.defineProperty(exports, "resolveTsConfig", { enumerable: true, get: function () { return loadTsConfig_1.resolveTsConfig; } });
|
|
86
|
+
var resolveAlias_1 = require("./resolveAlias");
|
|
87
|
+
Object.defineProperty(exports, "resolveAlias", { enumerable: true, get: function () { return resolveAlias_1.resolveAlias; } });
|
|
88
|
+
Object.defineProperty(exports, "resolveDict", { enumerable: true, get: function () { return resolveAlias_1.resolveDict; } });
|
|
89
|
+
var resolvePaths_1 = require("./resolvePaths");
|
|
90
|
+
Object.defineProperty(exports, "resolvePaths", { enumerable: true, get: function () { return resolvePaths_1.resolvePaths; } });
|
|
91
|
+
var resolvePath_1 = require("./resolvePath");
|
|
92
|
+
Object.defineProperty(exports, "resolvePath", { enumerable: true, get: function () { return resolvePath_1.resolvePath; } });
|
|
93
|
+
var resolveFile_1 = require("./resolveFile");
|
|
94
|
+
Object.defineProperty(exports, "resolveFile", { enumerable: true, get: function () { return resolveFile_1.resolveFile; } });
|
|
95
|
+
var resolveDirect_1 = require("./resolveDirect");
|
|
96
|
+
Object.defineProperty(exports, "resolveDirect", { enumerable: true, get: function () { return resolveDirect_1.resolveDirect; } });
|
|
97
|
+
var resolveImports_1 = require("./resolveImports");
|
|
98
|
+
Object.defineProperty(exports, "resolveImports", { enumerable: true, get: function () { return resolveImports_1.resolveImports; } });
|
|
99
|
+
var resolveExports_1 = require("./resolveExports");
|
|
100
|
+
Object.defineProperty(exports, "resolveExports", { enumerable: true, get: function () { return resolveExports_1.resolveExports; } });
|
|
101
|
+
var resolveModuleDir_1 = require("./resolveModuleDir");
|
|
102
|
+
Object.defineProperty(exports, "resolveModuleDir", { enumerable: true, get: function () { return resolveModuleDir_1.resolveModuleDir; } });
|
|
103
|
+
Object.defineProperty(exports, "resolveModuleDirs", { enumerable: true, get: function () { return resolveModuleDir_1.resolveModuleDirs; } });
|
|
104
|
+
var resolveModuleId_1 = require("./resolveModuleId");
|
|
105
|
+
Object.defineProperty(exports, "resolveModuleId", { enumerable: true, get: function () { return resolveModuleId_1.resolveModuleId; } });
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*****************************************
|
|
3
|
+
* 判断是否为 ESM 模块
|
|
4
|
+
*****************************************
|
|
5
|
+
*/
|
|
6
|
+
export declare function isEsmModule(filename: string, dir?: string): boolean;
|
|
7
|
+
/**
|
|
8
|
+
*****************************************
|
|
9
|
+
* 判断是否为 ESM 模块
|
|
10
|
+
*****************************************
|
|
11
|
+
*/
|
|
12
|
+
export declare function isEsmPackage(dir: string): boolean;
|
|
13
|
+
/**
|
|
14
|
+
*****************************************
|
|
15
|
+
* 判断为 ESM 文件
|
|
16
|
+
*****************************************
|
|
17
|
+
*/
|
|
18
|
+
export declare function isEsmFile(filename: string): boolean | undefined;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*****************************************
|
|
3
|
+
* Created by edonet@163.com
|
|
4
|
+
* Created on 2026-03-18 20:14:00
|
|
5
|
+
*****************************************
|
|
6
|
+
*/
|
|
7
|
+
'use strict';
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.isEsmModule = isEsmModule;
|
|
10
|
+
exports.isEsmPackage = isEsmPackage;
|
|
11
|
+
exports.isEsmFile = isEsmFile;
|
|
12
|
+
/**
|
|
13
|
+
*****************************************
|
|
14
|
+
* 加载依赖
|
|
15
|
+
*****************************************
|
|
16
|
+
*/
|
|
17
|
+
const node_path_1 = require("node:path");
|
|
18
|
+
const loadPackageDescription_1 = require("./loadPackageDescription");
|
|
19
|
+
/**
|
|
20
|
+
*****************************************
|
|
21
|
+
* 判断是否为 ESM 模块
|
|
22
|
+
*****************************************
|
|
23
|
+
*/
|
|
24
|
+
function isEsmModule(filename, dir = (0, node_path_1.dirname)(filename)) {
|
|
25
|
+
const result = isEsmFile(filename);
|
|
26
|
+
// 文件扩展名未匹配成功时,解析文件所在包的配置
|
|
27
|
+
if (result === undefined) {
|
|
28
|
+
return isEsmPackage(dir);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
*****************************************
|
|
36
|
+
* 判断是否为 ESM 模块
|
|
37
|
+
*****************************************
|
|
38
|
+
*/
|
|
39
|
+
function isEsmPackage(dir) {
|
|
40
|
+
const pkg = (0, loadPackageDescription_1.loadPackageDescription)(dir);
|
|
41
|
+
if (pkg && pkg.type === 'module') {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
*****************************************
|
|
50
|
+
* 判断为 ESM 文件
|
|
51
|
+
*****************************************
|
|
52
|
+
*/
|
|
53
|
+
function isEsmFile(filename) {
|
|
54
|
+
const ext = (0, node_path_1.extname)(filename);
|
|
55
|
+
// 判断 mjs 模块
|
|
56
|
+
if (['.mjs', '.mts', '.mjsx', '.mtsx'].includes(ext)) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
// 判断 cjs 模块
|
|
60
|
+
if (['.cjs', '.cts', '.cjsx', '.ctsx'].includes(ext)) {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*****************************************
|
|
3
|
+
* 重定向描述
|
|
4
|
+
*****************************************
|
|
5
|
+
*/
|
|
6
|
+
export interface TargetDescription {
|
|
7
|
+
[key: string]: null | string | TargetDescription | (null | string | TargetDescription)[];
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
*****************************************
|
|
11
|
+
* 包描述
|
|
12
|
+
*****************************************
|
|
13
|
+
*/
|
|
14
|
+
export interface PackageDescription {
|
|
15
|
+
name?: string;
|
|
16
|
+
version?: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
type?: string;
|
|
19
|
+
types?: string;
|
|
20
|
+
main?: string;
|
|
21
|
+
imports?: TargetDescription;
|
|
22
|
+
exports?: null | string | string[] | TargetDescription;
|
|
23
|
+
files?: string[];
|
|
24
|
+
bin?: string | Record<string, string>;
|
|
25
|
+
scripts?: Record<string, string>;
|
|
26
|
+
repository?: string;
|
|
27
|
+
author?: string;
|
|
28
|
+
license?: string;
|
|
29
|
+
publishConfig?: Record<string, string | boolean | number>;
|
|
30
|
+
dependencies?: Record<string, string>;
|
|
31
|
+
devDependencies?: Record<string, string>;
|
|
32
|
+
peerDependencies?: Record<string, string>;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
*****************************************
|
|
36
|
+
* 包配置
|
|
37
|
+
*****************************************
|
|
38
|
+
*/
|
|
39
|
+
export interface PackageConfig {
|
|
40
|
+
dir: string;
|
|
41
|
+
path: string;
|
|
42
|
+
config?: PackageDescription;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
*****************************************
|
|
46
|
+
* 加载包描述
|
|
47
|
+
*****************************************
|
|
48
|
+
*/
|
|
49
|
+
export declare function loadPackageDescription(from?: string): PackageDescription | undefined;
|
|
50
|
+
/**
|
|
51
|
+
*****************************************
|
|
52
|
+
* 读取包描述
|
|
53
|
+
*****************************************
|
|
54
|
+
*/
|
|
55
|
+
export declare function readPackageDescription(dir: string): PackageDescription | undefined;
|
|
56
|
+
/**
|
|
57
|
+
*****************************************
|
|
58
|
+
* 解析包配置
|
|
59
|
+
*****************************************
|
|
60
|
+
*/
|
|
61
|
+
export declare function resolvePackageDescription(from?: string): PackageConfig | undefined;
|