@ainc/fs 0.1.12 → 0.1.13

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.
Files changed (138) hide show
  1. package/dist/basename.d.ts +6 -6
  2. package/dist/basename.js +16 -16
  3. package/dist/copy.d.ts +40 -40
  4. package/dist/copy.js +89 -89
  5. package/dist/cpdir.d.ts +19 -19
  6. package/dist/cpdir.js +28 -28
  7. package/dist/cwd.d.ts +6 -6
  8. package/dist/cwd.js +16 -16
  9. package/dist/dirname.d.ts +6 -6
  10. package/dist/dirname.js +30 -30
  11. package/dist/extname.d.ts +6 -6
  12. package/dist/extname.js +16 -16
  13. package/dist/filename.d.ts +6 -6
  14. package/dist/filename.js +24 -24
  15. package/dist/find.d.ts +26 -26
  16. package/dist/find.js +72 -72
  17. package/dist/findFile.d.ts +20 -20
  18. package/dist/findFile.js +39 -39
  19. package/dist/finddir.d.ts +20 -20
  20. package/dist/finddir.js +39 -39
  21. package/dist/helpers/FileResolver.d.ts +54 -0
  22. package/dist/helpers/FileResolver.d.ts.map +1 -0
  23. package/dist/helpers/FileResolver.js +184 -0
  24. package/dist/helpers/FileResolver.js.map +1 -0
  25. package/dist/helpers/compose.d.ts +14 -0
  26. package/dist/helpers/compose.d.ts.map +1 -0
  27. package/dist/helpers/compose.js +38 -0
  28. package/dist/helpers/compose.js.map +1 -0
  29. package/dist/helpers/each.d.ts +7 -0
  30. package/dist/helpers/each.d.ts.map +1 -0
  31. package/dist/helpers/each.js +21 -0
  32. package/dist/helpers/each.js.map +1 -0
  33. package/dist/helpers/match.d.ts +7 -0
  34. package/dist/helpers/match.d.ts.map +1 -0
  35. package/dist/helpers/match.js +30 -0
  36. package/dist/helpers/match.js.map +1 -0
  37. package/dist/helpers/normalizePath.d.ts +23 -0
  38. package/dist/helpers/normalizePath.d.ts.map +1 -0
  39. package/dist/helpers/normalizePath.js +37 -0
  40. package/dist/helpers/normalizePath.js.map +1 -0
  41. package/dist/helpers/safeCall.d.ts +7 -0
  42. package/dist/helpers/safeCall.d.ts.map +1 -0
  43. package/dist/helpers/safeCall.js +24 -0
  44. package/dist/helpers/safeCall.js.map +1 -0
  45. package/dist/helpers/split.d.ts +7 -0
  46. package/dist/helpers/split.d.ts.map +1 -0
  47. package/dist/helpers/split.js +25 -0
  48. package/dist/helpers/split.js.map +1 -0
  49. package/dist/homedir.d.ts +6 -6
  50. package/dist/homedir.js +31 -31
  51. package/dist/includePaths.d.ts +6 -6
  52. package/dist/includePaths.js +53 -53
  53. package/dist/index.d.ts +42 -44
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +88 -92
  56. package/dist/index.js.map +1 -1
  57. package/dist/indir.d.ts +13 -13
  58. package/dist/indir.js +26 -26
  59. package/dist/isAbsolutePath.d.ts +6 -6
  60. package/dist/isAbsolutePath.js +24 -24
  61. package/dist/isDirectory.d.ts +12 -12
  62. package/dist/isDirectory.js +26 -26
  63. package/dist/isRelativePath.d.ts +6 -6
  64. package/dist/isRelativePath.js +44 -44
  65. package/dist/json.d.ts +21 -21
  66. package/dist/json.js +33 -33
  67. package/dist/jsonc.d.ts +21 -21
  68. package/dist/jsonc.js +40 -40
  69. package/dist/lstat.d.ts +22 -22
  70. package/dist/lstat.js +30 -30
  71. package/dist/mapdir.d.ts +22 -22
  72. package/dist/mapdir.js +42 -42
  73. package/dist/mkdir.d.ts +6 -6
  74. package/dist/mkdir.js +37 -37
  75. package/dist/normalizeJSON.d.ts +6 -6
  76. package/dist/normalizeJSON.js +144 -144
  77. package/dist/readFile.d.ts +29 -29
  78. package/dist/readFile.js +26 -26
  79. package/dist/readStream.d.ts +36 -36
  80. package/dist/readStream.js +19 -19
  81. package/dist/readdir.d.ts +16 -16
  82. package/dist/readdir.js +34 -34
  83. package/dist/readline.d.ts +16 -16
  84. package/dist/readline.js +24 -24
  85. package/dist/realpath.d.ts +12 -12
  86. package/dist/realpath.js +32 -32
  87. package/dist/relative.d.ts +6 -6
  88. package/dist/relative.js +38 -38
  89. package/dist/resolve.d.ts +26 -26
  90. package/dist/resolve.js +53 -53
  91. package/dist/resolvePath.d.ts +27 -0
  92. package/dist/resolvePath.d.ts.map +1 -0
  93. package/dist/resolvePath.js +178 -0
  94. package/dist/resolvePath.js.map +1 -0
  95. package/dist/rmdir.d.ts +6 -6
  96. package/dist/rmdir.js +40 -40
  97. package/dist/stat.d.ts +21 -21
  98. package/dist/stat.js +30 -30
  99. package/dist/supdir.d.ts +21 -15
  100. package/dist/supdir.d.ts.map +1 -1
  101. package/dist/supdir.js +62 -35
  102. package/dist/supdir.js.map +1 -1
  103. package/dist/symlink.d.ts +22 -22
  104. package/dist/symlink.js +39 -39
  105. package/dist/unlink.d.ts +6 -6
  106. package/dist/unlink.js +28 -28
  107. package/dist/usedir.d.ts +6 -6
  108. package/dist/usedir.js +24 -24
  109. package/dist/writeFile.d.ts +33 -33
  110. package/dist/writeFile.js +49 -49
  111. package/dist/writeStream.d.ts +35 -35
  112. package/dist/writeStream.js +19 -19
  113. package/package.json +2 -2
  114. package/src/helpers/FileResolver.ts +282 -0
  115. package/src/helpers/compose.ts +49 -0
  116. package/src/helpers/each.ts +19 -0
  117. package/src/helpers/match.ts +31 -0
  118. package/src/helpers/normalizePath.ts +51 -0
  119. package/src/helpers/safeCall.ts +21 -0
  120. package/src/helpers/split.ts +25 -0
  121. package/src/index.ts +1 -3
  122. package/src/resolvePath.ts +234 -0
  123. package/src/supdir.ts +31 -0
  124. package/dist/resolveFile.d.ts +0 -22
  125. package/dist/resolveFile.d.ts.map +0 -1
  126. package/dist/resolveFile.js +0 -80
  127. package/dist/resolveFile.js.map +0 -1
  128. package/dist/resolveModule.d.ts +0 -41
  129. package/dist/resolveModule.d.ts.map +0 -1
  130. package/dist/resolveModule.js +0 -119
  131. package/dist/resolveModule.js.map +0 -1
  132. package/dist/resolvePaths.d.ts +0 -22
  133. package/dist/resolvePaths.d.ts.map +0 -1
  134. package/dist/resolvePaths.js +0 -233
  135. package/dist/resolvePaths.js.map +0 -1
  136. package/src/resolveFile.ts +0 -103
  137. package/src/resolveModule.ts +0 -157
  138. package/src/resolvePaths.ts +0 -320
