whet 0.0.26 → 0.0.27
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/bin/HxOverrides.js +6 -6
- package/bin/Lambda.js +10 -10
- package/bin/Reflect.js +2 -2
- package/bin/Std.js +1 -1
- package/bin/genes/Register.d.ts +11 -1
- package/bin/genes/Register.js +69 -40
- package/bin/genes/util/EsMap.js +5 -5
- package/bin/haxe/Exception.js +1 -1
- package/bin/haxe/crypto/Crc32.js +5 -5
- package/bin/haxe/ds/List.js +1 -1
- package/bin/haxe/io/Bytes.js +8 -8
- package/bin/haxe/io/BytesBuffer.js +6 -6
- package/bin/haxe/io/Output.js +7 -7
- package/bin/haxe/zip/Compress.js +2 -2
- package/bin/haxe/zip/Tools.js +1 -1
- package/bin/haxe/zip/Writer.js +18 -18
- package/bin/js/Boot.js +25 -25
- package/bin/js/node/buffer/Buffer.js +1 -1
- package/bin/whet/Log.js +7 -7
- package/bin/whet/Project.js +6 -6
- package/bin/whet/Source.js +7 -7
- package/bin/whet/SourceHash.js +49 -55
- package/bin/whet/SourceId.js +12 -12
- package/bin/whet/Stone.js +40 -40
- package/bin/whet/Utils.js +12 -12
- package/bin/whet/Whet.js +23 -23
- package/bin/whet/cache/BaseCache.js +21 -21
- package/bin/whet/cache/CacheManager.js +13 -13
- package/bin/whet/cache/FileCache.js +97 -101
- package/bin/whet/cache/MemoryCache.js +12 -12
- package/bin/whet/magic/RoutePathType.js +15 -15
- package/bin/whet/magic/StoneId.js +2 -2
- package/bin/whet/route/RouteResult.js +1 -1
- package/bin/whet/route/Router.js +128 -132
- package/bin/whet/stones/Files.js +47 -53
- package/bin/whet/stones/JsonStone.js +16 -16
- package/bin/whet/stones/RemoteFile.js +4 -4
- package/bin/whet/stones/Server.js +17 -17
- package/bin/whet/stones/Zip.js +16 -18
- package/bin/whet/stones/haxe/HaxeBuild.d.ts +1 -0
- package/bin/whet/stones/haxe/HaxeBuild.js +25 -23
- package/bin/whet/stones/haxe/Hxml.js +71 -70
- package/package.json +1 -1
- package/bin/haxe/Log.d.ts +0 -33
- package/bin/haxe/Log.js +0 -61
- package/bin/js/lib/ArrayBuffer.d.ts +0 -4
- package/bin/js/lib/ArrayBuffer.js +0 -24
package/bin/whet/Whet.js
CHANGED
|
@@ -12,20 +12,20 @@ const $global = Register.$global
|
|
|
12
12
|
export const Whet_Fields_ = Register.global("$hxClasses")["whet._Whet.Whet_Fields_"] =
|
|
13
13
|
class Whet_Fields_ {
|
|
14
14
|
static main() {
|
|
15
|
-
Whet_Fields_.program.enablePositionalOptions().passThroughOptions().description("Project tooling.").usage("[options] [command] [+ [command]...]").version("0.0.
|
|
15
|
+
Whet_Fields_.program.enablePositionalOptions().passThroughOptions().description("Project tooling.").usage("[options] [command] [+ [command]...]").version("0.0.27", "-v, --version").allowUnknownOption(true).showSuggestionAfterError(true).option("-p, --project <file>", "project to run", "Project.mjs").option("-l, --log-level <level>", "log level, a string/number", "info").option("--no-pretty", "disable pretty logging").exitOverride();
|
|
16
16
|
try {
|
|
17
17
|
Whet_Fields_.program.parse();
|
|
18
18
|
}catch (_g) {
|
|
19
|
-
|
|
19
|
+
let _g1 = Exception.caught(_g);
|
|
20
20
|
if (((_g1.get_native()) instanceof CommanderError) && _g1.get_native().code == "commander.version") {
|
|
21
21
|
process.exit();
|
|
22
22
|
} else {
|
|
23
23
|
throw Exception.thrown(_g1);
|
|
24
24
|
};
|
|
25
25
|
};
|
|
26
|
-
|
|
26
|
+
let options = Whet_Fields_.program.opts();
|
|
27
27
|
if (options.logLevel != null) {
|
|
28
|
-
|
|
28
|
+
let n = Std.parseInt(options.logLevel);
|
|
29
29
|
if (n == null) {
|
|
30
30
|
n = LogLevel.fromString(options.logLevel);
|
|
31
31
|
};
|
|
@@ -45,9 +45,9 @@ class Whet_Fields_ {
|
|
|
45
45
|
Whet_Fields_.initProjects();
|
|
46
46
|
} else {
|
|
47
47
|
Log.log(30, ...["Loading project.", {"file": options.project}]);
|
|
48
|
-
|
|
48
|
+
let path = Url.pathToFileURL(options.project).href;
|
|
49
49
|
Log.log(20, ...["Resolved project path.", {"path": path}]);
|
|
50
|
-
|
|
50
|
+
let projectProm = import(path);
|
|
51
51
|
projectProm.then(function (module) {
|
|
52
52
|
Log.log(10, ...["Project module imported."]);
|
|
53
53
|
Whet_Fields_.initProjects();
|
|
@@ -65,29 +65,29 @@ class Whet_Fields_ {
|
|
|
65
65
|
}
|
|
66
66
|
static initProjects() {
|
|
67
67
|
Log.log(10, ...["Parsing remaining arguments.", {"args": Whet_Fields_.program.args}]);
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
let _g = 0;
|
|
69
|
+
let _g1 = Project.projects;
|
|
70
70
|
while (_g < _g1.length) {
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
let _g2 = 0;
|
|
72
|
+
let _g3 = _g1[_g++].options;
|
|
73
73
|
while (_g2 < _g3.length) Whet_Fields_.program.addOption(_g3[_g2++]);
|
|
74
74
|
};
|
|
75
75
|
Whet_Fields_.program.allowUnknownOption(false);
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
let commands = Whet_Fields_.getCommands(Whet_Fields_.program.args);
|
|
77
|
+
let initProm;
|
|
78
78
|
if (commands.length > 0) {
|
|
79
|
-
|
|
79
|
+
let res = Whet_Fields_.program.parseOptions(commands[0]);
|
|
80
80
|
commands[0] = res.operands.concat(res.unknown);
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
81
|
+
let promises = [];
|
|
82
|
+
let _g = 0;
|
|
83
|
+
let _g1 = Project.projects;
|
|
84
84
|
while (_g < _g1.length) {
|
|
85
|
-
|
|
85
|
+
let p = _g1[_g];
|
|
86
86
|
++_g;
|
|
87
87
|
if (p.onInit != null) {
|
|
88
88
|
Log.log(10, ...["Initializing project.", {"project": p.id}]);
|
|
89
89
|
p.config = Whet_Fields_.program.opts();
|
|
90
|
-
|
|
90
|
+
let prom = p.onInit(p.config);
|
|
91
91
|
if (prom != null) {
|
|
92
92
|
promises.push(prom);
|
|
93
93
|
};
|
|
@@ -97,12 +97,12 @@ class Whet_Fields_ {
|
|
|
97
97
|
} else {
|
|
98
98
|
initProm = Promise.resolve();
|
|
99
99
|
};
|
|
100
|
-
|
|
100
|
+
let nextCommand = null;
|
|
101
101
|
nextCommand = function () {
|
|
102
102
|
if (commands.length == 0) {
|
|
103
103
|
return;
|
|
104
104
|
};
|
|
105
|
-
|
|
105
|
+
let c = commands.shift();
|
|
106
106
|
Log.log(10, ...["Executing command.", {"commandArgs": c}]);
|
|
107
107
|
Whet_Fields_.program.parseAsync(c, {"from": "user"}).then(function (_) {
|
|
108
108
|
nextCommand();
|
|
@@ -122,9 +122,9 @@ class Whet_Fields_ {
|
|
|
122
122
|
return Whet_Fields_.program.parseAsync(cmd, {"from": "user"});
|
|
123
123
|
}
|
|
124
124
|
static getCommands(args) {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
125
|
+
let commands = [];
|
|
126
|
+
let from = 0;
|
|
127
|
+
let to;
|
|
128
128
|
do {
|
|
129
129
|
to = args.indexOf("+", from);
|
|
130
130
|
commands.push((to < 0) ? args.slice(from) : args.slice(from, to));
|
|
@@ -20,7 +20,7 @@ class BaseCache extends Register.inherits() {
|
|
|
20
20
|
this.cache = cache;
|
|
21
21
|
}
|
|
22
22
|
get(stone, durability, check) {
|
|
23
|
-
|
|
23
|
+
let _gthis = this;
|
|
24
24
|
return stone.acquire(function () {
|
|
25
25
|
return stone.finalMaybeHash().then(function (hash) {
|
|
26
26
|
if (hash == null) {
|
|
@@ -35,10 +35,10 @@ class BaseCache extends Register.inherits() {
|
|
|
35
35
|
return Promise.resolve({"generatedSource": null, "hash": hash});
|
|
36
36
|
};
|
|
37
37
|
}).then(function (data) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
let generatedSource = data.generatedSource;
|
|
39
|
+
let hash = data.hash;
|
|
40
|
+
let values = _gthis.cache.get(_gthis.key(stone));
|
|
41
|
+
let ageCount = function (val) {
|
|
42
42
|
return Lambda.count(values, function (v) {
|
|
43
43
|
if (v != val) {
|
|
44
44
|
return v.ctime > val.ctime;
|
|
@@ -47,7 +47,7 @@ class BaseCache extends Register.inherits() {
|
|
|
47
47
|
};
|
|
48
48
|
});
|
|
49
49
|
};
|
|
50
|
-
|
|
50
|
+
let value = null;
|
|
51
51
|
if (values != null && values.length > 0) {
|
|
52
52
|
value = Lambda.find(values, function (v) {
|
|
53
53
|
return SourceHash.equals(v.hash, hash);
|
|
@@ -62,7 +62,7 @@ class BaseCache extends Register.inherits() {
|
|
|
62
62
|
_gthis.setRecentUseOrder(values, value);
|
|
63
63
|
};
|
|
64
64
|
};
|
|
65
|
-
|
|
65
|
+
let srcPromise = ((value != null) ? _gthis.source(stone, value) : Promise.resolve(null)).then(function (src) {
|
|
66
66
|
if (src == null) {
|
|
67
67
|
Log.log(10, ...["Not cached.", {"stone": stone, "cache": _gthis}]);
|
|
68
68
|
return ((value != null) ? _gthis.remove(stone, value) : Promise.resolve(null)).then(function (_) {
|
|
@@ -96,38 +96,38 @@ class BaseCache extends Register.inherits() {
|
|
|
96
96
|
});
|
|
97
97
|
}
|
|
98
98
|
set(source) {
|
|
99
|
-
var _gthis = this;
|
|
100
99
|
Log.log(10, ...["Setting source in cache.", {"source": source}]);
|
|
101
|
-
|
|
100
|
+
let k = this.key(source.origin);
|
|
102
101
|
if (!this.cache.exists(k)) {
|
|
103
102
|
this.cache.set(k, []);
|
|
104
103
|
};
|
|
104
|
+
let _gthis = this;
|
|
105
105
|
return this.value(source).then(function (val) {
|
|
106
106
|
_gthis.cache.get(k).unshift(val);
|
|
107
107
|
return val;
|
|
108
108
|
});
|
|
109
109
|
}
|
|
110
110
|
getUniqueDir(stone, baseDir, hash) {
|
|
111
|
-
var _gthis = this;
|
|
112
111
|
if (hash != null) {
|
|
113
|
-
|
|
112
|
+
let values = this.cache.get(this.key(stone));
|
|
114
113
|
if (values != null) {
|
|
115
|
-
|
|
114
|
+
let existingVal = Lambda.find(values, function (v) {
|
|
116
115
|
return SourceHash.equals(v.hash, hash);
|
|
117
116
|
});
|
|
118
117
|
if (existingVal != null) {
|
|
119
|
-
|
|
118
|
+
let existingPath = this.getDirFor(existingVal);
|
|
120
119
|
if (existingPath != null) {
|
|
121
120
|
return existingPath;
|
|
122
121
|
};
|
|
123
122
|
};
|
|
124
123
|
};
|
|
125
124
|
};
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
125
|
+
let filenames = this.getExistingDirs(stone);
|
|
126
|
+
let _gthis = this;
|
|
127
|
+
let maxNum = (filenames != null) ? Lambda.fold(filenames, function (fn, num) {
|
|
128
|
+
let dir = fn.substring(0, fn.lastIndexOf("/") + 1);
|
|
129
|
+
let parts = Path.posix.join(".", _gthis.rootDir, ".", (dir.length == 0) ? "./" : dir).split("/");
|
|
130
|
+
let name = (parts.length > 1) ? parts[parts.length - 2] : "";
|
|
131
131
|
return Math.max(num, (name.charAt(0) == "v") ? Std.parseInt(HxOverrides.substr(name, 1, null)) : 0);
|
|
132
132
|
}, 0) : 0;
|
|
133
133
|
++maxNum;
|
|
@@ -141,13 +141,13 @@ class BaseCache extends Register.inherits() {
|
|
|
141
141
|
if (values == null || values.length == 0) {
|
|
142
142
|
return;
|
|
143
143
|
};
|
|
144
|
-
|
|
144
|
+
let i = values.length;
|
|
145
145
|
while (--i > 0) if (!this.shouldKeep(stone, values[i], durability, useIndex, ageIndex)) {
|
|
146
146
|
this.remove(stone, values[i]);
|
|
147
147
|
};
|
|
148
148
|
}
|
|
149
149
|
shouldKeep(stone, val, durability, useIndex, ageIndex) {
|
|
150
|
-
|
|
150
|
+
let _gthis = this;
|
|
151
151
|
switch (durability._hx_index) {
|
|
152
152
|
case 0:
|
|
153
153
|
return true;
|
|
@@ -191,7 +191,7 @@ class BaseCache extends Register.inherits() {
|
|
|
191
191
|
return Promise.resolve(null);
|
|
192
192
|
}
|
|
193
193
|
toString() {
|
|
194
|
-
|
|
194
|
+
let c = Boot.getClass(this);
|
|
195
195
|
return c.__name__;
|
|
196
196
|
}
|
|
197
197
|
static get __name__() {
|
|
@@ -20,9 +20,9 @@ class CacheManager extends Register.inherits() {
|
|
|
20
20
|
this.memCache = new MemoryCache(RootDir.fromProject(project));
|
|
21
21
|
}
|
|
22
22
|
getSource(stone) {
|
|
23
|
-
|
|
23
|
+
let e = stone.cacheStrategy;
|
|
24
24
|
Log.log(10, ...["Determining cache status.", {"stone": stone, "strategy": Register.global("$hxEnums")[e.__enum__].__constructs__[e._hx_index]._hx_name}]);
|
|
25
|
-
|
|
25
|
+
let _g = stone.cacheStrategy;
|
|
26
26
|
switch (_g._hx_index) {
|
|
27
27
|
case 0:
|
|
28
28
|
return stone.acquire(function () {
|
|
@@ -32,16 +32,16 @@ class CacheManager extends Register.inherits() {
|
|
|
32
32
|
});
|
|
33
33
|
break
|
|
34
34
|
case 1:
|
|
35
|
-
|
|
35
|
+
let _g1 = _g.check;
|
|
36
36
|
return this.memCache.get(stone, _g.durability, (_g1 != null) ? _g1 : DurabilityCheck.AllOnUse);
|
|
37
37
|
break
|
|
38
38
|
case 2:
|
|
39
|
-
|
|
40
|
-
return this.fileCache.get(stone, _g.durability, (
|
|
39
|
+
let _g2 = _g.check;
|
|
40
|
+
return this.fileCache.get(stone, _g.durability, (_g2 != null) ? _g2 : DurabilityCheck.AllOnUse);
|
|
41
41
|
break
|
|
42
42
|
case 3:
|
|
43
|
-
|
|
44
|
-
return this.fileCache.get(stone, _g.durability, (
|
|
43
|
+
let _g3 = _g.check;
|
|
44
|
+
return this.fileCache.get(stone, _g.durability, (_g3 != null) ? _g3 : DurabilityCheck.AllOnUse);
|
|
45
45
|
break
|
|
46
46
|
|
|
47
47
|
};
|
|
@@ -79,8 +79,8 @@ class CacheManager extends Register.inherits() {
|
|
|
79
79
|
* The path is not reserved. Caching depends on stone's `cacheStrategy` and success of source generation.
|
|
80
80
|
*/
|
|
81
81
|
getDir(stone, hash) {
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
let baseDir = stone.id + "/";
|
|
83
|
+
let tmp;
|
|
84
84
|
switch (stone.cacheStrategy._hx_index) {
|
|
85
85
|
case 0:
|
|
86
86
|
tmp = true;
|
|
@@ -102,8 +102,8 @@ class CacheManager extends Register.inherits() {
|
|
|
102
102
|
throw new Error("\"" + ".whet/" + "\" is not a directory.");
|
|
103
103
|
};
|
|
104
104
|
baseDir = Path.posix.join(".whet/", baseDir);
|
|
105
|
-
|
|
106
|
-
|
|
105
|
+
let id;
|
|
106
|
+
let _g = stone.cacheStrategy;
|
|
107
107
|
switch (_g._hx_index) {
|
|
108
108
|
case 0:
|
|
109
109
|
id = baseDir;
|
|
@@ -115,8 +115,8 @@ class CacheManager extends Register.inherits() {
|
|
|
115
115
|
id = this.fileCache.getUniqueDir(stone, baseDir, hash);
|
|
116
116
|
break
|
|
117
117
|
case 3:
|
|
118
|
-
|
|
119
|
-
|
|
118
|
+
let _g1 = _g.path;
|
|
119
|
+
let dir = _g1.substring(0, _g1.lastIndexOf("/") + 1);
|
|
120
120
|
id = (dir.length == 0) ? "./" : dir;
|
|
121
121
|
break
|
|
122
122
|
|
|
@@ -20,26 +20,26 @@ class FileCache extends Register.inherits(BaseCache) {
|
|
|
20
20
|
super.new(rootDir, new StringMap());
|
|
21
21
|
this.dbFile = Path.posix.join(".", rootDir, ".", ".whet/cache.json");
|
|
22
22
|
try {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
let db = JSON.parse(Fs.readFileSync(this.dbFile, {"encoding": "utf-8"}));
|
|
24
|
+
let _g_keys = Reflect__1.fields(db);
|
|
25
|
+
let _g_index = 0;
|
|
26
26
|
while (_g_index < _g_keys.length) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
let key = _g_keys[_g_index++];
|
|
28
|
+
let _g_value = db[key];
|
|
29
|
+
let this1 = this.cache;
|
|
30
|
+
let _g = [];
|
|
31
|
+
let _g1 = 0;
|
|
32
32
|
while (_g1 < _g_value.length) {
|
|
33
|
-
|
|
33
|
+
let val = _g_value[_g1];
|
|
34
34
|
++_g1;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
let tmp = SourceHash.fromHex(val.hash);
|
|
36
|
+
let val1 = val.ctime;
|
|
37
|
+
let val2 = val.baseDir;
|
|
38
|
+
let _g2 = [];
|
|
39
|
+
let _g3 = 0;
|
|
40
|
+
let _g4 = val.files;
|
|
41
41
|
while (_g3 < _g4.length) {
|
|
42
|
-
|
|
42
|
+
let file = _g4[_g3];
|
|
43
43
|
++_g3;
|
|
44
44
|
_g2.push({"fileHash": SourceHash.fromHex(file.fileHash), "filePath": file.filePath, "id": file.id});
|
|
45
45
|
};
|
|
@@ -54,72 +54,68 @@ class FileCache extends Register.inherits(BaseCache) {
|
|
|
54
54
|
return stone.id;
|
|
55
55
|
}
|
|
56
56
|
value(source) {
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
let idOverride;
|
|
58
|
+
let _g = source.origin.cacheStrategy;
|
|
59
59
|
if (_g._hx_index == 3) {
|
|
60
|
-
|
|
60
|
+
let _g1 = _g.path;
|
|
61
61
|
idOverride = (source.data.length == 1) ? _g1.substring(_g1.lastIndexOf("/") + 1) : null;
|
|
62
62
|
} else {
|
|
63
63
|
idOverride = null;
|
|
64
64
|
};
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
while (
|
|
69
|
-
|
|
70
|
-
++
|
|
71
|
-
|
|
72
|
-
return
|
|
73
|
-
|
|
74
|
-
};
|
|
75
|
-
})(data)));
|
|
65
|
+
let _g1 = [];
|
|
66
|
+
let _g2 = 0;
|
|
67
|
+
let _g3 = source.data;
|
|
68
|
+
while (_g2 < _g3.length) {
|
|
69
|
+
let data = _g3[_g2];
|
|
70
|
+
++_g2;
|
|
71
|
+
_g1.push(data.getFilePathId(idOverride).then(function (filePath) {
|
|
72
|
+
return {"fileHash": SourceHash.fromBytes(data.data), "filePath": filePath, "id": data.id};
|
|
73
|
+
}));
|
|
76
74
|
};
|
|
77
|
-
return Promise.all(
|
|
75
|
+
return Promise.all(_g1).then(function (files) {
|
|
78
76
|
return {"hash": source.hash, "ctime": source.ctime, "baseDir": source.getDirPath(), "ctimePretty": null, "files": files};
|
|
79
77
|
});
|
|
80
78
|
}
|
|
81
79
|
source(stone, value) {
|
|
82
|
-
|
|
83
|
-
var _g = stone.cacheStrategy;
|
|
80
|
+
let _g = stone.cacheStrategy;
|
|
84
81
|
if (_g._hx_index == 3) {
|
|
85
|
-
|
|
86
|
-
|
|
82
|
+
let _g1 = _g.path;
|
|
83
|
+
let invalidPath;
|
|
87
84
|
if (value.files.length == 1 && !(_g1.length == 0 || _g1.charCodeAt(_g1.length - 1) == 47)) {
|
|
88
85
|
invalidPath = value.files[0].filePath != _g1;
|
|
89
86
|
} else {
|
|
90
|
-
|
|
87
|
+
let dir = _g1.substring(0, _g1.lastIndexOf("/") + 1);
|
|
91
88
|
invalidPath = value.baseDir != ((dir.length == 0) ? "./" : dir);
|
|
92
89
|
};
|
|
93
90
|
if (invalidPath) {
|
|
94
91
|
return Promise.resolve(null);
|
|
95
92
|
};
|
|
96
93
|
};
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
94
|
+
let _gthis = this;
|
|
95
|
+
let _g1 = [];
|
|
96
|
+
let _g2 = 0;
|
|
97
|
+
let _g3 = value.files;
|
|
98
|
+
while (_g2 < _g3.length) {
|
|
99
|
+
let file = _g3[_g2];
|
|
100
|
+
++_g2;
|
|
101
|
+
_g1.push(new Promise(function (res, rej) {
|
|
102
|
+
let path = Path.posix.join(".", _gthis.rootDir, ".", file.filePath);
|
|
103
|
+
SourceData.fromFile(file.id, path, file.filePath).then(function (sourceData) {
|
|
104
|
+
if (sourceData == null || !stone.ignoreFileHash && !SourceHash.equals(sourceData.hash, file.fileHash)) {
|
|
105
|
+
rej("Invalid.");
|
|
106
|
+
} else {
|
|
107
|
+
res(sourceData);
|
|
110
108
|
};
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
rej(err);
|
|
117
|
-
};
|
|
109
|
+
}, function (err) {
|
|
110
|
+
if (((err) instanceof Error) && err.code == "ENOENT") {
|
|
111
|
+
rej("Invalid.");
|
|
112
|
+
} else {
|
|
113
|
+
rej(err);
|
|
118
114
|
};
|
|
119
|
-
})
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
return Promise.all(
|
|
115
|
+
});
|
|
116
|
+
}));
|
|
117
|
+
};
|
|
118
|
+
return Promise.all(_g1).then(function (data) {
|
|
123
119
|
return new Source(data, value.hash, stone, value.ctime);
|
|
124
120
|
}, function (rejected) {
|
|
125
121
|
if (rejected == "Invalid.") {
|
|
@@ -131,20 +127,20 @@ class FileCache extends Register.inherits(BaseCache) {
|
|
|
131
127
|
});
|
|
132
128
|
}
|
|
133
129
|
set(source) {
|
|
134
|
-
|
|
130
|
+
let _gthis = this;
|
|
135
131
|
return super.set(source).then(function (vals) {
|
|
136
132
|
_gthis.flush();
|
|
137
133
|
return vals;
|
|
138
134
|
});
|
|
139
135
|
}
|
|
140
136
|
getExistingDirs(stone) {
|
|
141
|
-
|
|
137
|
+
let list = this.cache.inst.get(stone.id);
|
|
142
138
|
if (list != null) {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
139
|
+
let result = new Array(list.length);
|
|
140
|
+
let _g = 0;
|
|
141
|
+
let _g1 = list.length;
|
|
146
142
|
while (_g < _g1) {
|
|
147
|
-
|
|
143
|
+
let i = _g++;
|
|
148
144
|
result[i] = list[i].baseDir;
|
|
149
145
|
};
|
|
150
146
|
return result;
|
|
@@ -153,32 +149,32 @@ class FileCache extends Register.inherits(BaseCache) {
|
|
|
153
149
|
};
|
|
154
150
|
}
|
|
155
151
|
remove(stone, value) {
|
|
156
|
-
var _gthis = this;
|
|
157
152
|
Log.log(20, ...["Removing stone from file cache.", {"stone": stone, "valueHash": SourceHash.toHex(value.hash)}]);
|
|
158
|
-
|
|
153
|
+
let isAlone = Lambda.count(this.cache.inst.get(stone.id), function (v) {
|
|
159
154
|
return v.baseDir == value.baseDir;
|
|
160
155
|
}) == 1;
|
|
156
|
+
let _gthis = this;
|
|
161
157
|
return super.remove(stone, value).then(function (_) {
|
|
162
158
|
_gthis.flush();
|
|
163
159
|
if (!isAlone) {
|
|
164
160
|
return Promise.resolve(null);
|
|
165
161
|
} else {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
while (_g1 < _g2.length)
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
};
|
|
177
|
-
res(null);
|
|
162
|
+
let _g = [];
|
|
163
|
+
let _g1 = 0;
|
|
164
|
+
let _g2 = value.files;
|
|
165
|
+
while (_g1 < _g2.length) {
|
|
166
|
+
let file = _g2[_g1];
|
|
167
|
+
++_g1;
|
|
168
|
+
_g.push(new Promise(function (res, rej) {
|
|
169
|
+
Log.log(20, ...["Deleting file.", {"path": Path.posix.join(".", _gthis.rootDir, ".", file.filePath)}]);
|
|
170
|
+
Fs.unlink(Path.posix.join(".", _gthis.rootDir, ".", file.filePath), function (err) {
|
|
171
|
+
if (err != null) {
|
|
172
|
+
Log.log(50, ...["Error deleting file.", {"file": file, "error": err}]);
|
|
178
173
|
};
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
174
|
+
res(null);
|
|
175
|
+
});
|
|
176
|
+
}));
|
|
177
|
+
};
|
|
182
178
|
return Promise.all(_g);
|
|
183
179
|
};
|
|
184
180
|
}).then(function (_) {
|
|
@@ -202,7 +198,7 @@ class FileCache extends Register.inherits(BaseCache) {
|
|
|
202
198
|
});
|
|
203
199
|
}
|
|
204
200
|
setRecentUseOrder(values, value) {
|
|
205
|
-
|
|
201
|
+
let changed = super.setRecentUseOrder(values, value);
|
|
206
202
|
if (changed) {
|
|
207
203
|
this.flush();
|
|
208
204
|
};
|
|
@@ -212,33 +208,33 @@ class FileCache extends Register.inherits(BaseCache) {
|
|
|
212
208
|
return value.baseDir;
|
|
213
209
|
}
|
|
214
210
|
flush() {
|
|
215
|
-
var _gthis = this;
|
|
216
211
|
if (this.flushQueued) {
|
|
217
212
|
return;
|
|
218
213
|
};
|
|
219
214
|
this.flushQueued = true;
|
|
215
|
+
let _gthis = this;
|
|
220
216
|
global.setTimeout(function () {
|
|
221
217
|
_gthis.flushQueued = false;
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
218
|
+
let db = {};
|
|
219
|
+
let this1 = _gthis.cache;
|
|
220
|
+
let _g_keys = this1.keys();
|
|
225
221
|
while (_g_keys.hasNext()) {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
222
|
+
let key = _g_keys.next();
|
|
223
|
+
let _g_value = this1.get(key);
|
|
224
|
+
let _g = [];
|
|
225
|
+
let _g1 = 0;
|
|
230
226
|
while (_g1 < _g_value.length) {
|
|
231
|
-
|
|
227
|
+
let val = _g_value[_g1];
|
|
232
228
|
++_g1;
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
229
|
+
let tmp = SourceHash.toHex(val.hash);
|
|
230
|
+
let val1 = val.ctime;
|
|
231
|
+
let tmp1 = HxOverrides.dateStr(new Date(val.ctime * 1000));
|
|
232
|
+
let tmp2 = Path.posix.join(".", "./", ".", val.baseDir);
|
|
233
|
+
let _g2 = [];
|
|
234
|
+
let _g3 = 0;
|
|
235
|
+
let _g4 = val.files;
|
|
240
236
|
while (_g3 < _g4.length) {
|
|
241
|
-
|
|
237
|
+
let file = _g4[_g3];
|
|
242
238
|
++_g3;
|
|
243
239
|
_g2.push({"fileHash": SourceHash.toHex(file.fileHash), "filePath": Path.posix.join(".", "./", ".", file.filePath), "id": Path.posix.join(".", "./", ".", file.id)});
|
|
244
240
|
};
|
|
@@ -19,25 +19,25 @@ class MemoryCache extends Register.inherits(BaseCache) {
|
|
|
19
19
|
return Promise.resolve(value);
|
|
20
20
|
}
|
|
21
21
|
getExistingDirs(stone) {
|
|
22
|
-
|
|
22
|
+
let list = this.cache.inst.get(stone);
|
|
23
23
|
if (list != null) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
let result = new Array(list.length);
|
|
25
|
+
let _g = 0;
|
|
26
|
+
let _g1 = list.length;
|
|
27
27
|
while (_g < _g1) {
|
|
28
|
-
|
|
28
|
+
let i = _g++;
|
|
29
29
|
result[i] = list[i].tryDirPath();
|
|
30
30
|
};
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
while (
|
|
34
|
-
|
|
35
|
-
++
|
|
31
|
+
let _g2 = [];
|
|
32
|
+
let _g3 = 0;
|
|
33
|
+
while (_g3 < result.length) {
|
|
34
|
+
let v = result[_g3];
|
|
35
|
+
++_g3;
|
|
36
36
|
if (v != null) {
|
|
37
|
-
|
|
37
|
+
_g2.push(v);
|
|
38
38
|
};
|
|
39
39
|
};
|
|
40
|
-
return
|
|
40
|
+
return _g2;
|
|
41
41
|
} else {
|
|
42
42
|
return null;
|
|
43
43
|
};
|