@ainc/fs 0.1.10 → 0.1.14

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 (175) hide show
  1. package/README.md +2 -0
  2. package/dist/basename.d.ts +6 -6
  3. package/dist/basename.js +16 -16
  4. package/dist/copy.d.ts +40 -40
  5. package/dist/copy.d.ts.map +1 -1
  6. package/dist/copy.js +89 -86
  7. package/dist/copy.js.map +1 -1
  8. package/dist/cpdir.d.ts +19 -19
  9. package/dist/cpdir.js +28 -28
  10. package/dist/cwd.d.ts +6 -6
  11. package/dist/cwd.js +16 -16
  12. package/dist/dirname.d.ts +6 -6
  13. package/dist/dirname.js +30 -30
  14. package/dist/extname.d.ts +6 -6
  15. package/dist/extname.js +16 -16
  16. package/dist/filename.d.ts +6 -6
  17. package/dist/filename.js +24 -24
  18. package/dist/find.d.ts +26 -26
  19. package/dist/find.d.ts.map +1 -1
  20. package/dist/find.js +72 -68
  21. package/dist/find.js.map +1 -1
  22. package/dist/findFile.d.ts +20 -20
  23. package/dist/findFile.d.ts.map +1 -1
  24. package/dist/findFile.js +39 -39
  25. package/dist/findFile.js.map +1 -1
  26. package/dist/finddir.d.ts +20 -20
  27. package/dist/finddir.d.ts.map +1 -1
  28. package/dist/finddir.js +39 -39
  29. package/dist/finddir.js.map +1 -1
  30. package/dist/helpers/FileResolver.d.ts +54 -0
  31. package/dist/helpers/FileResolver.d.ts.map +1 -0
  32. package/dist/helpers/FileResolver.js +184 -0
  33. package/dist/helpers/FileResolver.js.map +1 -0
  34. package/dist/helpers/compose.d.ts +14 -0
  35. package/dist/helpers/compose.d.ts.map +1 -0
  36. package/dist/helpers/compose.js +38 -0
  37. package/dist/helpers/compose.js.map +1 -0
  38. package/dist/helpers/each.d.ts +7 -0
  39. package/dist/helpers/each.d.ts.map +1 -0
  40. package/dist/helpers/each.js +21 -0
  41. package/dist/helpers/each.js.map +1 -0
  42. package/dist/helpers/match.d.ts +7 -0
  43. package/dist/helpers/match.d.ts.map +1 -0
  44. package/dist/helpers/match.js +30 -0
  45. package/dist/helpers/match.js.map +1 -0
  46. package/dist/helpers/normalizePath.d.ts +23 -0
  47. package/dist/helpers/normalizePath.d.ts.map +1 -0
  48. package/dist/helpers/normalizePath.js +37 -0
  49. package/dist/helpers/normalizePath.js.map +1 -0
  50. package/dist/helpers/safeCall.d.ts +7 -0
  51. package/dist/helpers/safeCall.d.ts.map +1 -0
  52. package/dist/helpers/safeCall.js +24 -0
  53. package/dist/helpers/safeCall.js.map +1 -0
  54. package/dist/helpers/split.d.ts +7 -0
  55. package/dist/helpers/split.d.ts.map +1 -0
  56. package/dist/helpers/split.js +25 -0
  57. package/dist/helpers/split.js.map +1 -0
  58. package/dist/homedir.d.ts +6 -6
  59. package/dist/homedir.js +31 -31
  60. package/dist/includePaths.d.ts +6 -6
  61. package/dist/includePaths.js +53 -53
  62. package/dist/index.d.ts +42 -41
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +88 -86
  65. package/dist/index.js.map +1 -1
  66. package/dist/indir.d.ts +13 -13
  67. package/dist/indir.js +26 -26
  68. package/dist/isAbsolutePath.d.ts +6 -6
  69. package/dist/isAbsolutePath.js +24 -24
  70. package/dist/isDirectory.d.ts +12 -12
  71. package/dist/isDirectory.js +26 -26
  72. package/dist/isRelativePath.d.ts +6 -6
  73. package/dist/isRelativePath.d.ts.map +1 -1
  74. package/dist/isRelativePath.js +44 -18
  75. package/dist/isRelativePath.js.map +1 -1
  76. package/dist/json.d.ts +21 -21
  77. package/dist/json.js +33 -33
  78. package/dist/jsonc.d.ts +21 -21
  79. package/dist/jsonc.d.ts.map +1 -1
  80. package/dist/jsonc.js +40 -41
  81. package/dist/jsonc.js.map +1 -1
  82. package/dist/lstat.d.ts +22 -22
  83. package/dist/lstat.js +30 -30
  84. package/dist/mapdir.d.ts +22 -22
  85. package/dist/mapdir.js +42 -42
  86. package/dist/mkdir.d.ts +6 -6
  87. package/dist/mkdir.js +37 -37
  88. package/dist/normalizeJSON.d.ts +7 -0
  89. package/dist/normalizeJSON.d.ts.map +1 -0
  90. package/dist/normalizeJSON.js +145 -0
  91. package/dist/normalizeJSON.js.map +1 -0
  92. package/dist/readFile.d.ts +29 -29
  93. package/dist/readFile.js +26 -26
  94. package/dist/readStream.d.ts +36 -36
  95. package/dist/readStream.js +19 -19
  96. package/dist/readdir.d.ts +16 -16
  97. package/dist/readdir.js +34 -34
  98. package/dist/readline.d.ts +16 -16
  99. package/dist/readline.js +24 -24
  100. package/dist/realpath.d.ts +13 -0
  101. package/dist/realpath.d.ts.map +1 -0
  102. package/dist/realpath.js +33 -0
  103. package/dist/realpath.js.map +1 -0
  104. package/dist/relative.d.ts +6 -6
  105. package/dist/relative.js +38 -38
  106. package/dist/relative.js.map +1 -1
  107. package/dist/resolve.d.ts +26 -25
  108. package/dist/resolve.d.ts.map +1 -1
  109. package/dist/resolve.js +53 -53
  110. package/dist/resolve.js.map +1 -1
  111. package/dist/resolvePath.d.ts +27 -0
  112. package/dist/resolvePath.d.ts.map +1 -0
  113. package/dist/resolvePath.js +178 -0
  114. package/dist/resolvePath.js.map +1 -0
  115. package/dist/rmdir.d.ts +6 -6
  116. package/dist/rmdir.js +40 -40
  117. package/dist/stat.d.ts +21 -22
  118. package/dist/stat.d.ts.map +1 -1
  119. package/dist/stat.js +30 -30
  120. package/dist/supdir.d.ts +21 -15
  121. package/dist/supdir.d.ts.map +1 -1
  122. package/dist/supdir.js +62 -35
  123. package/dist/supdir.js.map +1 -1
  124. package/dist/symlink.d.ts +22 -22
  125. package/dist/symlink.js +39 -39
  126. package/dist/unlink.d.ts +6 -6
  127. package/dist/unlink.js +28 -28
  128. package/dist/usedir.d.ts +6 -6
  129. package/dist/usedir.js +24 -24
  130. package/dist/writeFile.d.ts +33 -27
  131. package/dist/writeFile.d.ts.map +1 -1
  132. package/dist/writeFile.js +49 -46
  133. package/dist/writeFile.js.map +1 -1
  134. package/dist/writeStream.d.ts +35 -35
  135. package/dist/writeStream.js +19 -19
  136. package/package.json +7 -7
  137. package/src/copy.ts +10 -4
  138. package/src/find.ts +16 -12
  139. package/src/findFile.ts +1 -1
  140. package/src/finddir.ts +1 -1
  141. package/src/helpers/FileResolver.ts +282 -0
  142. package/src/helpers/compose.ts +49 -0
  143. package/src/helpers/each.ts +19 -0
  144. package/src/helpers/match.ts +31 -0
  145. package/src/helpers/normalizePath.ts +51 -0
  146. package/src/helpers/safeCall.ts +21 -0
  147. package/src/helpers/split.ts +25 -0
  148. package/src/{stripBOM.ts → helpers/stripBOM.ts} +3 -10
  149. package/src/helpers/stripComments.ts +167 -0
  150. package/src/index.ts +3 -1
  151. package/src/isRelativePath.ts +36 -1
  152. package/src/json.ts +2 -1
  153. package/src/jsonc.ts +2 -3
  154. package/src/parseJSON.ts +40 -0
  155. package/src/realpath.ts +35 -0
  156. package/src/relative.ts +1 -1
  157. package/src/resolve.ts +2 -1
  158. package/src/resolvePath.ts +234 -0
  159. package/src/stat.ts +1 -1
  160. package/src/supdir.ts +31 -0
  161. package/src/writeFile.ts +11 -8
  162. package/dist/resolveAlias.d.ts +0 -21
  163. package/dist/resolveAlias.d.ts.map +0 -1
  164. package/dist/resolveAlias.js +0 -108
  165. package/dist/resolveAlias.js.map +0 -1
  166. package/dist/stripBOM.d.ts +0 -7
  167. package/dist/stripBOM.d.ts.map +0 -1
  168. package/dist/stripBOM.js +0 -24
  169. package/dist/stripBOM.js.map +0 -1
  170. package/dist/stripComments.d.ts +0 -7
  171. package/dist/stripComments.d.ts.map +0 -1
  172. package/dist/stripComments.js +0 -100
  173. package/dist/stripComments.js.map +0 -1
  174. package/src/resolveAlias.ts +0 -153
  175. package/src/stripComments.ts +0 -112