@@ -0,0 +1,178 @@
1
+ /**
2
+ *****************************************
3
+ * Created by edonet@163.com
4
+ * Created on 2021-06-19 00:16:40
5
+ *****************************************
6
+ */
7
+ 'use strict';
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.resolvePath = void 0;
10
+ /**
11
+ *****************************************
12
+ * 加载依赖
13
+ *****************************************
14
+ */
15
+ const FileResolver_1 = require("./helpers/FileResolver");
16
+ const split_1 = require("./helpers/split");
17
+ const each_1 = require("./helpers/each");
18
+ const compose_1 = require("./helpers/compose");
19
+ const cwd_1 = require("./cwd");
20
+ /**
21
+ *****************************************
22
+ * 格式化别名
23
+ *****************************************
24
+ */
25
+ function normalizePaths(value) {
26
+ // 校验值
27
+ if (!value) {
28
+ return;
29
+ }
30
+ // 处理字符串配置
31
+ if (typeof value === 'string') {
32
+ return [value];
33
+ }
34
+ // 校验数组配置参数
35
+ if (!Array.isArray(value) || !value.length) {
36
+ return;
37
+ }
38
+ // 校验参数
39
+ if (value.find(path => !path || typeof path !== 'string')) {
40
+ throw new Error('expect paths value to be valid string[]!');
41
+ }
42
+ // 返回结果
43
+ return value;
44
+ }
45
+ /**
46
+ *****************************************
47
+ * 创建路径解析器
48
+ *****************************************
49
+ */
50
+ function createPathsResolver(resolver, options) {
51
+ const rules = [];
52
+ const baseURL = cwd_1.cwd(options.context || process.cwd(), options.baseUrl || './');
53
+ const resolvePath = resolver.resolvePath;
54
+ // 解析路径
55
+ function resolvePaths(paths) {
56
+ return compose_1.compose(paths.map(value => {
57
+ const [start, end] = split_1.split(value, '*');
58
+ // 处理绝对匹配
59
+ if (end === undefined) {
60
+ return (_, context) => resolvePath(cwd_1.cwd(baseURL, start), context);
61
+ }
62
+ else {
63
+ return (id, context) => resolvePath(cwd_1.cwd(baseURL, start + id + end), context);
64
+ }
65
+ }));
66
+ }
67
+ // 校验存在路径映射配置
68
+ each_1.each(options.paths, (value, key) => {
69
+ const paths = normalizePaths(value);
70
+ // 校验配置
71
+ if (!paths) {
72
+ return;
73
+ }
74
+ // 生成解析函数
75
+ const resolve = resolvePaths(paths);
76
+ // 解析匹配项
77
+ const [start, end] = split_1.split(key, '*');
78
+ // 完成匹配
79
+ if (end === undefined) {
80
+ return rules.push((id, context) => {
81
+ return id === start ? resolve('', context) : undefined;
82
+ });
83
+ }
84
+ // 获取前/后缀长度
85
+ const startLength = start.length;
86
+ const endLength = end.length;
87
+ const idx = (startLength ? 1 : 0) + (endLength ? 2 : 0);
88
+ // 匹配前缀
89
+ if (idx === 1) {
90
+ return rules.push((id, context) => {
91
+ if (id.startsWith(start)) {
92
+ return resolve(id.slice(startLength), context);
93
+ }
94
+ });
95
+ }
96
+ // 匹配后缀
97
+ if (idx === 2) {
98
+ return rules.push((id, context) => {
99
+ if (id.endsWith(end)) {
100
+ return resolve(id.slice(0, -endLength), context);
101
+ }
102
+ });
103
+ }
104
+ // 匹配前缀和后缀
105
+ if (idx === 3) {
106
+ return rules.push((id, context) => {
107
+ if (id.startsWith(start) && id.endsWith(end)) {
108
+ return resolve(id.slice(startLength, -endLength), context);
109
+ }
110
+ });
111
+ }
112
+ // 默认完全匹配
113
+ return rules.push((id, context) => resolve(id, context));
114
+ });
115
+ // 组件规则解析方法
116
+ if (rules.length) {
117
+ return resolver.wrapHandler(compose_1.compose([...rules, resolver.resolveModule]));
118
+ }
119
+ else {
120
+ return resolvePath;
121
+ }
122
+ }
123
+ /**
124
+ *****************************************
125
+ * 创建别名解析器
126
+ *****************************************
127
+ */
128
+ function createAliasResolver(resolver, options) {
129
+ const resolvePaths = createPathsResolver(resolver, options);
130
+ const rules = [];
131
+ // 解析别名
132
+ each_1.each(options.alias, (value, key) => {
133
+ const paths = normalizePaths(value);
134
+ // 校验参数
135
+ if (!paths) {
136
+ return;
137
+ }
138
+ // 生成解析函数
139
+ const resolve = compose_1.compose(paths.map(start => (id, context) => resolvePaths(start + id, context)));
140
+ // 绝对匹配
141
+ if (key.endsWith('$')) {
142
+ // 去除匹配符
143
+ key = key.slice(0, -1);
144
+ // 添加匹配规则
145
+ return rules.push((id, context) => (id === key ? resolve('', context) : undefined));
146
+ }
147
+ // 生成配置前缀
148
+ const prefix = key + '/';
149
+ const prefixLength = key.length;
150
+ // 添加匹配规则
151
+ return rules.push((id, context) => (id === key ? resolve('', context) : undefined), (id, context) => (id.startsWith(prefix) ? resolve(id.slice(prefixLength), context) : undefined));
152
+ });
153
+ // 返回解析函数
154
+ if (rules.length) {
155
+ return resolver.wrapHandler(compose_1.compose([...rules, resolvePaths]));
156
+ }
157
+ else {
158
+ return resolvePaths;
159
+ }
160
+ }
161
+ /**
162
+ *****************************************
163
+ * 解析文件
164
+ *****************************************
165
+ */
166
+ function resolvePath(options = {}) {
167
+ const modules = options.modules || ['node_modules'];
168
+ // 添加基准模块解析
169
+ if (options.baseUrl || options.paths) {
170
+ modules.unshift(options.baseUrl || '.');
171
+ }
172
+ // 创建文件解析器
173
+ const resolver = FileResolver_1.createFileResolver({ ...options, modules });
174
+ // 返回解析函数
175
+ return createAliasResolver(resolver, options);
176
+ }
177
+ exports.resolvePath = resolvePath;
178
+ //# sourceMappingURL=resolvePath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolvePath.js","sourceRoot":"","sources":["../src/resolvePath.ts"],"names":[],"mappings":"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"}
package/dist/rmdir.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- /**
2
- *****************************************
3
- * 移除目录
4
- *****************************************
5
- */
6
- export declare function rmdir(dir: string): boolean;
1
+ /**
2
+ *****************************************
3
+ * 移除目录
4
+ *****************************************
5
+ */
6
+ export declare function rmdir(dir: string): boolean;
7
7
  //# sourceMappingURL=rmdir.d.ts.map
