whet 0.0.19 → 0.0.21
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/README.md +9 -6
- package/bin/HxOverrides.d.ts +0 -1
- package/bin/HxOverrides.js +0 -7
- package/bin/whet/Project.js +4 -25
- package/bin/whet/Source.d.ts +3 -2
- package/bin/whet/Source.js +14 -37
- package/bin/whet/SourceId.d.ts +17 -5
- package/bin/whet/SourceId.js +93 -68
- package/bin/whet/Stone.js +14 -26
- package/bin/whet/Whet.js +1 -1
- package/bin/whet/cache/BaseCache.js +6 -23
- package/bin/whet/cache/CacheManager.js +10 -33
- package/bin/whet/cache/FileCache.js +17 -143
- package/bin/whet/magic/MinimatchType.js +1 -11
- package/bin/whet/magic/RoutePathType.js +8 -45
- package/bin/whet/route/Router.d.ts +15 -5
- package/bin/whet/route/Router.js +166 -227
- package/bin/whet/stones/Files.d.ts +6 -0
- package/bin/whet/stones/Files.js +95 -52
- package/bin/whet/stones/JsonStone.d.ts +2 -2
- package/bin/whet/stones/JsonStone.js +6 -13
- package/bin/whet/stones/RemoteFile.js +1 -10
- package/bin/whet/stones/Server.js +9 -33
- package/bin/whet/stones/Zip.d.ts +2 -2
- package/bin/whet/stones/Zip.js +4 -26
- package/bin/whet/stones/haxe/HaxeBuild.js +6 -35
- package/bin/whet/stones/haxe/Hxml.js +21 -67
- package/bin/whet.d.ts +1 -0
- package/bin/whet.js +1 -0
- package/package.json +1 -1
package/bin/whet/route/Router.js
CHANGED
|
@@ -3,12 +3,9 @@ import {RoutePathType_Fields_} from "../magic/RoutePathType.js"
|
|
|
3
3
|
import {MinimatchType_Fields_} from "../magic/MinimatchType.js"
|
|
4
4
|
import {Utils} from "../Utils.js"
|
|
5
5
|
import {Stone} from "../Stone.js"
|
|
6
|
-
import {SourceId} from "../SourceId.js"
|
|
7
6
|
import {SourceHash} from "../SourceHash.js"
|
|
8
7
|
import * as Path from "path"
|
|
9
8
|
import {Register} from "../../genes/Register.js"
|
|
10
|
-
import {StringTools} from "../../StringTools.js"
|
|
11
|
-
import {HxOverrides} from "../../HxOverrides.js"
|
|
12
9
|
|
|
13
10
|
const $global = Register.$global
|
|
14
11
|
|
|
@@ -28,125 +25,167 @@ class Router extends Register.inherits() {
|
|
|
28
25
|
* @param pattern A glob pattern to search for.
|
|
29
26
|
*/
|
|
30
27
|
get(pattern) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
28
|
+
return this.getResults([{"pathSoFar": [], "filter": (pattern != null) ? MinimatchType_Fields_.makeMinimatch(pattern) : null, "inProgress": true, "remDirs": []}], []);
|
|
29
|
+
}
|
|
30
|
+
getResults(mainFilters, results) {
|
|
34
31
|
var _gthis = this;
|
|
35
|
-
var filter = MinimatchType_Fields_.makeMinimatch(pattern);
|
|
36
32
|
return new Promise(function (res, rej) {
|
|
37
|
-
var
|
|
38
|
-
var _g =
|
|
39
|
-
var _g1 =
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
var
|
|
45
|
-
var
|
|
46
|
-
|
|
47
|
-
var
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
33
|
+
var allRouteProms = [];
|
|
34
|
+
var _g = 0;
|
|
35
|
+
var _g1 = _gthis.routes;
|
|
36
|
+
while (_g < _g1.length) {
|
|
37
|
+
var route = _g1[_g];
|
|
38
|
+
++_g;
|
|
39
|
+
var result = new Array(mainFilters.length);
|
|
40
|
+
var _g2 = 0;
|
|
41
|
+
var _g3 = mainFilters.length;
|
|
42
|
+
while (_g2 < _g3) {
|
|
43
|
+
var i = _g2++;
|
|
44
|
+
var f = mainFilters[i];
|
|
45
|
+
result[i] = {"filter": f.filter, "pathSoFar": f.pathSoFar.slice(), "inProgress": f.inProgress, "remDirs": f.remDirs.slice()};
|
|
46
|
+
};
|
|
47
|
+
var routeFilters = [result];
|
|
48
|
+
var possible;
|
|
49
|
+
var id = route.routeUnder;
|
|
50
|
+
if (id.length == 0 || id.charCodeAt(id.length - 1) == 47) {
|
|
51
|
+
var this1 = routeFilters[0];
|
|
52
|
+
var dir = route.routeUnder;
|
|
53
|
+
if (dir.length == 0 || dir == "./") {
|
|
54
|
+
possible = true;
|
|
55
|
+
} else {
|
|
56
|
+
var _this = dir.split("/");
|
|
57
|
+
var _g4 = [];
|
|
58
|
+
var _g5 = 0;
|
|
59
|
+
while (_g5 < _this.length) {
|
|
60
|
+
var v = _this[_g5];
|
|
61
|
+
++_g5;
|
|
62
|
+
if (v.length > 0) {
|
|
63
|
+
_g4.push(v);
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
var res1 = true;
|
|
67
|
+
var i1 = this1.length;
|
|
68
|
+
while (--i1 >= 0) {
|
|
69
|
+
var f1 = this1[i1];
|
|
70
|
+
if (f1.inProgress) {
|
|
71
|
+
if (f1.remDirs.length != 0) {
|
|
72
|
+
var i2 = _g4.length;
|
|
73
|
+
while (--i2 >= 0) {
|
|
74
|
+
var _g6 = 0;
|
|
75
|
+
var _g7 = f1.remDirs;
|
|
76
|
+
while (_g6 < _g7.length) if (_g7[_g6++].match(_g4[i2] + "/")) {
|
|
77
|
+
_g4.splice(i2, 1);
|
|
78
|
+
break;
|
|
76
79
|
};
|
|
77
80
|
};
|
|
78
81
|
};
|
|
79
|
-
|
|
80
|
-
if (
|
|
81
|
-
|
|
82
|
+
f1.pathSoFar = f1.pathSoFar.concat(_g4);
|
|
83
|
+
if (!(f1.filter == null || Filters.isPathPossible(this1, f1))) {
|
|
84
|
+
res1 = false;
|
|
85
|
+
break;
|
|
82
86
|
};
|
|
83
87
|
};
|
|
84
|
-
return arr;
|
|
85
88
|
};
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
+
possible = res1;
|
|
90
|
+
};
|
|
91
|
+
} else {
|
|
92
|
+
var parts = route.routeUnder.split("/");
|
|
93
|
+
var res2 = true;
|
|
94
|
+
var i3 = routeFilters[0].length;
|
|
95
|
+
while (--i3 >= 0) {
|
|
96
|
+
var f2 = routeFilters[0][i3];
|
|
97
|
+
if (f2.inProgress) {
|
|
98
|
+
f2.inProgress = false;
|
|
99
|
+
if (f2.remDirs.length != 0) {
|
|
100
|
+
var i4 = parts.length;
|
|
101
|
+
while (--i4 >= 0) {
|
|
102
|
+
var _g8 = 0;
|
|
103
|
+
var _g9 = f2.remDirs;
|
|
104
|
+
while (_g8 < _g9.length) if (_g9[_g8++].match(parts[i4] + "/")) {
|
|
105
|
+
parts.splice(i4, 1);
|
|
106
|
+
break;
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
};
|
|
110
|
+
f2.pathSoFar = f2.pathSoFar.concat(parts);
|
|
111
|
+
if (!(f2.filter == null || f2.filter.match(Path.posix.join(...f2.pathSoFar)))) {
|
|
112
|
+
res2 = false;
|
|
113
|
+
break;
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
possible = res2;
|
|
118
|
+
};
|
|
119
|
+
if (!possible) {
|
|
120
|
+
continue;
|
|
121
|
+
};
|
|
122
|
+
if (route.filter != null || route.extractDirs != null) {
|
|
123
|
+
var f3 = route.filter;
|
|
124
|
+
var extractDir = route.extractDirs;
|
|
125
|
+
if (extractDir != null && routeFilters[0].length > 0) {
|
|
126
|
+
routeFilters[0][routeFilters[0].length - 1].remDirs.push(extractDir);
|
|
127
|
+
};
|
|
128
|
+
routeFilters[0].push({"pathSoFar": [], "filter": f3, "inProgress": true, "remDirs": []});
|
|
129
|
+
};
|
|
130
|
+
var prom;
|
|
131
|
+
if (((route.source) instanceof Stone)) {
|
|
132
|
+
var stone = [route.source];
|
|
133
|
+
prom = stone[0].list().then((function (stone, routeFilters) {
|
|
89
134
|
return function (list) {
|
|
90
|
-
var arr = [];
|
|
91
135
|
var _g = 0;
|
|
92
136
|
while (_g < list.length) {
|
|
93
|
-
var
|
|
137
|
+
var sourceId = list[_g];
|
|
94
138
|
++_g;
|
|
95
|
-
var
|
|
96
|
-
var
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
139
|
+
var result = new Array(routeFilters[0].length);
|
|
140
|
+
var _g1 = 0;
|
|
141
|
+
var _g2 = routeFilters[0].length;
|
|
142
|
+
while (_g1 < _g2) {
|
|
143
|
+
var i = _g1++;
|
|
144
|
+
var f = routeFilters[0][i];
|
|
145
|
+
result[i] = {"filter": f.filter, "pathSoFar": f.pathSoFar.slice(), "inProgress": f.inProgress, "remDirs": f.remDirs.slice()};
|
|
146
|
+
};
|
|
147
|
+
var finalFilters = result;
|
|
148
|
+
var parts = sourceId.split("/");
|
|
149
|
+
var res = true;
|
|
150
|
+
var i1 = finalFilters.length;
|
|
151
|
+
while (--i1 >= 0) {
|
|
152
|
+
var f1 = finalFilters[i1];
|
|
153
|
+
if (f1.inProgress) {
|
|
154
|
+
f1.inProgress = false;
|
|
155
|
+
if (f1.remDirs.length != 0) {
|
|
156
|
+
var i2 = parts.length;
|
|
157
|
+
while (--i2 >= 0) {
|
|
158
|
+
var _g3 = 0;
|
|
159
|
+
var _g4 = f1.remDirs;
|
|
160
|
+
while (_g3 < _g4.length) if (_g4[_g3++].match(parts[i2] + "/")) {
|
|
161
|
+
parts.splice(i2, 1);
|
|
162
|
+
break;
|
|
109
163
|
};
|
|
110
|
-
s = str;
|
|
111
|
-
serveId = SourceId.relativeTo(path, (HxOverrides.cca(s, 0) == 47) ? s : "/" + s);
|
|
112
|
-
break;
|
|
113
|
-
};
|
|
114
|
-
if (!(dir.length > 0)) {
|
|
115
|
-
break;
|
|
116
164
|
};
|
|
117
165
|
};
|
|
166
|
+
f1.pathSoFar = f1.pathSoFar.concat(parts);
|
|
167
|
+
if (!(f1.filter == null || f1.filter.match(Path.posix.join(...f1.pathSoFar)))) {
|
|
168
|
+
res = false;
|
|
169
|
+
break;
|
|
170
|
+
};
|
|
118
171
|
};
|
|
119
172
|
};
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
arr.push(result);
|
|
173
|
+
if (res) {
|
|
174
|
+
var serveId = Path.posix.join(...finalFilters[0].pathSoFar);
|
|
175
|
+
results.push(new RouteResult(serveId, sourceId, stone[0]));
|
|
124
176
|
};
|
|
125
177
|
};
|
|
126
|
-
return arr;
|
|
127
178
|
};
|
|
128
|
-
})(
|
|
179
|
+
})(stone, routeFilters));
|
|
180
|
+
} else if (((route.source) instanceof Router)) {
|
|
181
|
+
prom = route.source.getResults(routeFilters[0], results);
|
|
129
182
|
} else {
|
|
130
183
|
throw new Error("Router source must be a Stone or a Router.");
|
|
131
184
|
};
|
|
132
|
-
|
|
133
|
-
return function (list) {
|
|
134
|
-
var this1 = route[0].routeUnder;
|
|
135
|
-
var routeUnderIsDir = HxOverrides.cca(this1, this1.length - 1) == 47;
|
|
136
|
-
var _g = 0;
|
|
137
|
-
while (_g < list.length) {
|
|
138
|
-
var item = list[_g];
|
|
139
|
-
++_g;
|
|
140
|
-
item.serveId = (routeUnderIsDir) ? SourceId.getPutInDir(item.serveId, route[0].routeUnder) : route[0].routeUnder;
|
|
141
|
-
if (filter.match(item.serveId)) {
|
|
142
|
-
result.push(item);
|
|
143
|
-
};
|
|
144
|
-
};
|
|
145
|
-
};
|
|
146
|
-
})(route)));
|
|
185
|
+
allRouteProms.push(prom);
|
|
147
186
|
};
|
|
148
|
-
Promise.all(
|
|
149
|
-
res(
|
|
187
|
+
Promise.all(allRouteProms).then(function (_) {
|
|
188
|
+
res(results);
|
|
150
189
|
});
|
|
151
190
|
});
|
|
152
191
|
}
|
|
@@ -155,9 +194,6 @@ class Router extends Register.inherits() {
|
|
|
155
194
|
* Get combined hash of all sources that fit the `pattern`.
|
|
156
195
|
*/
|
|
157
196
|
getHash(pattern) {
|
|
158
|
-
if (pattern == null) {
|
|
159
|
-
pattern = "**";
|
|
160
|
-
};
|
|
161
197
|
return this.get(pattern).then(function (items) {
|
|
162
198
|
var uniqueStones = [];
|
|
163
199
|
var _g = 0;
|
|
@@ -197,20 +233,7 @@ class Router extends Register.inherits() {
|
|
|
197
233
|
while (_g1 < result.length) {
|
|
198
234
|
var r = result[_g1];
|
|
199
235
|
++_g1;
|
|
200
|
-
var
|
|
201
|
-
var this1 = r.serveId;
|
|
202
|
-
var s = "/";
|
|
203
|
-
var str = ("/".length > 1 && HxOverrides.cca("/", 0) == 47) ? "/".substring(1) : "/";
|
|
204
|
-
if (str.length > 0) {
|
|
205
|
-
str = Path.posix.normalize(str);
|
|
206
|
-
str = StringTools.replace(str, "\\", "/");
|
|
207
|
-
};
|
|
208
|
-
s = str;
|
|
209
|
-
var root = (HxOverrides.cca(s, 0) == 47) ? s : "/" + s;
|
|
210
|
-
if (this1.charAt(0) != "/") {
|
|
211
|
-
throw new Error("Badly formed SourceId.");
|
|
212
|
-
};
|
|
213
|
-
var p = [Path.join(saveInto1, Path.posix.join(".", root, ".", this1))];
|
|
236
|
+
var p = [Path.join(saveInto, Path.posix.join(".", "./", ".", r.serveId))];
|
|
214
237
|
_g.push(r.get().then((function (p) {
|
|
215
238
|
return function (src) {
|
|
216
239
|
return Utils.saveBytes(p[0], src.data);
|
|
@@ -221,9 +244,6 @@ class Router extends Register.inherits() {
|
|
|
221
244
|
});
|
|
222
245
|
}
|
|
223
246
|
listContents(pattern) {
|
|
224
|
-
if (pattern == null) {
|
|
225
|
-
pattern = "**";
|
|
226
|
-
};
|
|
227
247
|
return this.get(pattern).then(function (files) {
|
|
228
248
|
var result = new Array(files.length);
|
|
229
249
|
var _g = 0;
|
|
@@ -244,122 +264,41 @@ class Router extends Register.inherits() {
|
|
|
244
264
|
return result.join("\n");
|
|
245
265
|
});
|
|
246
266
|
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
var stone = route.source;
|
|
250
|
-
return stone.list().then(function (list) {
|
|
251
|
-
var arr = [];
|
|
252
|
-
var _g = 0;
|
|
253
|
-
while (_g < list.length) {
|
|
254
|
-
var path = list[_g];
|
|
255
|
-
++_g;
|
|
256
|
-
var serveId = null;
|
|
257
|
-
if (route.filter == null || route.filter.match(path)) {
|
|
258
|
-
serveId = path;
|
|
259
|
-
if (route.extractDirs != null) {
|
|
260
|
-
var dir = path;
|
|
261
|
-
while (true) {
|
|
262
|
-
dir = dir.substring(0, dir.lastIndexOf("/"));
|
|
263
|
-
if (route.extractDirs.match(dir + "/")) {
|
|
264
|
-
var s = dir + "/";
|
|
265
|
-
var str = (s.length > 1 && HxOverrides.cca(s, 0) == 47) ? s.substring(1) : s;
|
|
266
|
-
if (str.length > 0) {
|
|
267
|
-
str = Path.posix.normalize(str);
|
|
268
|
-
str = StringTools.replace(str, "\\", "/");
|
|
269
|
-
};
|
|
270
|
-
s = str;
|
|
271
|
-
serveId = SourceId.relativeTo(path, (HxOverrides.cca(s, 0) == 47) ? s : "/" + s);
|
|
272
|
-
break;
|
|
273
|
-
};
|
|
274
|
-
if (!(dir.length > 0)) {
|
|
275
|
-
break;
|
|
276
|
-
};
|
|
277
|
-
};
|
|
278
|
-
};
|
|
279
|
-
};
|
|
280
|
-
var serveId1 = serveId;
|
|
281
|
-
if (serveId1 != null) {
|
|
282
|
-
arr.push(new RouteResult(serveId1, path, stone));
|
|
283
|
-
};
|
|
284
|
-
};
|
|
285
|
-
return arr;
|
|
286
|
-
});
|
|
287
|
-
} else if (((route.source) instanceof Router)) {
|
|
288
|
-
return route.source.get().then(function (list) {
|
|
289
|
-
var arr = [];
|
|
290
|
-
var _g = 0;
|
|
291
|
-
while (_g < list.length) {
|
|
292
|
-
var result = list[_g];
|
|
293
|
-
++_g;
|
|
294
|
-
var path = result.serveId;
|
|
295
|
-
var serveId = null;
|
|
296
|
-
if (route.filter == null || route.filter.match(path)) {
|
|
297
|
-
serveId = path;
|
|
298
|
-
if (route.extractDirs != null) {
|
|
299
|
-
var dir = path;
|
|
300
|
-
while (true) {
|
|
301
|
-
dir = dir.substring(0, dir.lastIndexOf("/"));
|
|
302
|
-
if (route.extractDirs.match(dir + "/")) {
|
|
303
|
-
var s = dir + "/";
|
|
304
|
-
var str = (s.length > 1 && HxOverrides.cca(s, 0) == 47) ? s.substring(1) : s;
|
|
305
|
-
if (str.length > 0) {
|
|
306
|
-
str = Path.posix.normalize(str);
|
|
307
|
-
str = StringTools.replace(str, "\\", "/");
|
|
308
|
-
};
|
|
309
|
-
s = str;
|
|
310
|
-
serveId = SourceId.relativeTo(path, (HxOverrides.cca(s, 0) == 47) ? s : "/" + s);
|
|
311
|
-
break;
|
|
312
|
-
};
|
|
313
|
-
if (!(dir.length > 0)) {
|
|
314
|
-
break;
|
|
315
|
-
};
|
|
316
|
-
};
|
|
317
|
-
};
|
|
318
|
-
};
|
|
319
|
-
var serveId1 = serveId;
|
|
320
|
-
if (serveId1 != null) {
|
|
321
|
-
result.serveId = serveId1;
|
|
322
|
-
arr.push(result);
|
|
323
|
-
};
|
|
324
|
-
};
|
|
325
|
-
return arr;
|
|
326
|
-
});
|
|
327
|
-
} else {
|
|
328
|
-
throw new Error("Router source must be a Stone or a Router.");
|
|
329
|
-
};
|
|
267
|
+
static get __name__() {
|
|
268
|
+
return "whet.route.Router"
|
|
330
269
|
}
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
if (!(dir.length > 0)) {
|
|
351
|
-
break;
|
|
352
|
-
};
|
|
353
|
-
};
|
|
270
|
+
get __class__() {
|
|
271
|
+
return Router
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
export const Filters = Register.global("$hxClasses")["whet.route._Router.Filters"] =
|
|
277
|
+
class Filters {
|
|
278
|
+
static isPathPossible(this1, f) {
|
|
279
|
+
if (f.filter.options.matchBase) {
|
|
280
|
+
return true;
|
|
281
|
+
};
|
|
282
|
+
var _g = 0;
|
|
283
|
+
var _g1 = f.filter.set;
|
|
284
|
+
while (_g < _g1.length) if (f.filter.matchOne(f.pathSoFar, _g1[_g++], true)) {
|
|
285
|
+
if (f.filter.options.flipNegate) {
|
|
286
|
+
return true;
|
|
287
|
+
} else {
|
|
288
|
+
return true != f.filter.negate;
|
|
354
289
|
};
|
|
355
290
|
};
|
|
356
|
-
|
|
291
|
+
if (f.filter.options.flipNegate) {
|
|
292
|
+
return false;
|
|
293
|
+
} else {
|
|
294
|
+
return false != f.filter.negate;
|
|
295
|
+
};
|
|
357
296
|
}
|
|
358
297
|
static get __name__() {
|
|
359
|
-
return "whet.route.
|
|
298
|
+
return "whet.route._Router.Filters_Impl_"
|
|
360
299
|
}
|
|
361
300
|
get __class__() {
|
|
362
|
-
return
|
|
301
|
+
return Filters
|
|
363
302
|
}
|
|
364
303
|
}
|
|
365
304
|
|
|
@@ -9,7 +9,13 @@ import {Project} from "../Project"
|
|
|
9
9
|
export declare class Files extends Stone<FilesConfig> {
|
|
10
10
|
constructor(config: FilesConfig)
|
|
11
11
|
protected initConfig(): void
|
|
12
|
+
list(): Promise<string[]>
|
|
12
13
|
protected generate(hash: SourceHash): Promise<SourceData[]>
|
|
14
|
+
protected walk<T>(onFile: ((arg0: string) => T), onDirFile: ((arg0: string, arg1: string) => T)): Promise<T[]>
|
|
15
|
+
protected fromCwd(file: string, dir: string): {
|
|
16
|
+
id: string,
|
|
17
|
+
pathId: string
|
|
18
|
+
}
|
|
13
19
|
}
|
|
14
20
|
|
|
15
21
|
export type FilesConfig = {
|
package/bin/whet/stones/Files.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import {MaybeArray_Fields_} from "../magic/MaybeArray.js"
|
|
2
2
|
import {Utils} from "../Utils.js"
|
|
3
3
|
import {Stone} from "../Stone.js"
|
|
4
|
-
import {
|
|
4
|
+
import {IdUtils, RootDir} from "../SourceId.js"
|
|
5
5
|
import {SourceData} from "../Source.js"
|
|
6
|
-
import * as Path from "path"
|
|
7
6
|
import {Register} from "../../genes/Register.js"
|
|
8
|
-
import {StringTools} from "../../StringTools.js"
|
|
9
|
-
import {HxOverrides} from "../../HxOverrides.js"
|
|
10
7
|
|
|
11
8
|
const $global = Register.$global
|
|
12
9
|
|
|
@@ -18,65 +15,111 @@ class Files extends Register.inherits(Stone) {
|
|
|
18
15
|
initConfig() {
|
|
19
16
|
this.config.recursive = true;
|
|
20
17
|
}
|
|
21
|
-
|
|
18
|
+
list() {
|
|
22
19
|
var _gthis = this;
|
|
23
|
-
var
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
var pathString = _g2[_g1];
|
|
28
|
-
++_g1;
|
|
29
|
-
var s = pathString;
|
|
30
|
-
var str = (pathString.length > 1 && HxOverrides.cca(pathString, 0) == 47) ? pathString.substring(1) : pathString;
|
|
31
|
-
if (str.length > 0) {
|
|
32
|
-
str = Path.posix.normalize(str);
|
|
33
|
-
str = StringTools.replace(str, "\\", "/");
|
|
20
|
+
var onDirFile = function (dir, dirFile) {
|
|
21
|
+
var pathId = IdUtils.fromCwdPath(dirFile, RootDir.fromProject(_gthis.project));
|
|
22
|
+
if (!(dir.length == 0 || dir.charCodeAt(dir.length - 1) == 47)) {
|
|
23
|
+
throw new Error("\"" + dir + "\" is not a directory.");
|
|
34
24
|
};
|
|
35
|
-
|
|
36
|
-
var
|
|
37
|
-
|
|
38
|
-
|
|
25
|
+
var inlobj_id;
|
|
26
|
+
var dir1 = pathId.substring(0, pathId.lastIndexOf("/") + 1);
|
|
27
|
+
inlobj_id = ((dir1.length == 0) ? "./" : dir1).indexOf(dir) == 0;
|
|
28
|
+
return (inlobj_id) ? pathId.substring(dir.length) : null;
|
|
29
|
+
};
|
|
30
|
+
var files = [];
|
|
31
|
+
var dirs = [];
|
|
32
|
+
var _g = 0;
|
|
33
|
+
var _g1 = MaybeArray_Fields_.makeArray(this.config.paths);
|
|
34
|
+
while (_g < _g1.length) {
|
|
35
|
+
var path = [_g1[_g]];
|
|
36
|
+
++_g;
|
|
37
|
+
if (path[0].length == 0 || path[0].charCodeAt(path[0].length - 1) == 47) {
|
|
38
|
+
dirs.push(Utils.listDirectoryFiles(this.cwdPath(path[0]), this.config.recursive).then((function (path) {
|
|
39
39
|
return function (arr) {
|
|
40
|
-
var _g =
|
|
41
|
-
|
|
42
|
-
while (_g1 < arr.length) {
|
|
43
|
-
var file = arr[_g1];
|
|
44
|
-
++_g1;
|
|
45
|
-
var s = SourceId_Fields_.fromCwdPath(file, RootDir.fromProject(_gthis.project));
|
|
46
|
-
var str = (s.length > 1 && HxOverrides.cca(s, 0) == 47) ? s.substring(1) : s;
|
|
47
|
-
if (str.length > 0) {
|
|
48
|
-
str = Path.posix.normalize(str);
|
|
49
|
-
str = StringTools.replace(str, "\\", "/");
|
|
50
|
-
};
|
|
51
|
-
s = str;
|
|
52
|
-
var pathId = (HxOverrides.cca(s, 0) == 47) ? s : "/" + s;
|
|
53
|
-
_g.push(SourceData.fromFile(SourceId.relativeTo(pathId, path[0]), file, pathId));
|
|
54
|
-
};
|
|
55
|
-
return _g;
|
|
56
|
-
};
|
|
57
|
-
})(path)).then((function () {
|
|
58
|
-
return function (f) {
|
|
59
|
-
return Promise.all(f);
|
|
40
|
+
var _g = 0;
|
|
41
|
+
while (_g < arr.length) files.push(onDirFile(path[0], arr[_g++]));
|
|
60
42
|
};
|
|
61
|
-
})()));
|
|
43
|
+
})(path)));
|
|
62
44
|
} else {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
45
|
+
var id = path[0];
|
|
46
|
+
files.push(id.substring(id.lastIndexOf("/") + 1));
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
return Promise.all(dirs).then(function (_) {
|
|
50
|
+
return files;
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
generate(hash) {
|
|
54
|
+
var _gthis = this;
|
|
55
|
+
var onDirFile = function (dir, dirFile) {
|
|
56
|
+
var pathId = IdUtils.fromCwdPath(dirFile, RootDir.fromProject(_gthis.project));
|
|
57
|
+
if (!(dir.length == 0 || dir.charCodeAt(dir.length - 1) == 47)) {
|
|
58
|
+
throw new Error("\"" + dir + "\" is not a directory.");
|
|
59
|
+
};
|
|
60
|
+
var p_id;
|
|
61
|
+
var dir1 = pathId.substring(0, pathId.lastIndexOf("/") + 1);
|
|
62
|
+
p_id = ((dir1.length == 0) ? "./" : dir1).indexOf(dir) == 0;
|
|
63
|
+
return SourceData.fromFile((p_id) ? pathId.substring(dir.length) : null, dirFile, pathId);
|
|
64
|
+
};
|
|
65
|
+
var files = [];
|
|
66
|
+
var dirs = [];
|
|
67
|
+
var _g = 0;
|
|
68
|
+
var _g1 = MaybeArray_Fields_.makeArray(this.config.paths);
|
|
69
|
+
while (_g < _g1.length) {
|
|
70
|
+
var path = [_g1[_g]];
|
|
71
|
+
++_g;
|
|
72
|
+
if (path[0].length == 0 || path[0].charCodeAt(path[0].length - 1) == 47) {
|
|
73
|
+
dirs.push(Utils.listDirectoryFiles(this.cwdPath(path[0]), this.config.recursive).then((function (path) {
|
|
74
|
+
return function (arr) {
|
|
75
|
+
var _g = 0;
|
|
76
|
+
while (_g < arr.length) files.push(onDirFile(path[0], arr[_g++]));
|
|
66
77
|
};
|
|
67
|
-
})()));
|
|
78
|
+
})(path)));
|
|
79
|
+
} else {
|
|
80
|
+
var id = path[0];
|
|
81
|
+
files.push(SourceData.fromFile(id.substring(id.lastIndexOf("/") + 1), _gthis.cwdPath(path[0]), path[0]));
|
|
68
82
|
};
|
|
69
83
|
};
|
|
70
|
-
return Promise.all(
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
84
|
+
return Promise.all(dirs).then(function (_) {
|
|
85
|
+
return files;
|
|
86
|
+
}).then(function (fileProms) {
|
|
87
|
+
return Promise.all(fileProms);
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
walk(onFile, onDirFile) {
|
|
91
|
+
var files = [];
|
|
92
|
+
var dirs = [];
|
|
93
|
+
var _g = 0;
|
|
94
|
+
var _g1 = MaybeArray_Fields_.makeArray(this.config.paths);
|
|
95
|
+
while (_g < _g1.length) {
|
|
96
|
+
var path = [_g1[_g]];
|
|
97
|
+
++_g;
|
|
98
|
+
if (path[0].length == 0 || path[0].charCodeAt(path[0].length - 1) == 47) {
|
|
99
|
+
dirs.push(Utils.listDirectoryFiles(this.cwdPath(path[0]), this.config.recursive).then((function (path) {
|
|
100
|
+
return function (arr) {
|
|
101
|
+
var _g = 0;
|
|
102
|
+
while (_g < arr.length) files.push(onDirFile(path[0], arr[_g++]));
|
|
103
|
+
};
|
|
104
|
+
})(path)));
|
|
105
|
+
} else {
|
|
106
|
+
files.push(onFile(path[0]));
|
|
76
107
|
};
|
|
77
|
-
|
|
108
|
+
};
|
|
109
|
+
return Promise.all(dirs).then(function (_) {
|
|
110
|
+
return files;
|
|
78
111
|
});
|
|
79
112
|
}
|
|
113
|
+
fromCwd(file, dir) {
|
|
114
|
+
var pathId = IdUtils.fromCwdPath(file, RootDir.fromProject(this.project));
|
|
115
|
+
if (!(dir.length == 0 || dir.charCodeAt(dir.length - 1) == 47)) {
|
|
116
|
+
throw new Error("\"" + dir + "\" is not a directory.");
|
|
117
|
+
};
|
|
118
|
+
var tmp;
|
|
119
|
+
var dir1 = pathId.substring(0, pathId.lastIndexOf("/") + 1);
|
|
120
|
+
tmp = ((dir1.length == 0) ? "./" : dir1).indexOf(dir) == 0;
|
|
121
|
+
return {"pathId": pathId, "id": (tmp) ? pathId.substring(dir.length) : null};
|
|
122
|
+
}
|
|
80
123
|
static get __name__() {
|
|
81
124
|
return "whet.stones.Files"
|
|
82
125
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import {Router} from "../route/Router"
|
|
1
2
|
import {StoneIdType} from "../magic/StoneId"
|
|
2
|
-
import {RoutePathType} from "../magic/RoutePathType"
|
|
3
3
|
import {MaybeArray} from "../magic/MaybeArray"
|
|
4
4
|
import {CacheStrategy} from "../cache/Cache"
|
|
5
5
|
import {Stone, AnyStone} from "../Stone"
|
|
@@ -39,7 +39,7 @@ export type JsonStoneConfig = {
|
|
|
39
39
|
Defaults to the Stone's class name.
|
|
40
40
|
*/
|
|
41
41
|
id?: null | StoneIdType,
|
|
42
|
-
mergeFiles?: null |
|
|
42
|
+
mergeFiles?: null | Router,
|
|
43
43
|
name?: null | string,
|
|
44
44
|
/**
|
|
45
45
|
Defaults to the last instanced project.
|