@ainc/fs 0.1.9 → 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 (128) hide show
  1. package/README.md +1 -0
  2. package/bin/cli.js +0 -0
  3. package/dist/copy.d.ts +1 -1
  4. package/dist/copy.d.ts.map +1 -1
  5. package/dist/copy.js +6 -3
  6. package/dist/copy.js.map +1 -1
  7. package/dist/find.d.ts +2 -2
  8. package/dist/find.d.ts.map +1 -1
  9. package/dist/find.js +12 -8
  10. package/dist/find.js.map +1 -1
  11. package/dist/findFile.d.ts +1 -1
  12. package/dist/findFile.d.ts.map +1 -1
  13. package/dist/findFile.js.map +1 -1
  14. package/dist/finddir.d.ts +1 -1
  15. package/dist/finddir.d.ts.map +1 -1
  16. package/dist/finddir.js.map +1 -1
  17. package/dist/helpers/FileResolver.d.ts +54 -0
  18. package/dist/helpers/FileResolver.d.ts.map +1 -0
  19. package/dist/helpers/FileResolver.js +184 -0
  20. package/dist/helpers/FileResolver.js.map +1 -0
  21. package/dist/helpers/compose.d.ts +14 -0
  22. package/dist/helpers/compose.d.ts.map +1 -0
  23. package/dist/helpers/compose.js +38 -0
  24. package/dist/helpers/compose.js.map +1 -0
  25. package/dist/helpers/each.d.ts +7 -0
  26. package/dist/helpers/each.d.ts.map +1 -0
  27. package/dist/helpers/each.js +21 -0
  28. package/dist/helpers/each.js.map +1 -0
  29. package/dist/helpers/match.d.ts +7 -0
  30. package/dist/helpers/match.d.ts.map +1 -0
  31. package/dist/helpers/match.js +30 -0
  32. package/dist/helpers/match.js.map +1 -0
  33. package/dist/helpers/normalizePath.d.ts +23 -0
  34. package/dist/helpers/normalizePath.d.ts.map +1 -0
  35. package/dist/helpers/normalizePath.js +37 -0
  36. package/dist/helpers/normalizePath.js.map +1 -0
  37. package/dist/helpers/safeCall.d.ts +7 -0
  38. package/dist/helpers/safeCall.d.ts.map +1 -0
  39. package/dist/helpers/safeCall.js +24 -0
  40. package/dist/helpers/safeCall.js.map +1 -0
  41. package/dist/helpers/split.d.ts +7 -0
  42. package/dist/helpers/split.d.ts.map +1 -0
  43. package/dist/helpers/split.js +25 -0
  44. package/dist/helpers/split.js.map +1 -0
  45. package/dist/includePaths.js +1 -1
  46. package/dist/includePaths.js.map +1 -1
  47. package/dist/index.d.ts +2 -1
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +75 -73
  50. package/dist/index.js.map +1 -1
  51. package/dist/isRelativePath.d.ts.map +1 -1
  52. package/dist/isRelativePath.js +27 -1
  53. package/dist/isRelativePath.js.map +1 -1
  54. package/dist/json.d.ts +2 -2
  55. package/dist/json.d.ts.map +1 -1
  56. package/dist/json.js.map +1 -1
  57. package/dist/jsonc.d.ts +2 -2
  58. package/dist/jsonc.d.ts.map +1 -1
  59. package/dist/jsonc.js +2 -3
  60. package/dist/jsonc.js.map +1 -1
  61. package/dist/{stripComments.d.ts → normalizeJSON.d.ts} +2 -2
  62. package/dist/normalizeJSON.d.ts.map +1 -0
  63. package/dist/normalizeJSON.js +145 -0
  64. package/dist/normalizeJSON.js.map +1 -0
  65. package/dist/realpath.d.ts +13 -0
  66. package/dist/realpath.d.ts.map +1 -0
  67. package/dist/realpath.js +33 -0
  68. package/dist/realpath.js.map +1 -0
  69. package/dist/relative.d.ts.map +1 -1
  70. package/dist/relative.js +5 -1
  71. package/dist/relative.js.map +1 -1
  72. package/dist/resolve.d.ts +1 -0
  73. package/dist/resolve.d.ts.map +1 -1
  74. package/dist/resolve.js +1 -1
  75. package/dist/resolve.js.map +1 -1
  76. package/dist/resolvePath.d.ts +27 -0
  77. package/dist/resolvePath.d.ts.map +1 -0
  78. package/dist/resolvePath.js +178 -0
  79. package/dist/resolvePath.js.map +1 -0
  80. package/dist/stat.d.ts +1 -2
  81. package/dist/stat.d.ts.map +1 -1
  82. package/dist/supdir.d.ts +6 -0
  83. package/dist/supdir.d.ts.map +1 -1
  84. package/dist/supdir.js +28 -1
  85. package/dist/supdir.js.map +1 -1
  86. package/dist/writeFile.d.ts +8 -2
  87. package/dist/writeFile.d.ts.map +1 -1
  88. package/dist/writeFile.js +6 -3
  89. package/dist/writeFile.js.map +1 -1
  90. package/package.json +5 -5
  91. package/src/copy.ts +10 -4
  92. package/src/find.ts +16 -12
  93. package/src/findFile.ts +1 -1
  94. package/src/finddir.ts +1 -1
  95. package/src/helpers/FileResolver.ts +282 -0
  96. package/src/helpers/compose.ts +49 -0
  97. package/src/helpers/each.ts +19 -0
  98. package/src/helpers/match.ts +31 -0
  99. package/src/helpers/normalizePath.ts +51 -0
  100. package/src/helpers/safeCall.ts +21 -0
  101. package/src/helpers/split.ts +25 -0
  102. package/src/includePaths.ts +1 -1
  103. package/src/index.ts +2 -1
  104. package/src/isRelativePath.ts +36 -1
  105. package/src/json.ts +3 -3
  106. package/src/jsonc.ts +5 -6
  107. package/src/normalizeJSON.ts +167 -0
  108. package/src/realpath.ts +35 -0
  109. package/src/relative.ts +6 -1
  110. package/src/resolve.ts +2 -1
  111. package/src/resolvePath.ts +234 -0
  112. package/src/stat.ts +1 -1
  113. package/src/supdir.ts +31 -0
  114. package/src/writeFile.ts +11 -8
  115. package/dist/resolveAlias.d.ts +0 -21
  116. package/dist/resolveAlias.d.ts.map +0 -1
  117. package/dist/resolveAlias.js +0 -108
  118. package/dist/resolveAlias.js.map +0 -1
  119. package/dist/stripBOM.d.ts +0 -7
  120. package/dist/stripBOM.d.ts.map +0 -1
  121. package/dist/stripBOM.js +0 -24
  122. package/dist/stripBOM.js.map +0 -1
  123. package/dist/stripComments.d.ts.map +0 -1
  124. package/dist/stripComments.js +0 -100
  125. package/dist/stripComments.js.map +0 -1
  126. package/src/resolveAlias.ts +0 -153
  127. package/src/stripBOM.ts +0 -24
  128. package/src/stripComments.ts +0 -112