package/dist/rmdir.js CHANGED
@@ -1,41 +1,41 @@
1
- /**
2
- *****************************************
3
- * Created by edonet@163.com
4
- * Created on 2019-11-07 17:33:20
5
- *****************************************
6
- */
7
- 'use strict';
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.rmdir = void 0;
10
- /**
11
- *****************************************
12
- * 加载依赖
13
- *****************************************
14
- */
15
- const fs = require("fs");
16
- const lstat_1 = require("./lstat");
17
- const readdir_1 = require("./readdir");
18
- /**
19
- *****************************************
20
- * 移除目录
21
- *****************************************
22
- */
23
- function rmdir(dir) {
24
- let stats = lstat_1.lstat(dir);
25
- // 存在目录
26
- if (stats) {
27
- if (stats.isDirectory()) {
28
- // 移除子目录
29
- readdir_1.readdir(dir).forEach(({ path }) => rmdir(path));
30
- // 移除目录
31
- fs.rmdirSync(dir);
32
- }
33
- else {
34
- fs.unlinkSync(dir);
35
- }
36
- }
37
- // 返回成功
38
- return true;
39
- }
40
- exports.rmdir = rmdir;
1
+ /**
2
+ *****************************************
3
+ * Created by edonet@163.com
4
+ * Created on 2019-11-07 17:33:20
5
+ *****************************************
6
+ */
7
+ 'use strict';
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.rmdir = void 0;
10
+ /**
11
+ *****************************************
12
+ * 加载依赖
13
+ *****************************************
14
+ */
15
+ const fs = require("fs");
16
+ const lstat_1 = require("./lstat");
17
+ const readdir_1 = require("./readdir");
18
+ /**
19
+ *****************************************
20
+ * 移除目录
21
+ *****************************************
22
+ */
23
+ function rmdir(dir) {
24
+ let stats = lstat_1.lstat(dir);
25
+ // 存在目录
26
+ if (stats) {
27
+ if (stats.isDirectory()) {
28
+ // 移除子目录
29
+ readdir_1.readdir(dir).forEach(({ path }) => rmdir(path));
30
+ // 移除目录
31
+ fs.rmdirSync(dir);
32
+ }
33
+ else {
34
+ fs.unlinkSync(dir);
35
+ }
36
+ }
37
+ // 返回成功
38
+ return true;
39
+ }
40
+ exports.rmdir = rmdir;
41
41
  //# sourceMappingURL=rmdir.js.map
