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.
@@ -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
- if (pattern == null) {
32
- pattern = "**";
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 result = [];
38
- var _g = [];
39
- var _g1 = 0;
40
- var _g2 = _gthis.routes;
41
- while (_g1 < _g2.length) {
42
- var route = [_g2[_g1]];
43
- ++_g1;
44
- var route1 = [route[0]];
45
- var tmp;
46
- if (((route1[0].source) instanceof Stone)) {
47
- var stone = [route1[0].source];
48
- tmp = stone[0].list().then((function (stone, route) {
49
- return function (list) {
50
- var arr = [];
51
- var _g = 0;
52
- while (_g < list.length) {
53
- var path = list[_g];
54
- ++_g;
55
- var serveId = null;
56
- if (route[0].filter == null || route[0].filter.match(path)) {
57
- serveId = path;
58
- if (route[0].extractDirs != null) {
59
- var dir = path;
60
- while (true) {
61
- dir = dir.substring(0, dir.lastIndexOf("/"));
62
- if (route[0].extractDirs.match(dir + "/")) {
63
- var s = dir + "/";
64
- var str = (s.length > 1 && HxOverrides.cca(s, 0) == 47) ? s.substring(1) : s;
65
- if (str.length > 0) {
66
- str = Path.posix.normalize(str);
67
- str = StringTools.replace(str, "\\", "/");
68
- };
69
- s = str;
70
- serveId = SourceId.relativeTo(path, (HxOverrides.cca(s, 0) == 47) ? s : "/" + s);
71
- break;
72
- };
73
- if (!(dir.length > 0)) {
74
- break;
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
- var serveId1 = serveId;
80
- if (serveId1 != null) {
81
- arr.push(new RouteResult(serveId1, path, stone[0]));
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
- })(stone, route1));
87
- } else if (((route1[0].source) instanceof Router)) {
88
- tmp = route1[0].source.get().then((function (route) {
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 result = list[_g];
137
+ var sourceId = list[_g];
94
138
  ++_g;
95
- var path = result.serveId;
96
- var serveId = null;
97
- if (route[0].filter == null || route[0].filter.match(path)) {
98
- serveId = path;
99
- if (route[0].extractDirs != null) {
100
- var dir = path;
101
- while (true) {
102
- dir = dir.substring(0, dir.lastIndexOf("/"));
103
- if (route[0].extractDirs.match(dir + "/")) {
104
- var s = dir + "/";
105
- var str = (s.length > 1 && HxOverrides.cca(s, 0) == 47) ? s.substring(1) : s;
106
- if (str.length > 0) {
107
- str = Path.posix.normalize(str);
108
- str = StringTools.replace(str, "\\", "/");
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
- var serveId1 = serveId;
121
- if (serveId1 != null) {
122
- result.serveId = serveId1;
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
- })(route1));
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
- _g.push(tmp.then((function (route) {
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(_g).then(function (_) {
149
- res(result);
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 saveInto1 = saveInto;
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
- allFromRoute(route) {
248
- if (((route.source) instanceof Stone)) {
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
- getServeId(path, route) {
332
- var serveId = null;
333
- if (route.filter == null || route.filter.match(path)) {
334
- serveId = path;
335
- if (route.extractDirs != null) {
336
- var dir = path;
337
- while (true) {
338
- dir = dir.substring(0, dir.lastIndexOf("/"));
339
- if (route.extractDirs.match(dir + "/")) {
340
- var s = dir + "/";
341
- var str = (s.length > 1 && HxOverrides.cca(s, 0) == 47) ? s.substring(1) : s;
342
- if (str.length > 0) {
343
- str = Path.posix.normalize(str);
344
- str = StringTools.replace(str, "\\", "/");
345
- };
346
- s = str;
347
- serveId = SourceId.relativeTo(path, (HxOverrides.cca(s, 0) == 47) ? s : "/" + s);
348
- break;
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
- return serveId;
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.Router"
298
+ return "whet.route._Router.Filters_Impl_"
360
299
  }
361
300
  get __class__() {
362
- return Router
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 = {
@@ -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 {SourceId_Fields_, RootDir, SourceId} from "../SourceId.js"
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
- generate(hash) {
18
+ list() {
22
19
  var _gthis = this;
23
- var _g = [];
24
- var _g1 = 0;
25
- var _g2 = MaybeArray_Fields_.makeArray(this.config.paths);
26
- while (_g1 < _g2.length) {
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
- s = str;
36
- var path = [(HxOverrides.cca(s, 0) == 47) ? s : "/" + s];
37
- if (HxOverrides.cca(path[0], path[0].length - 1) == 47) {
38
- _g.push(Utils.listDirectoryFiles(this.cwdPath(pathString), this.config.recursive).then((function (path) {
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
- var _g1 = 0;
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
- _g.push(SourceData.fromFile(path[0].substring(path[0].lastIndexOf("/")), this.cwdPath(path[0]), path[0]).then((function () {
64
- return function (src) {
65
- return [src];
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(_g).then(function (allSources) {
71
- var _g = [];
72
- var _g_current = 0;
73
- while (_g_current < allSources.length) {
74
- var x = Register.iter(allSources[_g_current++]);
75
- while (x.hasNext()) _g.push(x.next());
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
- return _g;
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 | RoutePathType,
42
+ mergeFiles?: null | Router,
43
43
  name?: null | string,
44
44
  /**
45
45
  Defaults to the last instanced project.