@@ -1,153 +0,0 @@
1
- /**
2
- *****************************************
3
- * Created by edonet@163.com
4
- * Created on 2021-05-25 22:34:41
5
- *****************************************
6
- */
7
- 'use strict';
8
-
9
-
10
- /**
11
- *****************************************
12
- * 加载依赖
13
- *****************************************
14
- */
15
- import { resolve } from 'path';
16
- import { isRelativePath } from './isRelativePath';
17
-
18
-
19
- /**
20
- *****************************************
21
- * 末尾星号匹配项
22
- *****************************************
23
- */
24
- const endsStar = /\*+$/;
25
-
26
-
27
- /**
28
- *****************************************
29
- * 匹配函数
30
- *****************************************
31
- */
32
- interface Rule {
33
- (source: string): string | false;
34
- }
35
-
36
- /**
37
- *****************************************
38
- * 解析路径规则
39
- *****************************************
40
- */
41
- function resolvePaths(key: string, value: string, baseUrl: string, rules: Rule[]): void {
42
-
43
- // 校验值
44
- if (!key || key === '*' || !value) {
45
- return;
46
- }
47
-
48
- // 清除末尾星号
49
- if (value.endsWith('*')) {
50
- value = value.replace(endsStar, '');
51
- }
52
-
53
- // 解析匹配规则
54
- if (key.endsWith('/*') || key.endsWith('/')) {
55
- const prefix = key.replace(endsStar, '');
56
-
57
- // 存在名称
58
- if (prefix) {
59
- const size = prefix.length;
60
-
61
- // 添加规则
62
- rules.push(
63
- isRelativePath(value) ?
64
- source => source.startsWith(prefix) && resolve(baseUrl, value, './' + source.slice(size)) :
65
- source => source.startsWith(prefix) && value + source.slice(size)
66
- );
67
- }
68
- } else if (key.endsWith('$')) {
69
- const name = key.slice(0, -1);
70
-
71
- // 格式化路径
72
- if (isRelativePath(value)) {
73
- value = resolve(baseUrl, value);
74
- }
75
-
76
- // 存在名称
77
- if (name) {
78
- rules.push(source => name === source && value);
79
- }
80
- } else {
81
- const prefix = key + '/';
82
- const size = key.length;
83
-
84
- // 格式化路径
85
- if (isRelativePath(value)) {
86
- value = resolve(baseUrl, value);
87
-
88
- // 添加匹配规则
89
- rules.push(
90
- source => key === source && value,
91
- source => source.startsWith(prefix) && resolve(value, './' + source.slice(size)),
92
- );
93
- } else {
94
- rules.push(
95
- source => key === source && value,
96
- source => source.startsWith(prefix) && value + source.slice(size)
97
- );
98
- }
99
- }
100
- }
101
-
102
-
103
- /**
104
- *****************************************
105
- * 别名配置
106
- *****************************************
107
- */
108
- export interface Options {
109
- baseUrl?: string;
110
- paths?: { [key: string]: string[] };
111
- alias?: { [key: string]: string };
112
- }
113
-
114
-
115
- /**
116
- *****************************************
117
- * 解析路径别名
118
- *****************************************
119
- */
120
- export function resolveAlias(options: Options): (source: string) => string {
121
- const rules: Rule[] = [];
122
- const { alias, paths, baseUrl = '.' } = options;
123
-
124
- // 存在别名配置
125
- if (alias) {
126
- Object.keys(alias).forEach(key => resolvePaths(key, alias[key], baseUrl, rules));
127
- }
128
-
129
- // 存在路径配置
130
- if (paths) {
131
- Object.keys(paths).forEach(key => resolvePaths(key, paths[key][0], baseUrl, rules));
132
- }
133
-
134
- // 无解析规则
135
- if (!rules.length) {
136
- return (source: string) => source;
137
- }
138
-
139
- // 生成解析函数
140
- return (source: string) => {
141
- for (let idx = 0, len = rules.length; idx < len; idx ++) {
142
- const result = rules[idx](source);
143
-
144
- // 解析成功
145
- if (result) {
146
- return result;
147
- }
148
- }
149
-
150
- // 解析失败
151
- return source;
152
- };
153
- }
@@ -1,112 +0,0 @@
1
- /**
2
- *****************************************
3
- * Created by edonet@163.com
4
- * Created on 2021-05-31 22:41:48
5
- *****************************************
6
- */
7
- 'use strict';
8
-
9
-
10
- /**
11
- *****************************************
12
- * 过滤注释
13
- *****************************************
14
- */
15
- export function stripComments(content: string): string {
16
- let result = '';
17
- let idx = 0;
18
- let len = content.length;
19
- let start = 0;
20
-
21
- // 查找转义符
22
- function isEscaped(index: number): number {
23
- let count = 1;
24
-
25
- while (content[index - count] === '\\') {
26
- count ++;
27
- }
28
-
29
- return count % 2;
30
- }
31
-
32
- // 路过字符串
33
- function skipString(ch: string, start: number): number {
34
- const end = content.indexOf(ch, start);
35
-
36
- if (end === -1) {
37
- return len;
38
- } else {
39
- return isEscaped(end) ? end + 1 : skipString(ch, end + 1);
40
- }
41
- }
42
-
43
- // 查找换行
44
- function indexLineCommentEnd(start: number): number {
45
- const end = content.indexOf('\n', start);
46
-
47
- if (end === -1) {
48
- return len;
49
- } else {
50
- return content[end - 1] === '\r' ? end - 1 : end;
51
- }
52
- }
53
-
54
- // 查找块注释结束
55
- function indexBlockCommentEnd(start: number): number {
56
- const end = content.indexOf('/', start);
57
-
58
- if (end === -1) {
59
- return len;
60
- } else if (content[end - 1] === '*') {
61
- return end + 1;
62
- } else {
63
- return indexBlockCommentEnd(end + 1);
64
- }
65
- }
66
-
67
- // 遍历字符
68
- while (idx < len) {
69
- const ch = content[idx];
70
-
71
- // 跳过字符串
72
- if (ch === '"') {
73
- idx = skipString('"', idx + 1);
74
- continue;
75
- }
76
-
77
- // 自增偏移
78
- idx ++;
79
-
80
- // 非注释
81
- if (ch !== '/') {
82
- continue;
83
- }
84
-
85
- // 获取下一字符
86
- const next = content[idx];
87
-
88
- // 处理行注释
89
- if (next === '/') {
90
- result += content.slice(start, idx - 1);
91
- start = indexLineCommentEnd(idx + 1);
92
- idx = start + 1;
93
- continue;
94
- }
95
-
96
- // 处理多行注释
97
- if (next === '*') {
98
- result += content.slice(start, idx - 1);
99
- start = indexBlockCommentEnd(idx + 2);
100
- idx = start;
101
- continue;
102
- }
103
- }
104
-
105
- // 添加结束片段
106
- if (start < len) {
107
- result += content.slice(start);
108
- }
109
-
110
- // 返回结果
111
- return result;
112
- }