package/dist/stat.d.ts CHANGED
@@ -1,22 +1,22 @@
1
- /// <reference types="node" />
2
- /**
3
- *****************************************
4
- * 加载依赖
5
- *****************************************
6
- */
7
- import * as fs from 'fs';
8
- /**
9
- *****************************************
10
- * 状态
11
- *****************************************
12
- */
13
- export interface State extends fs.Stats {
14
- path: string;
15
- }
16
- /**
17
- *****************************************
18
- * 获取文件状态
19
- *****************************************
20
- */
21
- export declare function stat(dir: string): State | null;
1
+ /// <reference types="node" />
2
+ /**
3
+ *****************************************
4
+ * 加载依赖
5
+ *****************************************
6
+ */
7
+ import * as fs from 'fs';
8
+ /**
9
+ *****************************************
10
+ * 状态
11
+ *****************************************
12
+ */
13
+ export interface State extends fs.Stats {
14
+ path: string;
15
+ }
16
+ /**
17
+ *****************************************
18
+ * 获取文件状态
19
+ *****************************************
20
+ */
21
+ export declare function stat(dir: string): State | null;
22
22
  //# sourceMappingURL=stat.d.ts.map
package/dist/stat.js CHANGED
@@ -1,31 +1,31 @@
1
- /**
2
- *****************************************
3
- * Created by edonet@163.com
4
- * Created on 2019-11-07 16:06:57
5
- *****************************************
6
- */
7
- 'use strict';
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.stat = void 0;
10
- /**
11
- *****************************************
12
- * 加载依赖
13
- *****************************************
14
- */
15
- const fs = require("fs");
16
- const path = require("path");
17
- /**
18
- *****************************************
19
- * 获取文件状态
20
- *****************************************
21
- */
22
- function stat(dir) {
23
- try {
24
- return Object.assign(fs.statSync(dir), { path: path.resolve(dir) });
25
- }
26
- catch (err) {
27
- return null;
28
- }
29
- }
30
- exports.stat = stat;
1
+ /**
2
+ *****************************************
3
+ * Created by edonet@163.com
4
+ * Created on 2019-11-07 16:06:57
5
+ *****************************************
6
+ */
7
+ 'use strict';
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.stat = void 0;
10
+ /**
11
+ *****************************************
12
+ * 加载依赖
13
+ *****************************************
14
+ */
15
+ const fs = require("fs");
16
+ const path = require("path");
17
+ /**
18
+ *****************************************
19
+ * 获取文件状态
20
+ *****************************************
21
+ */
22
+ function stat(dir) {
23
+ try {
24
+ return Object.assign(fs.statSync(dir), { path: path.resolve(dir) });
25
+ }
26
+ catch (err) {
27
+ return null;
28
+ }
29
+ }
30
+ exports.stat = stat;
31
31
  //# sourceMappingURL=stat.js.map