@@ -1,108 +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
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.resolveAlias = void 0;
10
- /**
11
- *****************************************
12
- * 加载依赖
13
- *****************************************
14
- */
15
- const path_1 = require("path");
16
- const isRelativePath_1 = require("./isRelativePath");
17
- /**
18
- *****************************************
19
- * 末尾星号匹配项
20
- *****************************************
21
- */
22
- const endsStar = /\*+$/;
23
- /**
24
- *****************************************
25
- * 解析路径规则
26
- *****************************************
27
- */
28
- function resolvePaths(key, value, baseUrl, rules) {
29
- // 校验值
30
- if (!key || key === '*' || !value) {
31
- return;
32
- }
33
- // 清除末尾星号
34
- if (value.endsWith('*')) {
35
- value = value.replace(endsStar, '');
36
- }
37
- // 解析匹配规则
38
- if (key.endsWith('/*') || key.endsWith('/')) {
39
- const prefix = key.replace(endsStar, '');
40
- // 存在名称
41
- if (prefix) {
42
- const size = prefix.length;
43
- // 添加规则
44
- rules.push(isRelativePath_1.isRelativePath(value) ?
45
- source => source.startsWith(prefix) && path_1.resolve(baseUrl, value, './' + source.slice(size)) :
46
- source => source.startsWith(prefix) && value + source.slice(size));
47
- }
48
- }
49
- else if (key.endsWith('$')) {
50
- const name = key.slice(0, -1);
51
- // 格式化路径
52
- if (isRelativePath_1.isRelativePath(value)) {
53
- value = path_1.resolve(baseUrl, value);
54
- }
55
- // 存在名称
56
- if (name) {
57
- rules.push(source => name === source && value);
58
- }
59
- }
60
- else {
61
- const prefix = key + '/';
62
- const size = key.length;
63
- // 格式化路径
64
- if (isRelativePath_1.isRelativePath(value)) {
65
- value = path_1.resolve(baseUrl, value);
66
- // 添加匹配规则
67
- rules.push(source => key === source && value, source => source.startsWith(prefix) && path_1.resolve(value, './' + source.slice(size)));
68
- }
69
- else {
70
- rules.push(source => key === source && value, source => source.startsWith(prefix) && value + source.slice(size));
71
- }
72
- }
73
- }
74
- /**
75
- *****************************************
76
- * 解析路径别名
77
- *****************************************
78
- */
79
- function resolveAlias(options) {
80
- const rules = [];
81
- const { alias, paths, baseUrl = '.' } = options;
82
- // 存在别名配置
83
- if (alias) {
84
- Object.keys(alias).forEach(key => resolvePaths(key, alias[key], baseUrl, rules));
85
- }
86
- // 存在路径配置
87
- if (paths) {
88
- Object.keys(paths).forEach(key => resolvePaths(key, paths[key][0], baseUrl, rules));
89
- }
90
- // 无解析规则
91
- if (!rules.length) {
92
- return (source) => source;
93
- }
94
- // 生成解析函数
95
- return (source) => {
96
- for (let idx = 0, len = rules.length; idx < len; idx++) {
97
- const result = rules[idx](source);
98
- // 解析成功
99
- if (result) {
100
- return result;
101
- }
102
- }
103
- // 解析失败
104
- return source;
105
- };
106
- }
107
- exports.resolveAlias = resolveAlias;
108
- //# sourceMappingURL=resolveAlias.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolveAlias.js","sourceRoot":"","sources":["../src/resolveAlias.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- /**
2
- *****************************************
3
- * 移除BOM头
4
- *****************************************
5
- */
6
- export declare function stripBOM(content: string): string;
7
- //# sourceMappingURL=stripBOM.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stripBOM.d.ts","sourceRoot":"","sources":["../src/stripBOM.ts"],"names":[],"mappings":"AASA;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAShD"}
package/dist/stripBOM.js DELETED
@@ -1,24 +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
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.stripBOM = void 0;
10
- /**
11
- *****************************************
12
- * 移除BOM头
13
- *****************************************
14
- */
15
- function stripBOM(content) {
16
- // 检测第一个字符是否为BOM
17
- if (content.charCodeAt(0) === 0xFEFF) {
18
- return content.slice(1);
19
- }
20
- // 返回源内容
21
- return content;
22
- }
23
- exports.stripBOM = stripBOM;
24
- //# sourceMappingURL=stripBOM.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stripBOM.js","sourceRoot":"","sources":["../src/stripBOM.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,YAAY,CAAC;;;AAGb;;;;GAIG;AACH,SAAgB,QAAQ,CAAC,OAAe;IAEpC,gBAAgB;IAChB,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;QAClC,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC3B;IAED,QAAQ;IACR,OAAO,OAAO,CAAC;AACnB,CAAC;AATD,4BASC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"stripComments.d.ts","sourceRoot":"","sources":["../src/stripComments.ts"],"names":[],"mappings":"AASA;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAiGrD"}
@@ -1,100 +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
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.stripComments = void 0;
10
- /**
11
- *****************************************
12
- * 过滤注释
13
- *****************************************
14
- */
15
- function stripComments(content) {
16
- let result = '';
17
- let idx = 0;
18
- let len = content.length;
19
- let start = 0;
20
- // 查找转义符
21
- function isEscaped(index) {
22
- let count = 1;
23
- while (content[index - count] === '\\') {
24
- count++;
25
- }
26
- return count % 2;
27
- }
28
- // 路过字符串
29
- function skipString(ch, start) {
30
- const end = content.indexOf(ch, start);
31
- if (end === -1) {
32
- return len;
33
- }
34
- else {
35
- return isEscaped(end) ? end + 1 : skipString(ch, end + 1);
36
- }
37
- }
38
- // 查找换行
39
- function indexLineCommentEnd(start) {
40
- const end = content.indexOf('\n', start);
41
- if (end === -1) {
42
- return len;
43
- }
44
- else {
45
- return content[end - 1] === '\r' ? end - 1 : end;
46
- }
47
- }
48
- // 查找块注释结束
49
- function indexBlockCommentEnd(start) {
50
- const end = content.indexOf('/', start);
51
- if (end === -1) {
52
- return len;
53
- }
54
- else if (content[end - 1] === '*') {
55
- return end + 1;
56
- }
57
- else {
58
- return indexBlockCommentEnd(end + 1);
59
- }
60
- }
61
- // 遍历字符
62
- while (idx < len) {
63
- const ch = content[idx];
64
- // 跳过字符串
65
- if (ch === '"') {
66
- idx = skipString('"', idx + 1);
67
- continue;
68
- }
69
- // 自增偏移
70
- idx++;
71
- // 非注释
72
- if (ch !== '/') {
73
- continue;
74
- }
75
- // 获取下一字符
76
- const next = content[idx];
77
- // 处理行注释
78
- if (next === '/') {
79
- result += content.slice(start, idx - 1);
80
- start = indexLineCommentEnd(idx + 1);
81
- idx = start + 1;
82
- continue;
83
- }
84
- // 处理多行注释
85
- if (next === '*') {
86
- result += content.slice(start, idx - 1);
87
- start = indexBlockCommentEnd(idx + 2);
88
- idx = start;
89
- continue;
90
- }
91
- }
92
- // 添加结束片段
93
- if (start < len) {
94
- result += content.slice(start);
95
- }
96
- // 返回结果
97
- return result;
98
- }
99
- exports.stripComments = stripComments;
100
- //# sourceMappingURL=stripComments.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stripComments.js","sourceRoot":"","sources":["../src/stripComments.ts"],"names":[],"mappings":"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"}
@@ -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
- }
package/src/stripBOM.ts DELETED
@@ -1,24 +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
- * 移除BOM头
13
- *****************************************
14
- */
15
- export function stripBOM(content: string): string {
16
-
17
- // 检测第一个字符是否为BOM
18
- if (content.charCodeAt(0) === 0xFEFF) {
19
- return content.slice(1);
20
- }
21
-
22
- // 返回源内容
23
- return content;
24
- }
@@ -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
- }