package/dist/supdir.d.ts CHANGED
@@ -1,16 +1,22 @@
1
- /**
2
- *****************************************
3
- * 查找上一级目录回调
4
- *****************************************
5
- */
6
- interface Handler<T> {
7
- (dir: string, next: () => T | undefined): T;
8
- }
9
- /**
10
- *****************************************
11
- * 查找上级目录
12
- *****************************************
13
- */
14
- export declare function supdir<T>(dir: string, handler: Handler<T>): T | undefined;
15
- export {};
1
+ /**
2
+ *****************************************
3
+ * 遍历目录
4
+ *****************************************
5
+ */
6
+ export declare function mapdir(dir: string, handler: (dir: string) => void): void;
7
+ /**
8
+ *****************************************
9
+ * 查找上一级目录回调
10
+ *****************************************
11
+ */
12
+ interface Handler<T> {
13
+ (dir: string, next: () => T | undefined): T;
14
+ }
15
+ /**
16
+ *****************************************
17
+ * 查找上级目录
18
+ *****************************************
19
+ */
20
+ export declare function supdir<T>(dir: string, handler: Handler<T>): T | undefined;
21
+ export {};
16
22
  //# sourceMappingURL=supdir.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"supdir.d.ts","sourceRoot":"","sources":["../src/supdir.ts"],"names":[],"mappings":"AAkBA;;;;GAIG;AACH,UAAU,OAAO,CAAC,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;CAC/C;AAeD;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAEzE"}
1
+ {"version":3,"file":"supdir.d.ts","sourceRoot":"","sources":["../src/supdir.ts"],"names":[],"mappings":"AAkBA;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAuBxE;AAGD;;;;GAIG;AACH,UAAU,OAAO,CAAC,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;CAC/C;AAeD;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAEzE"}
package/dist/supdir.js CHANGED
@@ -1,36 +1,63 @@
1
- /**
2
- *****************************************
3
- * Created by edonet@163.com
4
- * Created on 2019-11-08 18:50:54
5
- *****************************************
6
- */
7
- 'use strict';
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.supdir = void 0;
10
- /**
11
- *****************************************
12
- * 加载依赖
13
- *****************************************
14
- */
15
- const path = require("path");
16
- const dirname_1 = require("./dirname");
17
- /**
18
- *****************************************
19
- * 抛出回调
20
- *****************************************
21
- */
22
- function invoke(dir, handler) {
23
- if (dir) {
24
- return handler(dir, () => invoke(dirname_1.dirname(dir), handler));
25
- }
26
- }
27
- /**
28
- *****************************************
29
- * 查找上级目录
30
- *****************************************
31
- */
32
- function supdir(dir, handler) {
33
- return invoke(path.resolve(dir), handler);
34
- }
35
- exports.supdir = supdir;
1
+ /**
2
+ *****************************************
3
+ * Created by edonet@163.com
4
+ * Created on 2019-11-08 18:50:54
5
+ *****************************************
6
+ */
7
+ 'use strict';
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.supdir = exports.mapdir = void 0;
10
+ /**
11
+ *****************************************
12
+ * 加载依赖
13
+ *****************************************
14
+ */
15
+ const path = require("path");
16
+ const dirname_1 = require("./dirname");
17
+ /**
18
+ *****************************************
19
+ * 遍历目录
20
+ *****************************************
21
+ */
22
+ function mapdir(dir, handler) {
23
+ const resolveFrom = path.resolve(dir);
24
+ const sep = path.sep;
25
+ const end = resolveFrom.indexOf(sep);
26
+ // 不存在结束符
27
+ if (end < 0) {
28
+ return handler(resolveFrom);
29
+ }
30
+ // 遍历目录
31
+ for (let idx = resolveFrom.length; idx >= end;) {
32
+ // 执行回调
33
+ if (idx === 0) {
34
+ return handler('/');
35
+ }
36
+ else {
37
+ handler(resolveFrom.slice(0, idx));
38
+ }
39
+ // 更新索引
40
+ idx = resolveFrom.lastIndexOf(sep, idx - 1);
41
+ }
42
+ }
43
+ exports.mapdir = mapdir;
44
+ /**
45
+ *****************************************
46
+ * 抛出回调
47
+ *****************************************
48
+ */
49
+ function invoke(dir, handler) {
50
+ if (dir) {
51
+ return handler(dir, () => invoke(dirname_1.dirname(dir), handler));
52
+ }
53
+ }
54
+ /**
55
+ *****************************************
56
+ * 查找上级目录
57
+ *****************************************
58
+ */
59
+ function supdir(dir, handler) {
60
+ return invoke(path.resolve(dir), handler);
61
+ }
62
+ exports.supdir = supdir;
36
63
  //# sourceMappingURL=supdir.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"supdir.js","sourceRoot":"","sources":["../src/supdir.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,YAAY,CAAC;;;AAGb;;;;GAIG;AACH,6BAA6B;AAC7B,uCAAoC;AAapC;;;;GAIG;AACH,SAAS,MAAM,CAAI,GAAW,EAAE,OAAmB;IAC/C,IAAI,GAAG,EAAE;QACL,OAAO,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,iBAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;KAC5D;AACL,CAAC;AAGD;;;;GAIG;AACH,SAAgB,MAAM,CAAI,GAAW,EAAE,OAAmB;IACtD,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AAFD,wBAEC"}
1
+ {"version":3,"file":"supdir.js","sourceRoot":"","sources":["../src/supdir.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,YAAY,CAAC;;;AAGb;;;;GAIG;AACH,6BAA6B;AAC7B,uCAAoC;AAGpC;;;;GAIG;AACH,SAAgB,MAAM,CAAC,GAAW,EAAE,OAA8B;IAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACrB,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAErC,SAAS;IACT,IAAI,GAAG,GAAG,CAAC,EAAE;QACT,OAAO,OAAO,CAAC,WAAW,CAAC,CAAC;KAC/B;IAED,OAAO;IACP,KAAK,IAAI,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,IAAI,GAAG,GAAI;QAE7C,OAAO;QACP,IAAI,GAAG,KAAK,CAAC,EAAE;YACX,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;SACvB;aAAM;YACH,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;SACtC;QAED,OAAO;QACP,GAAG,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;KAC/C;AACL,CAAC;AAvBD,wBAuBC;AAaD;;;;GAIG;AACH,SAAS,MAAM,CAAI,GAAW,EAAE,OAAmB;IAC/C,IAAI,GAAG,EAAE;QACL,OAAO,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,iBAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;KAC5D;AACL,CAAC;AAGD;;;;GAIG;AACH,SAAgB,MAAM,CAAI,GAAW,EAAE,OAAmB;IACtD,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AAFD,wBAEC"}
package/dist/symlink.d.ts CHANGED
@@ -1,23 +1,23 @@
1
- /**
2
- *****************************************
3
- * 选项
4
- *****************************************
5
- */
6
- interface Options {
7
- type?: 'dir' | 'file' | 'junction';
8
- mode?: 'force' | 'weak';
9
- }
10
- /**
11
- *****************************************
12
- * 创建软链接
13
- *****************************************
14
- */
15
- declare function symlink(src: string, dest: string): void;
16
- declare function symlink(src: string, dest: string, { type, mode }: Options): void;
17
- /**
18
- *****************************************
19
- * 抛出接口
20
- *****************************************
21
- */
22
- export { symlink };
1
+ /**
2
+ *****************************************
3
+ * 选项
4
+ *****************************************
5
+ */
6
+ interface Options {
7
+ type?: 'dir' | 'file' | 'junction';
8
+ mode?: 'force' | 'weak';
9
+ }
10
+ /**
11
+ *****************************************
12
+ * 创建软链接
13
+ *****************************************
14
+ */
15
+ declare function symlink(src: string, dest: string): void;
16
+ declare function symlink(src: string, dest: string, { type, mode }: Options): void;
17
+ /**
18
+ *****************************************
19
+ * 抛出接口
20
+ *****************************************
21
+ */
22
+ export { symlink };
23
23
  //# sourceMappingURL=symlink.d.ts.map
package/dist/symlink.js CHANGED
@@ -1,40 +1,40 @@
1
- /**
2
- *****************************************
3
- * Created by edonet@163.com
4
- * Created on 2020-01-28 19:01:13
5
- *****************************************
6
- */
7
- 'use strict';
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.symlink = void 0;
10
- /**
11
- *****************************************
12
- * 加载依赖
13
- *****************************************
14
- */
15
- const fs = require("fs");
16
- const path = require("path");
17
- const mkdir_1 = require("./mkdir");
18
- const rmdir_1 = require("./rmdir");
19
- const lstat_1 = require("./lstat");
20
- function symlink(src, dest, { type, mode } = {}) {
21
- // 解析路径
22
- src = path.resolve(src);
23
- dest = path.resolve(dest);
24
- // 存在目录文件
25
- if (lstat_1.lstat(dest)) {
26
- if (mode === 'force') {
27
- rmdir_1.rmdir(dest);
28
- }
29
- else if (mode === 'weak') {
30
- return;
31
- }
32
- }
33
- else {
34
- mkdir_1.mkdir(path.dirname(dest));
35
- }
36
- // 创建链接
37
- fs.symlinkSync(src, dest, type);
38
- }
39
- exports.symlink = symlink;
1
+ /**
2
+ *****************************************
3
+ * Created by edonet@163.com
4
+ * Created on 2020-01-28 19:01:13
5
+ *****************************************
6
+ */
7
+ 'use strict';
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.symlink = void 0;
10
+ /**
11
+ *****************************************
12
+ * 加载依赖
13
+ *****************************************
14
+ */
15
+ const fs = require("fs");
16
+ const path = require("path");
17
+ const mkdir_1 = require("./mkdir");
18
+ const rmdir_1 = require("./rmdir");
19
+ const lstat_1 = require("./lstat");
20
+ function symlink(src, dest, { type, mode } = {}) {
21
+ // 解析路径
22
+ src = path.resolve(src);
23
+ dest = path.resolve(dest);
24
+ // 存在目录文件
25
+ if (lstat_1.lstat(dest)) {
26
+ if (mode === 'force') {
27
+ rmdir_1.rmdir(dest);
28
+ }
29
+ else if (mode === 'weak') {
30
+ return;
31
+ }
32
+ }
33
+ else {
34
+ mkdir_1.mkdir(path.dirname(dest));
35
+ }
36
+ // 创建链接
37
+ fs.symlinkSync(src, dest, type);
38
+ }
39
+ exports.symlink = symlink;
40
40
  //# sourceMappingURL=symlink.js.map