@tradejs/cli 2.0.18 → 2.0.20
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/dist/cli.js +14522 -15704
- package/dist/lib/aiExport.js +15 -1608
- package/dist/lib/aiPocketSearch.js +499 -67
- package/dist/lib/aiPocketSearchCli.js +113 -0
- package/dist/lib/aiTrainCharts.js +14 -1
- package/dist/lib/aiTrainMetrics.js +4 -1
- package/dist/lib/aiTrainResearch.js +88 -54
- package/dist/lib/binanceMarketContextBackfill.js +7 -6
- package/dist/lib/coinMarketCapContextBackfill.js +19 -18
- package/dist/lib/coreResearch.js +2738 -0
- package/dist/lib/derivativesContextBackfill.js +10 -9
- package/dist/lib/executionCalibration.js +6 -3
- package/dist/lib/hyperliquidWhaleBackfill.js +8 -8
- package/dist/lib/hyperliquidWhaleStream.js +4 -4
- package/dist/lib/marketContextPrepare.js +83 -1686
- package/dist/lib/runEnvironment.js +14 -1666
- package/dist/lib/runFormatting.js +1 -1607
- package/dist/lib/runtimeDebugEvidence.js +2 -48
- package/dist/lib/runtimeLineage.js +81 -48
- package/dist/lib/runtimeRedis.js +6 -57
- package/dist/lib/runtimeScorecard.js +153 -10
- package/dist/lib/runtimeStrategyBacktest.js +2 -48
- package/dist/lib/strategyGateFingerprint.js +80 -0
- package/dist/lib/strategyRelease.js +1365 -0
- package/dist/scripts/aiExport.js +17 -1610
- package/dist/scripts/aiPocketSearch.js +1070 -1770
- package/dist/scripts/aiTrain.js +108 -1688
- package/dist/scripts/backtest.js +120 -1760
- package/dist/scripts/binanceMarketIngest.js +5 -4
- package/dist/scripts/candlesMigrateProvider.js +6 -5186
- package/dist/scripts/cleanupMarketContext.js +4 -3
- package/dist/scripts/continuity.js +4 -3
- package/dist/scripts/coreResearch.js +2830 -0
- package/dist/scripts/derivativesIngest.js +6 -4
- package/dist/scripts/derivativesIngestCoinalyzeAll.js +5 -4
- package/dist/scripts/doctor.js +2 -5184
- package/dist/scripts/executionCalibration.js +6 -3
- package/dist/scripts/hyperliquidWhaleBackfill.js +8 -8
- package/dist/scripts/hyperliquidWhaleIngest.js +4 -4
- package/dist/scripts/hyperliquidWhalesUpdate.js +1 -1
- package/dist/scripts/migration.js +3 -3
- package/dist/scripts/mlExport.js +1 -1607
- package/dist/scripts/replay.js +239 -1855
- package/dist/scripts/replayRunner.js +239 -1855
- package/dist/scripts/replayRuntimeEvidence.js +29 -62
- package/dist/scripts/researchAuto.js +3 -49
- package/dist/scripts/results.js +1 -1607
- package/dist/scripts/runtimeEvidence.js +18 -56
- package/dist/scripts/runtimeParity.js +121 -1746
- package/dist/scripts/runtimeScorecard.js +883 -29
- package/dist/scripts/signals.js +1178 -2724
- package/dist/scripts/signalsDaemon.js +1183 -2696
- package/dist/scripts/signalsSummary.js +4 -26
- package/dist/scripts/strategyRelease.js +1469 -0
- package/dist/workers/testerWorker.js +2 -2
- package/package.json +13 -9
package/dist/scripts/aiTrain.js
CHANGED
|
@@ -5,13 +5,6 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
5
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
6
|
var __getProtoOf = Object.getPrototypeOf;
|
|
7
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __commonJS = (cb, mod) => function __require() {
|
|
9
|
-
try {
|
|
10
|
-
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
11
|
-
} catch (e) {
|
|
12
|
-
throw mod = 0, e;
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
8
|
var __export = (target, all) => {
|
|
16
9
|
for (var name in all)
|
|
17
10
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -34,1605 +27,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
34
27
|
));
|
|
35
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
36
29
|
|
|
37
|
-
// ../../node_modules/ms/index.js
|
|
38
|
-
var require_ms = __commonJS({
|
|
39
|
-
"../../node_modules/ms/index.js"(exports2, module2) {
|
|
40
|
-
"use strict";
|
|
41
|
-
var s = 1e3;
|
|
42
|
-
var m = s * 60;
|
|
43
|
-
var h = m * 60;
|
|
44
|
-
var d = h * 24;
|
|
45
|
-
var w = d * 7;
|
|
46
|
-
var y = d * 365.25;
|
|
47
|
-
module2.exports = function(val, options) {
|
|
48
|
-
options = options || {};
|
|
49
|
-
var type = typeof val;
|
|
50
|
-
if (type === "string" && val.length > 0) {
|
|
51
|
-
return parse(val);
|
|
52
|
-
} else if (type === "number" && isFinite(val)) {
|
|
53
|
-
return options.long ? fmtLong(val) : fmtShort(val);
|
|
54
|
-
}
|
|
55
|
-
throw new Error(
|
|
56
|
-
"val is not a non-empty string or a valid number. val=" + JSON.stringify(val)
|
|
57
|
-
);
|
|
58
|
-
};
|
|
59
|
-
function parse(str) {
|
|
60
|
-
str = String(str);
|
|
61
|
-
if (str.length > 100) {
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(
|
|
65
|
-
str
|
|
66
|
-
);
|
|
67
|
-
if (!match) {
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
var n = parseFloat(match[1]);
|
|
71
|
-
var type = (match[2] || "ms").toLowerCase();
|
|
72
|
-
switch (type) {
|
|
73
|
-
case "years":
|
|
74
|
-
case "year":
|
|
75
|
-
case "yrs":
|
|
76
|
-
case "yr":
|
|
77
|
-
case "y":
|
|
78
|
-
return n * y;
|
|
79
|
-
case "weeks":
|
|
80
|
-
case "week":
|
|
81
|
-
case "w":
|
|
82
|
-
return n * w;
|
|
83
|
-
case "days":
|
|
84
|
-
case "day":
|
|
85
|
-
case "d":
|
|
86
|
-
return n * d;
|
|
87
|
-
case "hours":
|
|
88
|
-
case "hour":
|
|
89
|
-
case "hrs":
|
|
90
|
-
case "hr":
|
|
91
|
-
case "h":
|
|
92
|
-
return n * h;
|
|
93
|
-
case "minutes":
|
|
94
|
-
case "minute":
|
|
95
|
-
case "mins":
|
|
96
|
-
case "min":
|
|
97
|
-
case "m":
|
|
98
|
-
return n * m;
|
|
99
|
-
case "seconds":
|
|
100
|
-
case "second":
|
|
101
|
-
case "secs":
|
|
102
|
-
case "sec":
|
|
103
|
-
case "s":
|
|
104
|
-
return n * s;
|
|
105
|
-
case "milliseconds":
|
|
106
|
-
case "millisecond":
|
|
107
|
-
case "msecs":
|
|
108
|
-
case "msec":
|
|
109
|
-
case "ms":
|
|
110
|
-
return n;
|
|
111
|
-
default:
|
|
112
|
-
return void 0;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
function fmtShort(ms) {
|
|
116
|
-
var msAbs = Math.abs(ms);
|
|
117
|
-
if (msAbs >= d) {
|
|
118
|
-
return Math.round(ms / d) + "d";
|
|
119
|
-
}
|
|
120
|
-
if (msAbs >= h) {
|
|
121
|
-
return Math.round(ms / h) + "h";
|
|
122
|
-
}
|
|
123
|
-
if (msAbs >= m) {
|
|
124
|
-
return Math.round(ms / m) + "m";
|
|
125
|
-
}
|
|
126
|
-
if (msAbs >= s) {
|
|
127
|
-
return Math.round(ms / s) + "s";
|
|
128
|
-
}
|
|
129
|
-
return ms + "ms";
|
|
130
|
-
}
|
|
131
|
-
function fmtLong(ms) {
|
|
132
|
-
var msAbs = Math.abs(ms);
|
|
133
|
-
if (msAbs >= d) {
|
|
134
|
-
return plural(ms, msAbs, d, "day");
|
|
135
|
-
}
|
|
136
|
-
if (msAbs >= h) {
|
|
137
|
-
return plural(ms, msAbs, h, "hour");
|
|
138
|
-
}
|
|
139
|
-
if (msAbs >= m) {
|
|
140
|
-
return plural(ms, msAbs, m, "minute");
|
|
141
|
-
}
|
|
142
|
-
if (msAbs >= s) {
|
|
143
|
-
return plural(ms, msAbs, s, "second");
|
|
144
|
-
}
|
|
145
|
-
return ms + " ms";
|
|
146
|
-
}
|
|
147
|
-
function plural(ms, msAbs, n, name) {
|
|
148
|
-
var isPlural = msAbs >= n * 1.5;
|
|
149
|
-
return Math.round(ms / n) + " " + name + (isPlural ? "s" : "");
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
// ../../node_modules/list-it/node_modules/debug/src/common.js
|
|
155
|
-
var require_common = __commonJS({
|
|
156
|
-
"../../node_modules/list-it/node_modules/debug/src/common.js"(exports2, module2) {
|
|
157
|
-
"use strict";
|
|
158
|
-
function setup(env) {
|
|
159
|
-
createDebug.debug = createDebug;
|
|
160
|
-
createDebug.default = createDebug;
|
|
161
|
-
createDebug.coerce = coerce;
|
|
162
|
-
createDebug.disable = disable;
|
|
163
|
-
createDebug.enable = enable;
|
|
164
|
-
createDebug.enabled = enabled;
|
|
165
|
-
createDebug.humanize = require_ms();
|
|
166
|
-
createDebug.destroy = destroy;
|
|
167
|
-
Object.keys(env).forEach((key) => {
|
|
168
|
-
createDebug[key] = env[key];
|
|
169
|
-
});
|
|
170
|
-
createDebug.names = [];
|
|
171
|
-
createDebug.skips = [];
|
|
172
|
-
createDebug.formatters = {};
|
|
173
|
-
function selectColor(namespace) {
|
|
174
|
-
let hash = 0;
|
|
175
|
-
for (let i = 0; i < namespace.length; i++) {
|
|
176
|
-
hash = (hash << 5) - hash + namespace.charCodeAt(i);
|
|
177
|
-
hash |= 0;
|
|
178
|
-
}
|
|
179
|
-
return createDebug.colors[Math.abs(hash) % createDebug.colors.length];
|
|
180
|
-
}
|
|
181
|
-
createDebug.selectColor = selectColor;
|
|
182
|
-
function createDebug(namespace) {
|
|
183
|
-
let prevTime;
|
|
184
|
-
let enableOverride = null;
|
|
185
|
-
let namespacesCache;
|
|
186
|
-
let enabledCache;
|
|
187
|
-
function debug(...args2) {
|
|
188
|
-
if (!debug.enabled) {
|
|
189
|
-
return;
|
|
190
|
-
}
|
|
191
|
-
const self = debug;
|
|
192
|
-
const curr = Number(/* @__PURE__ */ new Date());
|
|
193
|
-
const ms = curr - (prevTime || curr);
|
|
194
|
-
self.diff = ms;
|
|
195
|
-
self.prev = prevTime;
|
|
196
|
-
self.curr = curr;
|
|
197
|
-
prevTime = curr;
|
|
198
|
-
args2[0] = createDebug.coerce(args2[0]);
|
|
199
|
-
if (typeof args2[0] !== "string") {
|
|
200
|
-
args2.unshift("%O");
|
|
201
|
-
}
|
|
202
|
-
let index = 0;
|
|
203
|
-
args2[0] = args2[0].replace(/%([a-zA-Z%])/g, (match, format) => {
|
|
204
|
-
if (match === "%%") {
|
|
205
|
-
return "%";
|
|
206
|
-
}
|
|
207
|
-
index++;
|
|
208
|
-
const formatter = createDebug.formatters[format];
|
|
209
|
-
if (typeof formatter === "function") {
|
|
210
|
-
const val = args2[index];
|
|
211
|
-
match = formatter.call(self, val);
|
|
212
|
-
args2.splice(index, 1);
|
|
213
|
-
index--;
|
|
214
|
-
}
|
|
215
|
-
return match;
|
|
216
|
-
});
|
|
217
|
-
createDebug.formatArgs.call(self, args2);
|
|
218
|
-
const logFn = self.log || createDebug.log;
|
|
219
|
-
logFn.apply(self, args2);
|
|
220
|
-
}
|
|
221
|
-
debug.namespace = namespace;
|
|
222
|
-
debug.useColors = createDebug.useColors();
|
|
223
|
-
debug.color = createDebug.selectColor(namespace);
|
|
224
|
-
debug.extend = extend;
|
|
225
|
-
debug.destroy = createDebug.destroy;
|
|
226
|
-
Object.defineProperty(debug, "enabled", {
|
|
227
|
-
enumerable: true,
|
|
228
|
-
configurable: false,
|
|
229
|
-
get: () => {
|
|
230
|
-
if (enableOverride !== null) {
|
|
231
|
-
return enableOverride;
|
|
232
|
-
}
|
|
233
|
-
if (namespacesCache !== createDebug.namespaces) {
|
|
234
|
-
namespacesCache = createDebug.namespaces;
|
|
235
|
-
enabledCache = createDebug.enabled(namespace);
|
|
236
|
-
}
|
|
237
|
-
return enabledCache;
|
|
238
|
-
},
|
|
239
|
-
set: (v) => {
|
|
240
|
-
enableOverride = v;
|
|
241
|
-
}
|
|
242
|
-
});
|
|
243
|
-
if (typeof createDebug.init === "function") {
|
|
244
|
-
createDebug.init(debug);
|
|
245
|
-
}
|
|
246
|
-
return debug;
|
|
247
|
-
}
|
|
248
|
-
function extend(namespace, delimiter) {
|
|
249
|
-
const newDebug = createDebug(this.namespace + (typeof delimiter === "undefined" ? ":" : delimiter) + namespace);
|
|
250
|
-
newDebug.log = this.log;
|
|
251
|
-
return newDebug;
|
|
252
|
-
}
|
|
253
|
-
function enable(namespaces) {
|
|
254
|
-
createDebug.save(namespaces);
|
|
255
|
-
createDebug.namespaces = namespaces;
|
|
256
|
-
createDebug.names = [];
|
|
257
|
-
createDebug.skips = [];
|
|
258
|
-
const split = (typeof namespaces === "string" ? namespaces : "").trim().replace(/\s+/g, ",").split(",").filter(Boolean);
|
|
259
|
-
for (const ns of split) {
|
|
260
|
-
if (ns[0] === "-") {
|
|
261
|
-
createDebug.skips.push(ns.slice(1));
|
|
262
|
-
} else {
|
|
263
|
-
createDebug.names.push(ns);
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
function matchesTemplate(search, template) {
|
|
268
|
-
let searchIndex = 0;
|
|
269
|
-
let templateIndex = 0;
|
|
270
|
-
let starIndex = -1;
|
|
271
|
-
let matchIndex = 0;
|
|
272
|
-
while (searchIndex < search.length) {
|
|
273
|
-
if (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === "*")) {
|
|
274
|
-
if (template[templateIndex] === "*") {
|
|
275
|
-
starIndex = templateIndex;
|
|
276
|
-
matchIndex = searchIndex;
|
|
277
|
-
templateIndex++;
|
|
278
|
-
} else {
|
|
279
|
-
searchIndex++;
|
|
280
|
-
templateIndex++;
|
|
281
|
-
}
|
|
282
|
-
} else if (starIndex !== -1) {
|
|
283
|
-
templateIndex = starIndex + 1;
|
|
284
|
-
matchIndex++;
|
|
285
|
-
searchIndex = matchIndex;
|
|
286
|
-
} else {
|
|
287
|
-
return false;
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
while (templateIndex < template.length && template[templateIndex] === "*") {
|
|
291
|
-
templateIndex++;
|
|
292
|
-
}
|
|
293
|
-
return templateIndex === template.length;
|
|
294
|
-
}
|
|
295
|
-
function disable() {
|
|
296
|
-
const namespaces = [
|
|
297
|
-
...createDebug.names,
|
|
298
|
-
...createDebug.skips.map((namespace) => "-" + namespace)
|
|
299
|
-
].join(",");
|
|
300
|
-
createDebug.enable("");
|
|
301
|
-
return namespaces;
|
|
302
|
-
}
|
|
303
|
-
function enabled(name) {
|
|
304
|
-
for (const skip of createDebug.skips) {
|
|
305
|
-
if (matchesTemplate(name, skip)) {
|
|
306
|
-
return false;
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
for (const ns of createDebug.names) {
|
|
310
|
-
if (matchesTemplate(name, ns)) {
|
|
311
|
-
return true;
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
return false;
|
|
315
|
-
}
|
|
316
|
-
function coerce(val) {
|
|
317
|
-
if (val instanceof Error) {
|
|
318
|
-
return val.stack || val.message;
|
|
319
|
-
}
|
|
320
|
-
return val;
|
|
321
|
-
}
|
|
322
|
-
function destroy() {
|
|
323
|
-
console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");
|
|
324
|
-
}
|
|
325
|
-
createDebug.enable(createDebug.load());
|
|
326
|
-
return createDebug;
|
|
327
|
-
}
|
|
328
|
-
module2.exports = setup;
|
|
329
|
-
}
|
|
330
|
-
});
|
|
331
|
-
|
|
332
|
-
// ../../node_modules/list-it/node_modules/debug/src/browser.js
|
|
333
|
-
var require_browser = __commonJS({
|
|
334
|
-
"../../node_modules/list-it/node_modules/debug/src/browser.js"(exports2, module2) {
|
|
335
|
-
"use strict";
|
|
336
|
-
exports2.formatArgs = formatArgs;
|
|
337
|
-
exports2.save = save;
|
|
338
|
-
exports2.load = load;
|
|
339
|
-
exports2.useColors = useColors;
|
|
340
|
-
exports2.storage = localstorage();
|
|
341
|
-
exports2.destroy = /* @__PURE__ */ (() => {
|
|
342
|
-
let warned = false;
|
|
343
|
-
return () => {
|
|
344
|
-
if (!warned) {
|
|
345
|
-
warned = true;
|
|
346
|
-
console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");
|
|
347
|
-
}
|
|
348
|
-
};
|
|
349
|
-
})();
|
|
350
|
-
exports2.colors = [
|
|
351
|
-
"#0000CC",
|
|
352
|
-
"#0000FF",
|
|
353
|
-
"#0033CC",
|
|
354
|
-
"#0033FF",
|
|
355
|
-
"#0066CC",
|
|
356
|
-
"#0066FF",
|
|
357
|
-
"#0099CC",
|
|
358
|
-
"#0099FF",
|
|
359
|
-
"#00CC00",
|
|
360
|
-
"#00CC33",
|
|
361
|
-
"#00CC66",
|
|
362
|
-
"#00CC99",
|
|
363
|
-
"#00CCCC",
|
|
364
|
-
"#00CCFF",
|
|
365
|
-
"#3300CC",
|
|
366
|
-
"#3300FF",
|
|
367
|
-
"#3333CC",
|
|
368
|
-
"#3333FF",
|
|
369
|
-
"#3366CC",
|
|
370
|
-
"#3366FF",
|
|
371
|
-
"#3399CC",
|
|
372
|
-
"#3399FF",
|
|
373
|
-
"#33CC00",
|
|
374
|
-
"#33CC33",
|
|
375
|
-
"#33CC66",
|
|
376
|
-
"#33CC99",
|
|
377
|
-
"#33CCCC",
|
|
378
|
-
"#33CCFF",
|
|
379
|
-
"#6600CC",
|
|
380
|
-
"#6600FF",
|
|
381
|
-
"#6633CC",
|
|
382
|
-
"#6633FF",
|
|
383
|
-
"#66CC00",
|
|
384
|
-
"#66CC33",
|
|
385
|
-
"#9900CC",
|
|
386
|
-
"#9900FF",
|
|
387
|
-
"#9933CC",
|
|
388
|
-
"#9933FF",
|
|
389
|
-
"#99CC00",
|
|
390
|
-
"#99CC33",
|
|
391
|
-
"#CC0000",
|
|
392
|
-
"#CC0033",
|
|
393
|
-
"#CC0066",
|
|
394
|
-
"#CC0099",
|
|
395
|
-
"#CC00CC",
|
|
396
|
-
"#CC00FF",
|
|
397
|
-
"#CC3300",
|
|
398
|
-
"#CC3333",
|
|
399
|
-
"#CC3366",
|
|
400
|
-
"#CC3399",
|
|
401
|
-
"#CC33CC",
|
|
402
|
-
"#CC33FF",
|
|
403
|
-
"#CC6600",
|
|
404
|
-
"#CC6633",
|
|
405
|
-
"#CC9900",
|
|
406
|
-
"#CC9933",
|
|
407
|
-
"#CCCC00",
|
|
408
|
-
"#CCCC33",
|
|
409
|
-
"#FF0000",
|
|
410
|
-
"#FF0033",
|
|
411
|
-
"#FF0066",
|
|
412
|
-
"#FF0099",
|
|
413
|
-
"#FF00CC",
|
|
414
|
-
"#FF00FF",
|
|
415
|
-
"#FF3300",
|
|
416
|
-
"#FF3333",
|
|
417
|
-
"#FF3366",
|
|
418
|
-
"#FF3399",
|
|
419
|
-
"#FF33CC",
|
|
420
|
-
"#FF33FF",
|
|
421
|
-
"#FF6600",
|
|
422
|
-
"#FF6633",
|
|
423
|
-
"#FF9900",
|
|
424
|
-
"#FF9933",
|
|
425
|
-
"#FFCC00",
|
|
426
|
-
"#FFCC33"
|
|
427
|
-
];
|
|
428
|
-
function useColors() {
|
|
429
|
-
if (typeof window !== "undefined" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) {
|
|
430
|
-
return true;
|
|
431
|
-
}
|
|
432
|
-
if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
|
|
433
|
-
return false;
|
|
434
|
-
}
|
|
435
|
-
let m;
|
|
436
|
-
return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773
|
|
437
|
-
typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?
|
|
438
|
-
// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
|
|
439
|
-
typeof navigator !== "undefined" && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[1], 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker
|
|
440
|
-
typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/);
|
|
441
|
-
}
|
|
442
|
-
function formatArgs(args2) {
|
|
443
|
-
args2[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args2[0] + (this.useColors ? "%c " : " ") + "+" + module2.exports.humanize(this.diff);
|
|
444
|
-
if (!this.useColors) {
|
|
445
|
-
return;
|
|
446
|
-
}
|
|
447
|
-
const c = "color: " + this.color;
|
|
448
|
-
args2.splice(1, 0, c, "color: inherit");
|
|
449
|
-
let index = 0;
|
|
450
|
-
let lastC = 0;
|
|
451
|
-
args2[0].replace(/%[a-zA-Z%]/g, (match) => {
|
|
452
|
-
if (match === "%%") {
|
|
453
|
-
return;
|
|
454
|
-
}
|
|
455
|
-
index++;
|
|
456
|
-
if (match === "%c") {
|
|
457
|
-
lastC = index;
|
|
458
|
-
}
|
|
459
|
-
});
|
|
460
|
-
args2.splice(lastC, 0, c);
|
|
461
|
-
}
|
|
462
|
-
exports2.log = console.debug || console.log || (() => {
|
|
463
|
-
});
|
|
464
|
-
function save(namespaces) {
|
|
465
|
-
try {
|
|
466
|
-
if (namespaces) {
|
|
467
|
-
exports2.storage.setItem("debug", namespaces);
|
|
468
|
-
} else {
|
|
469
|
-
exports2.storage.removeItem("debug");
|
|
470
|
-
}
|
|
471
|
-
} catch (error) {
|
|
472
|
-
}
|
|
473
|
-
}
|
|
474
|
-
function load() {
|
|
475
|
-
let r;
|
|
476
|
-
try {
|
|
477
|
-
r = exports2.storage.getItem("debug") || exports2.storage.getItem("DEBUG");
|
|
478
|
-
} catch (error) {
|
|
479
|
-
}
|
|
480
|
-
if (!r && typeof process !== "undefined" && "env" in process) {
|
|
481
|
-
r = process.env.DEBUG;
|
|
482
|
-
}
|
|
483
|
-
return r;
|
|
484
|
-
}
|
|
485
|
-
function localstorage() {
|
|
486
|
-
try {
|
|
487
|
-
return localStorage;
|
|
488
|
-
} catch (error) {
|
|
489
|
-
}
|
|
490
|
-
}
|
|
491
|
-
module2.exports = require_common()(exports2);
|
|
492
|
-
var { formatters } = module2.exports;
|
|
493
|
-
formatters.j = function(v) {
|
|
494
|
-
try {
|
|
495
|
-
return JSON.stringify(v);
|
|
496
|
-
} catch (error) {
|
|
497
|
-
return "[UnexpectedJSONParseError]: " + error.message;
|
|
498
|
-
}
|
|
499
|
-
};
|
|
500
|
-
}
|
|
501
|
-
});
|
|
502
|
-
|
|
503
|
-
// ../../node_modules/has-flag/index.js
|
|
504
|
-
var require_has_flag = __commonJS({
|
|
505
|
-
"../../node_modules/has-flag/index.js"(exports2, module2) {
|
|
506
|
-
"use strict";
|
|
507
|
-
module2.exports = (flag, argv = process.argv) => {
|
|
508
|
-
const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
|
|
509
|
-
const position = argv.indexOf(prefix + flag);
|
|
510
|
-
const terminatorPosition = argv.indexOf("--");
|
|
511
|
-
return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
|
|
512
|
-
};
|
|
513
|
-
}
|
|
514
|
-
});
|
|
515
|
-
|
|
516
|
-
// ../../node_modules/supports-color/index.js
|
|
517
|
-
var require_supports_color = __commonJS({
|
|
518
|
-
"../../node_modules/supports-color/index.js"(exports2, module2) {
|
|
519
|
-
"use strict";
|
|
520
|
-
var os = require("os");
|
|
521
|
-
var tty = require("tty");
|
|
522
|
-
var hasFlag = require_has_flag();
|
|
523
|
-
var { env } = process;
|
|
524
|
-
var forceColor;
|
|
525
|
-
if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) {
|
|
526
|
-
forceColor = 0;
|
|
527
|
-
} else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) {
|
|
528
|
-
forceColor = 1;
|
|
529
|
-
}
|
|
530
|
-
if ("FORCE_COLOR" in env) {
|
|
531
|
-
if (env.FORCE_COLOR === "true") {
|
|
532
|
-
forceColor = 1;
|
|
533
|
-
} else if (env.FORCE_COLOR === "false") {
|
|
534
|
-
forceColor = 0;
|
|
535
|
-
} else {
|
|
536
|
-
forceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);
|
|
537
|
-
}
|
|
538
|
-
}
|
|
539
|
-
function translateLevel(level) {
|
|
540
|
-
if (level === 0) {
|
|
541
|
-
return false;
|
|
542
|
-
}
|
|
543
|
-
return {
|
|
544
|
-
level,
|
|
545
|
-
hasBasic: true,
|
|
546
|
-
has256: level >= 2,
|
|
547
|
-
has16m: level >= 3
|
|
548
|
-
};
|
|
549
|
-
}
|
|
550
|
-
function supportsColor(haveStream, streamIsTTY) {
|
|
551
|
-
if (forceColor === 0) {
|
|
552
|
-
return 0;
|
|
553
|
-
}
|
|
554
|
-
if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) {
|
|
555
|
-
return 3;
|
|
556
|
-
}
|
|
557
|
-
if (hasFlag("color=256")) {
|
|
558
|
-
return 2;
|
|
559
|
-
}
|
|
560
|
-
if (haveStream && !streamIsTTY && forceColor === void 0) {
|
|
561
|
-
return 0;
|
|
562
|
-
}
|
|
563
|
-
const min = forceColor || 0;
|
|
564
|
-
if (env.TERM === "dumb") {
|
|
565
|
-
return min;
|
|
566
|
-
}
|
|
567
|
-
if (process.platform === "win32") {
|
|
568
|
-
const osRelease = os.release().split(".");
|
|
569
|
-
if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
|
|
570
|
-
return Number(osRelease[2]) >= 14931 ? 3 : 2;
|
|
571
|
-
}
|
|
572
|
-
return 1;
|
|
573
|
-
}
|
|
574
|
-
if ("CI" in env) {
|
|
575
|
-
if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "GITHUB_ACTIONS", "BUILDKITE"].some((sign) => sign in env) || env.CI_NAME === "codeship") {
|
|
576
|
-
return 1;
|
|
577
|
-
}
|
|
578
|
-
return min;
|
|
579
|
-
}
|
|
580
|
-
if ("TEAMCITY_VERSION" in env) {
|
|
581
|
-
return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;
|
|
582
|
-
}
|
|
583
|
-
if (env.COLORTERM === "truecolor") {
|
|
584
|
-
return 3;
|
|
585
|
-
}
|
|
586
|
-
if ("TERM_PROGRAM" in env) {
|
|
587
|
-
const version = parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
|
|
588
|
-
switch (env.TERM_PROGRAM) {
|
|
589
|
-
case "iTerm.app":
|
|
590
|
-
return version >= 3 ? 3 : 2;
|
|
591
|
-
case "Apple_Terminal":
|
|
592
|
-
return 2;
|
|
593
|
-
}
|
|
594
|
-
}
|
|
595
|
-
if (/-256(color)?$/i.test(env.TERM)) {
|
|
596
|
-
return 2;
|
|
597
|
-
}
|
|
598
|
-
if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {
|
|
599
|
-
return 1;
|
|
600
|
-
}
|
|
601
|
-
if ("COLORTERM" in env) {
|
|
602
|
-
return 1;
|
|
603
|
-
}
|
|
604
|
-
return min;
|
|
605
|
-
}
|
|
606
|
-
function getSupportLevel(stream) {
|
|
607
|
-
const level = supportsColor(stream, stream && stream.isTTY);
|
|
608
|
-
return translateLevel(level);
|
|
609
|
-
}
|
|
610
|
-
module2.exports = {
|
|
611
|
-
supportsColor: getSupportLevel,
|
|
612
|
-
stdout: translateLevel(supportsColor(true, tty.isatty(1))),
|
|
613
|
-
stderr: translateLevel(supportsColor(true, tty.isatty(2)))
|
|
614
|
-
};
|
|
615
|
-
}
|
|
616
|
-
});
|
|
617
|
-
|
|
618
|
-
// ../../node_modules/list-it/node_modules/debug/src/node.js
|
|
619
|
-
var require_node = __commonJS({
|
|
620
|
-
"../../node_modules/list-it/node_modules/debug/src/node.js"(exports2, module2) {
|
|
621
|
-
"use strict";
|
|
622
|
-
var tty = require("tty");
|
|
623
|
-
var util = require("util");
|
|
624
|
-
exports2.init = init;
|
|
625
|
-
exports2.log = log;
|
|
626
|
-
exports2.formatArgs = formatArgs;
|
|
627
|
-
exports2.save = save;
|
|
628
|
-
exports2.load = load;
|
|
629
|
-
exports2.useColors = useColors;
|
|
630
|
-
exports2.destroy = util.deprecate(
|
|
631
|
-
() => {
|
|
632
|
-
},
|
|
633
|
-
"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."
|
|
634
|
-
);
|
|
635
|
-
exports2.colors = [6, 2, 3, 4, 5, 1];
|
|
636
|
-
try {
|
|
637
|
-
const supportsColor = require_supports_color();
|
|
638
|
-
if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {
|
|
639
|
-
exports2.colors = [
|
|
640
|
-
20,
|
|
641
|
-
21,
|
|
642
|
-
26,
|
|
643
|
-
27,
|
|
644
|
-
32,
|
|
645
|
-
33,
|
|
646
|
-
38,
|
|
647
|
-
39,
|
|
648
|
-
40,
|
|
649
|
-
41,
|
|
650
|
-
42,
|
|
651
|
-
43,
|
|
652
|
-
44,
|
|
653
|
-
45,
|
|
654
|
-
56,
|
|
655
|
-
57,
|
|
656
|
-
62,
|
|
657
|
-
63,
|
|
658
|
-
68,
|
|
659
|
-
69,
|
|
660
|
-
74,
|
|
661
|
-
75,
|
|
662
|
-
76,
|
|
663
|
-
77,
|
|
664
|
-
78,
|
|
665
|
-
79,
|
|
666
|
-
80,
|
|
667
|
-
81,
|
|
668
|
-
92,
|
|
669
|
-
93,
|
|
670
|
-
98,
|
|
671
|
-
99,
|
|
672
|
-
112,
|
|
673
|
-
113,
|
|
674
|
-
128,
|
|
675
|
-
129,
|
|
676
|
-
134,
|
|
677
|
-
135,
|
|
678
|
-
148,
|
|
679
|
-
149,
|
|
680
|
-
160,
|
|
681
|
-
161,
|
|
682
|
-
162,
|
|
683
|
-
163,
|
|
684
|
-
164,
|
|
685
|
-
165,
|
|
686
|
-
166,
|
|
687
|
-
167,
|
|
688
|
-
168,
|
|
689
|
-
169,
|
|
690
|
-
170,
|
|
691
|
-
171,
|
|
692
|
-
172,
|
|
693
|
-
173,
|
|
694
|
-
178,
|
|
695
|
-
179,
|
|
696
|
-
184,
|
|
697
|
-
185,
|
|
698
|
-
196,
|
|
699
|
-
197,
|
|
700
|
-
198,
|
|
701
|
-
199,
|
|
702
|
-
200,
|
|
703
|
-
201,
|
|
704
|
-
202,
|
|
705
|
-
203,
|
|
706
|
-
204,
|
|
707
|
-
205,
|
|
708
|
-
206,
|
|
709
|
-
207,
|
|
710
|
-
208,
|
|
711
|
-
209,
|
|
712
|
-
214,
|
|
713
|
-
215,
|
|
714
|
-
220,
|
|
715
|
-
221
|
|
716
|
-
];
|
|
717
|
-
}
|
|
718
|
-
} catch (error) {
|
|
719
|
-
}
|
|
720
|
-
exports2.inspectOpts = Object.keys(process.env).filter((key) => {
|
|
721
|
-
return /^debug_/i.test(key);
|
|
722
|
-
}).reduce((obj, key) => {
|
|
723
|
-
const prop = key.substring(6).toLowerCase().replace(/_([a-z])/g, (_, k) => {
|
|
724
|
-
return k.toUpperCase();
|
|
725
|
-
});
|
|
726
|
-
let val = process.env[key];
|
|
727
|
-
if (/^(yes|on|true|enabled)$/i.test(val)) {
|
|
728
|
-
val = true;
|
|
729
|
-
} else if (/^(no|off|false|disabled)$/i.test(val)) {
|
|
730
|
-
val = false;
|
|
731
|
-
} else if (val === "null") {
|
|
732
|
-
val = null;
|
|
733
|
-
} else {
|
|
734
|
-
val = Number(val);
|
|
735
|
-
}
|
|
736
|
-
obj[prop] = val;
|
|
737
|
-
return obj;
|
|
738
|
-
}, {});
|
|
739
|
-
function useColors() {
|
|
740
|
-
return "colors" in exports2.inspectOpts ? Boolean(exports2.inspectOpts.colors) : tty.isatty(process.stderr.fd);
|
|
741
|
-
}
|
|
742
|
-
function formatArgs(args2) {
|
|
743
|
-
const { namespace: name, useColors: useColors2 } = this;
|
|
744
|
-
if (useColors2) {
|
|
745
|
-
const c = this.color;
|
|
746
|
-
const colorCode = "\x1B[3" + (c < 8 ? c : "8;5;" + c);
|
|
747
|
-
const prefix = ` ${colorCode};1m${name} \x1B[0m`;
|
|
748
|
-
args2[0] = prefix + args2[0].split("\n").join("\n" + prefix);
|
|
749
|
-
args2.push(colorCode + "m+" + module2.exports.humanize(this.diff) + "\x1B[0m");
|
|
750
|
-
} else {
|
|
751
|
-
args2[0] = getDate() + name + " " + args2[0];
|
|
752
|
-
}
|
|
753
|
-
}
|
|
754
|
-
function getDate() {
|
|
755
|
-
if (exports2.inspectOpts.hideDate) {
|
|
756
|
-
return "";
|
|
757
|
-
}
|
|
758
|
-
return (/* @__PURE__ */ new Date()).toISOString() + " ";
|
|
759
|
-
}
|
|
760
|
-
function log(...args2) {
|
|
761
|
-
return process.stderr.write(util.formatWithOptions(exports2.inspectOpts, ...args2) + "\n");
|
|
762
|
-
}
|
|
763
|
-
function save(namespaces) {
|
|
764
|
-
if (namespaces) {
|
|
765
|
-
process.env.DEBUG = namespaces;
|
|
766
|
-
} else {
|
|
767
|
-
delete process.env.DEBUG;
|
|
768
|
-
}
|
|
769
|
-
}
|
|
770
|
-
function load() {
|
|
771
|
-
return process.env.DEBUG;
|
|
772
|
-
}
|
|
773
|
-
function init(debug) {
|
|
774
|
-
debug.inspectOpts = {};
|
|
775
|
-
const keys = Object.keys(exports2.inspectOpts);
|
|
776
|
-
for (let i = 0; i < keys.length; i++) {
|
|
777
|
-
debug.inspectOpts[keys[i]] = exports2.inspectOpts[keys[i]];
|
|
778
|
-
}
|
|
779
|
-
}
|
|
780
|
-
module2.exports = require_common()(exports2);
|
|
781
|
-
var { formatters } = module2.exports;
|
|
782
|
-
formatters.o = function(v) {
|
|
783
|
-
this.inspectOpts.colors = this.useColors;
|
|
784
|
-
return util.inspect(v, this.inspectOpts).split("\n").map((str) => str.trim()).join(" ");
|
|
785
|
-
};
|
|
786
|
-
formatters.O = function(v) {
|
|
787
|
-
this.inspectOpts.colors = this.useColors;
|
|
788
|
-
return util.inspect(v, this.inspectOpts);
|
|
789
|
-
};
|
|
790
|
-
}
|
|
791
|
-
});
|
|
792
|
-
|
|
793
|
-
// ../../node_modules/list-it/node_modules/debug/src/index.js
|
|
794
|
-
var require_src = __commonJS({
|
|
795
|
-
"../../node_modules/list-it/node_modules/debug/src/index.js"(exports2, module2) {
|
|
796
|
-
"use strict";
|
|
797
|
-
if (typeof process === "undefined" || process.type === "renderer" || process.browser === true || process.__nwjs) {
|
|
798
|
-
module2.exports = require_browser();
|
|
799
|
-
} else {
|
|
800
|
-
module2.exports = require_node();
|
|
801
|
-
}
|
|
802
|
-
}
|
|
803
|
-
});
|
|
804
|
-
|
|
805
|
-
// ../../node_modules/eastasianwidth/eastasianwidth.js
|
|
806
|
-
var require_eastasianwidth = __commonJS({
|
|
807
|
-
"../../node_modules/eastasianwidth/eastasianwidth.js"(exports2, module2) {
|
|
808
|
-
"use strict";
|
|
809
|
-
var eaw = {};
|
|
810
|
-
if ("undefined" == typeof module2) {
|
|
811
|
-
window.eastasianwidth = eaw;
|
|
812
|
-
} else {
|
|
813
|
-
module2.exports = eaw;
|
|
814
|
-
}
|
|
815
|
-
eaw.eastAsianWidth = function(character) {
|
|
816
|
-
var x = character.charCodeAt(0);
|
|
817
|
-
var y = character.length == 2 ? character.charCodeAt(1) : 0;
|
|
818
|
-
var codePoint = x;
|
|
819
|
-
if (55296 <= x && x <= 56319 && (56320 <= y && y <= 57343)) {
|
|
820
|
-
x &= 1023;
|
|
821
|
-
y &= 1023;
|
|
822
|
-
codePoint = x << 10 | y;
|
|
823
|
-
codePoint += 65536;
|
|
824
|
-
}
|
|
825
|
-
if (12288 == codePoint || 65281 <= codePoint && codePoint <= 65376 || 65504 <= codePoint && codePoint <= 65510) {
|
|
826
|
-
return "F";
|
|
827
|
-
}
|
|
828
|
-
if (8361 == codePoint || 65377 <= codePoint && codePoint <= 65470 || 65474 <= codePoint && codePoint <= 65479 || 65482 <= codePoint && codePoint <= 65487 || 65490 <= codePoint && codePoint <= 65495 || 65498 <= codePoint && codePoint <= 65500 || 65512 <= codePoint && codePoint <= 65518) {
|
|
829
|
-
return "H";
|
|
830
|
-
}
|
|
831
|
-
if (4352 <= codePoint && codePoint <= 4447 || 4515 <= codePoint && codePoint <= 4519 || 4602 <= codePoint && codePoint <= 4607 || 9001 <= codePoint && codePoint <= 9002 || 11904 <= codePoint && codePoint <= 11929 || 11931 <= codePoint && codePoint <= 12019 || 12032 <= codePoint && codePoint <= 12245 || 12272 <= codePoint && codePoint <= 12283 || 12289 <= codePoint && codePoint <= 12350 || 12353 <= codePoint && codePoint <= 12438 || 12441 <= codePoint && codePoint <= 12543 || 12549 <= codePoint && codePoint <= 12589 || 12593 <= codePoint && codePoint <= 12686 || 12688 <= codePoint && codePoint <= 12730 || 12736 <= codePoint && codePoint <= 12771 || 12784 <= codePoint && codePoint <= 12830 || 12832 <= codePoint && codePoint <= 12871 || 12880 <= codePoint && codePoint <= 13054 || 13056 <= codePoint && codePoint <= 19903 || 19968 <= codePoint && codePoint <= 42124 || 42128 <= codePoint && codePoint <= 42182 || 43360 <= codePoint && codePoint <= 43388 || 44032 <= codePoint && codePoint <= 55203 || 55216 <= codePoint && codePoint <= 55238 || 55243 <= codePoint && codePoint <= 55291 || 63744 <= codePoint && codePoint <= 64255 || 65040 <= codePoint && codePoint <= 65049 || 65072 <= codePoint && codePoint <= 65106 || 65108 <= codePoint && codePoint <= 65126 || 65128 <= codePoint && codePoint <= 65131 || 110592 <= codePoint && codePoint <= 110593 || 127488 <= codePoint && codePoint <= 127490 || 127504 <= codePoint && codePoint <= 127546 || 127552 <= codePoint && codePoint <= 127560 || 127568 <= codePoint && codePoint <= 127569 || 131072 <= codePoint && codePoint <= 194367 || 177984 <= codePoint && codePoint <= 196605 || 196608 <= codePoint && codePoint <= 262141) {
|
|
832
|
-
return "W";
|
|
833
|
-
}
|
|
834
|
-
if (32 <= codePoint && codePoint <= 126 || 162 <= codePoint && codePoint <= 163 || 165 <= codePoint && codePoint <= 166 || 172 == codePoint || 175 == codePoint || 10214 <= codePoint && codePoint <= 10221 || 10629 <= codePoint && codePoint <= 10630) {
|
|
835
|
-
return "Na";
|
|
836
|
-
}
|
|
837
|
-
if (161 == codePoint || 164 == codePoint || 167 <= codePoint && codePoint <= 168 || 170 == codePoint || 173 <= codePoint && codePoint <= 174 || 176 <= codePoint && codePoint <= 180 || 182 <= codePoint && codePoint <= 186 || 188 <= codePoint && codePoint <= 191 || 198 == codePoint || 208 == codePoint || 215 <= codePoint && codePoint <= 216 || 222 <= codePoint && codePoint <= 225 || 230 == codePoint || 232 <= codePoint && codePoint <= 234 || 236 <= codePoint && codePoint <= 237 || 240 == codePoint || 242 <= codePoint && codePoint <= 243 || 247 <= codePoint && codePoint <= 250 || 252 == codePoint || 254 == codePoint || 257 == codePoint || 273 == codePoint || 275 == codePoint || 283 == codePoint || 294 <= codePoint && codePoint <= 295 || 299 == codePoint || 305 <= codePoint && codePoint <= 307 || 312 == codePoint || 319 <= codePoint && codePoint <= 322 || 324 == codePoint || 328 <= codePoint && codePoint <= 331 || 333 == codePoint || 338 <= codePoint && codePoint <= 339 || 358 <= codePoint && codePoint <= 359 || 363 == codePoint || 462 == codePoint || 464 == codePoint || 466 == codePoint || 468 == codePoint || 470 == codePoint || 472 == codePoint || 474 == codePoint || 476 == codePoint || 593 == codePoint || 609 == codePoint || 708 == codePoint || 711 == codePoint || 713 <= codePoint && codePoint <= 715 || 717 == codePoint || 720 == codePoint || 728 <= codePoint && codePoint <= 731 || 733 == codePoint || 735 == codePoint || 768 <= codePoint && codePoint <= 879 || 913 <= codePoint && codePoint <= 929 || 931 <= codePoint && codePoint <= 937 || 945 <= codePoint && codePoint <= 961 || 963 <= codePoint && codePoint <= 969 || 1025 == codePoint || 1040 <= codePoint && codePoint <= 1103 || 1105 == codePoint || 8208 == codePoint || 8211 <= codePoint && codePoint <= 8214 || 8216 <= codePoint && codePoint <= 8217 || 8220 <= codePoint && codePoint <= 8221 || 8224 <= codePoint && codePoint <= 8226 || 8228 <= codePoint && codePoint <= 8231 || 8240 == codePoint || 8242 <= codePoint && codePoint <= 8243 || 8245 == codePoint || 8251 == codePoint || 8254 == codePoint || 8308 == codePoint || 8319 == codePoint || 8321 <= codePoint && codePoint <= 8324 || 8364 == codePoint || 8451 == codePoint || 8453 == codePoint || 8457 == codePoint || 8467 == codePoint || 8470 == codePoint || 8481 <= codePoint && codePoint <= 8482 || 8486 == codePoint || 8491 == codePoint || 8531 <= codePoint && codePoint <= 8532 || 8539 <= codePoint && codePoint <= 8542 || 8544 <= codePoint && codePoint <= 8555 || 8560 <= codePoint && codePoint <= 8569 || 8585 == codePoint || 8592 <= codePoint && codePoint <= 8601 || 8632 <= codePoint && codePoint <= 8633 || 8658 == codePoint || 8660 == codePoint || 8679 == codePoint || 8704 == codePoint || 8706 <= codePoint && codePoint <= 8707 || 8711 <= codePoint && codePoint <= 8712 || 8715 == codePoint || 8719 == codePoint || 8721 == codePoint || 8725 == codePoint || 8730 == codePoint || 8733 <= codePoint && codePoint <= 8736 || 8739 == codePoint || 8741 == codePoint || 8743 <= codePoint && codePoint <= 8748 || 8750 == codePoint || 8756 <= codePoint && codePoint <= 8759 || 8764 <= codePoint && codePoint <= 8765 || 8776 == codePoint || 8780 == codePoint || 8786 == codePoint || 8800 <= codePoint && codePoint <= 8801 || 8804 <= codePoint && codePoint <= 8807 || 8810 <= codePoint && codePoint <= 8811 || 8814 <= codePoint && codePoint <= 8815 || 8834 <= codePoint && codePoint <= 8835 || 8838 <= codePoint && codePoint <= 8839 || 8853 == codePoint || 8857 == codePoint || 8869 == codePoint || 8895 == codePoint || 8978 == codePoint || 9312 <= codePoint && codePoint <= 9449 || 9451 <= codePoint && codePoint <= 9547 || 9552 <= codePoint && codePoint <= 9587 || 9600 <= codePoint && codePoint <= 9615 || 9618 <= codePoint && codePoint <= 9621 || 9632 <= codePoint && codePoint <= 9633 || 9635 <= codePoint && codePoint <= 9641 || 9650 <= codePoint && codePoint <= 9651 || 9654 <= codePoint && codePoint <= 9655 || 9660 <= codePoint && codePoint <= 9661 || 9664 <= codePoint && codePoint <= 9665 || 9670 <= codePoint && codePoint <= 9672 || 9675 == codePoint || 9678 <= codePoint && codePoint <= 9681 || 9698 <= codePoint && codePoint <= 9701 || 9711 == codePoint || 9733 <= codePoint && codePoint <= 9734 || 9737 == codePoint || 9742 <= codePoint && codePoint <= 9743 || 9748 <= codePoint && codePoint <= 9749 || 9756 == codePoint || 9758 == codePoint || 9792 == codePoint || 9794 == codePoint || 9824 <= codePoint && codePoint <= 9825 || 9827 <= codePoint && codePoint <= 9829 || 9831 <= codePoint && codePoint <= 9834 || 9836 <= codePoint && codePoint <= 9837 || 9839 == codePoint || 9886 <= codePoint && codePoint <= 9887 || 9918 <= codePoint && codePoint <= 9919 || 9924 <= codePoint && codePoint <= 9933 || 9935 <= codePoint && codePoint <= 9953 || 9955 == codePoint || 9960 <= codePoint && codePoint <= 9983 || 10045 == codePoint || 10071 == codePoint || 10102 <= codePoint && codePoint <= 10111 || 11093 <= codePoint && codePoint <= 11097 || 12872 <= codePoint && codePoint <= 12879 || 57344 <= codePoint && codePoint <= 63743 || 65024 <= codePoint && codePoint <= 65039 || 65533 == codePoint || 127232 <= codePoint && codePoint <= 127242 || 127248 <= codePoint && codePoint <= 127277 || 127280 <= codePoint && codePoint <= 127337 || 127344 <= codePoint && codePoint <= 127386 || 917760 <= codePoint && codePoint <= 917999 || 983040 <= codePoint && codePoint <= 1048573 || 1048576 <= codePoint && codePoint <= 1114109) {
|
|
838
|
-
return "A";
|
|
839
|
-
}
|
|
840
|
-
return "N";
|
|
841
|
-
};
|
|
842
|
-
eaw.characterLength = function(character) {
|
|
843
|
-
var code = this.eastAsianWidth(character);
|
|
844
|
-
if (code == "F" || code == "W" || code == "A") {
|
|
845
|
-
return 2;
|
|
846
|
-
} else {
|
|
847
|
-
return 1;
|
|
848
|
-
}
|
|
849
|
-
};
|
|
850
|
-
function stringToArray(string) {
|
|
851
|
-
return string.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g) || [];
|
|
852
|
-
}
|
|
853
|
-
eaw.length = function(string) {
|
|
854
|
-
var characters = stringToArray(string);
|
|
855
|
-
var len = 0;
|
|
856
|
-
for (var i = 0; i < characters.length; i++) {
|
|
857
|
-
len = len + this.characterLength(characters[i]);
|
|
858
|
-
}
|
|
859
|
-
return len;
|
|
860
|
-
};
|
|
861
|
-
eaw.slice = function(text, start, end) {
|
|
862
|
-
textLen = eaw.length(text);
|
|
863
|
-
start = start ? start : 0;
|
|
864
|
-
end = end ? end : 1;
|
|
865
|
-
if (start < 0) {
|
|
866
|
-
start = textLen + start;
|
|
867
|
-
}
|
|
868
|
-
if (end < 0) {
|
|
869
|
-
end = textLen + end;
|
|
870
|
-
}
|
|
871
|
-
var result = "";
|
|
872
|
-
var eawLen = 0;
|
|
873
|
-
var chars = stringToArray(text);
|
|
874
|
-
for (var i = 0; i < chars.length; i++) {
|
|
875
|
-
var char = chars[i];
|
|
876
|
-
var charLen = eaw.length(char);
|
|
877
|
-
if (eawLen >= start - (charLen == 2 ? 1 : 0)) {
|
|
878
|
-
if (eawLen + charLen <= end) {
|
|
879
|
-
result += char;
|
|
880
|
-
} else {
|
|
881
|
-
break;
|
|
882
|
-
}
|
|
883
|
-
}
|
|
884
|
-
eawLen += charLen;
|
|
885
|
-
}
|
|
886
|
-
return result;
|
|
887
|
-
};
|
|
888
|
-
}
|
|
889
|
-
});
|
|
890
|
-
|
|
891
|
-
// ../../node_modules/list-it/lib/data-cell.js
|
|
892
|
-
var require_data_cell = __commonJS({
|
|
893
|
-
"../../node_modules/list-it/lib/data-cell.js"(exports2, module2) {
|
|
894
|
-
"use strict";
|
|
895
|
-
var eaw = require_eastasianwidth();
|
|
896
|
-
function DataCell() {
|
|
897
|
-
this.data = "";
|
|
898
|
-
}
|
|
899
|
-
module2.exports = DataCell;
|
|
900
|
-
DataCell.prototype.getData = function() {
|
|
901
|
-
return this.data;
|
|
902
|
-
};
|
|
903
|
-
DataCell.prototype.setData = function(data) {
|
|
904
|
-
this.data = data;
|
|
905
|
-
};
|
|
906
|
-
DataCell.prototype.visibleLength = function() {
|
|
907
|
-
if (typeof this.data != "string") {
|
|
908
|
-
return ("" + this.data).length;
|
|
909
|
-
}
|
|
910
|
-
return DataCell.visibleLength(this.data);
|
|
911
|
-
};
|
|
912
|
-
DataCell.visibleLength = function(data) {
|
|
913
|
-
const s = data.replace(/\x1b[^m]*m/g, "");
|
|
914
|
-
return eaw.length(s);
|
|
915
|
-
};
|
|
916
|
-
}
|
|
917
|
-
});
|
|
918
|
-
|
|
919
|
-
// ../../node_modules/list-it/lib/row.js
|
|
920
|
-
var require_row = __commonJS({
|
|
921
|
-
"../../node_modules/list-it/lib/row.js"(exports2, module2) {
|
|
922
|
-
"use strict";
|
|
923
|
-
function Row() {
|
|
924
|
-
this.cells = [];
|
|
925
|
-
this.empty = true;
|
|
926
|
-
this.fixed = false;
|
|
927
|
-
}
|
|
928
|
-
module2.exports = Row;
|
|
929
|
-
Row.prototype.getCellLength = function() {
|
|
930
|
-
return this.cells.length;
|
|
931
|
-
};
|
|
932
|
-
Row.prototype.getCell = function(idx) {
|
|
933
|
-
return this.cells[idx];
|
|
934
|
-
};
|
|
935
|
-
Row.prototype.pushCell = function(cell) {
|
|
936
|
-
if (this.isFixed()) {
|
|
937
|
-
throw "pushCell Fail, The row was already fixed.";
|
|
938
|
-
}
|
|
939
|
-
this.empty = false;
|
|
940
|
-
return this.cells.push(cell);
|
|
941
|
-
};
|
|
942
|
-
Row.prototype.fix = function() {
|
|
943
|
-
this.fixed = true;
|
|
944
|
-
};
|
|
945
|
-
Row.prototype.isEmpty = function() {
|
|
946
|
-
return this.empty;
|
|
947
|
-
};
|
|
948
|
-
Row.prototype.isFixed = function() {
|
|
949
|
-
return this.fixed;
|
|
950
|
-
};
|
|
951
|
-
}
|
|
952
|
-
});
|
|
953
|
-
|
|
954
|
-
// ../../node_modules/list-it/lib/column.js
|
|
955
|
-
var require_column = __commonJS({
|
|
956
|
-
"../../node_modules/list-it/lib/column.js"(exports2, module2) {
|
|
957
|
-
"use strict";
|
|
958
|
-
var DataCell = require_data_cell();
|
|
959
|
-
function Column() {
|
|
960
|
-
this.opt = {
|
|
961
|
-
"autoAlign": false
|
|
962
|
-
};
|
|
963
|
-
this.width = 0;
|
|
964
|
-
this.textWidth = null;
|
|
965
|
-
this.intLen = 0;
|
|
966
|
-
this.fracLen = 0;
|
|
967
|
-
this.expLen = 0;
|
|
968
|
-
this.cellAtRow = {};
|
|
969
|
-
this.header = null;
|
|
970
|
-
}
|
|
971
|
-
module2.exports = Column;
|
|
972
|
-
Column.prototype.getWidth = function() {
|
|
973
|
-
return this.width;
|
|
974
|
-
};
|
|
975
|
-
Column.prototype.setTextWidth = function(textWidth) {
|
|
976
|
-
this.textWidth = textWidth;
|
|
977
|
-
};
|
|
978
|
-
Column.prototype.setCellAt = function(row, cell) {
|
|
979
|
-
this.cellAtRow[row] = cell;
|
|
980
|
-
};
|
|
981
|
-
Column.prototype.setHeader = function(header) {
|
|
982
|
-
this.header = header;
|
|
983
|
-
};
|
|
984
|
-
Column.prototype.hasHeader = function() {
|
|
985
|
-
return this.header != null;
|
|
986
|
-
};
|
|
987
|
-
Column.prototype.updateWidth = function() {
|
|
988
|
-
const headerWidth = !this.hasHeader() ? 0 : DataCell.visibleLength("" + this.header);
|
|
989
|
-
this.width = headerWidth;
|
|
990
|
-
Object.keys(this.cellAtRow).forEach((key) => {
|
|
991
|
-
const cell = this.cellAtRow[key];
|
|
992
|
-
const data = cell.getData();
|
|
993
|
-
let width = cell.visibleLength();
|
|
994
|
-
if (typeof data == "number") {
|
|
995
|
-
if (this.opt.autoAlign) {
|
|
996
|
-
this.updateNumWidth(data);
|
|
997
|
-
width = this.getNumMaxWidth();
|
|
998
|
-
}
|
|
999
|
-
}
|
|
1000
|
-
if (width > this.width) {
|
|
1001
|
-
this.width = width;
|
|
1002
|
-
}
|
|
1003
|
-
if (typeof data == "string") {
|
|
1004
|
-
if (this.textWidth && this.textWidth > headerWidth) {
|
|
1005
|
-
if (this.width > this.textWidth) {
|
|
1006
|
-
this.width = this.textWidth;
|
|
1007
|
-
}
|
|
1008
|
-
}
|
|
1009
|
-
}
|
|
1010
|
-
});
|
|
1011
|
-
};
|
|
1012
|
-
Column.prototype.formatColumnHeader = function() {
|
|
1013
|
-
if (!this.hasHeader()) {
|
|
1014
|
-
return null;
|
|
1015
|
-
}
|
|
1016
|
-
const width = this.getWidth();
|
|
1017
|
-
const header = this.header;
|
|
1018
|
-
const headerWidth = DataCell.visibleLength("" + header);
|
|
1019
|
-
if (header.length == headerWidth && width - headerWidth <= 0) {
|
|
1020
|
-
return ("" + header).substring(0, width);
|
|
1021
|
-
}
|
|
1022
|
-
return "" + header + " ".repeat(width - headerWidth);
|
|
1023
|
-
};
|
|
1024
|
-
Column.prototype.formatCell = function(data) {
|
|
1025
|
-
const width = this.getWidth();
|
|
1026
|
-
if (this.opt.autoAlign) {
|
|
1027
|
-
if (typeof data == "number") {
|
|
1028
|
-
return this.makeAutoAlignNum(data).padStart(width, " ");
|
|
1029
|
-
}
|
|
1030
|
-
}
|
|
1031
|
-
const dataWidth = DataCell.visibleLength("" + data);
|
|
1032
|
-
if (data.length == dataWidth && width - dataWidth <= 0) {
|
|
1033
|
-
return ("" + data).substring(0, width);
|
|
1034
|
-
}
|
|
1035
|
-
return "" + data + " ".repeat(width - dataWidth);
|
|
1036
|
-
};
|
|
1037
|
-
Column.prototype.setAutoAlign = function(autoAlign) {
|
|
1038
|
-
this.opt.autoAlign = autoAlign;
|
|
1039
|
-
};
|
|
1040
|
-
Column.prototype.updateNumWidth = function(num) {
|
|
1041
|
-
const numInfo = this.analyzeNumber(num);
|
|
1042
|
-
const intLen = numInfo.intStr.length;
|
|
1043
|
-
const fracLen = numInfo.fracStr.length;
|
|
1044
|
-
const expLen = numInfo.expStr.length;
|
|
1045
|
-
if (intLen > this.intLen) {
|
|
1046
|
-
this.intLen = intLen;
|
|
1047
|
-
}
|
|
1048
|
-
if (fracLen > this.fracLen) {
|
|
1049
|
-
this.fracLen = fracLen;
|
|
1050
|
-
}
|
|
1051
|
-
if (expLen > this.expLen) {
|
|
1052
|
-
this.expLen = expLen;
|
|
1053
|
-
}
|
|
1054
|
-
};
|
|
1055
|
-
Column.prototype.getNumMaxWidth = function() {
|
|
1056
|
-
return this.intLen + this.fracLen + (this.fracLen > 0 ? 1 : 0) + this.expLen + (this.expLen > 0 ? 1 : 0);
|
|
1057
|
-
};
|
|
1058
|
-
Column.prototype.makeAutoAlignNum = function(num) {
|
|
1059
|
-
const numInfo = this.analyzeNumber(num);
|
|
1060
|
-
const intStr = numInfo.intStr.padStart(this.intLen, " ");
|
|
1061
|
-
const fracStr = numInfo.expStr != "" ? numInfo.fracStr.padEnd(this.fracLen, "0") : numInfo.fracStr.padEnd(this.fracLen, " ");
|
|
1062
|
-
const expStr = numInfo.expStr.padEnd(this.expLen, " ");
|
|
1063
|
-
if (numInfo.expStr != "") {
|
|
1064
|
-
return [intStr, ".", fracStr, "e", expStr].join("");
|
|
1065
|
-
}
|
|
1066
|
-
if (numInfo.pointPos >= 0) {
|
|
1067
|
-
if (this.expLen > 0) {
|
|
1068
|
-
return [intStr, ".", fracStr, " ", expStr].join("");
|
|
1069
|
-
}
|
|
1070
|
-
return [intStr, ".", fracStr].join("");
|
|
1071
|
-
} else if (this.fracLen == 0) {
|
|
1072
|
-
return intStr;
|
|
1073
|
-
}
|
|
1074
|
-
if (this.expLen > 0) {
|
|
1075
|
-
return [intStr, ".0", fracStr.substr(1), " ", expStr].join("");
|
|
1076
|
-
}
|
|
1077
|
-
return [intStr, ".0", fracStr.substr(1)].join("");
|
|
1078
|
-
};
|
|
1079
|
-
Column.prototype.analyzeNumber = function(num) {
|
|
1080
|
-
const s = "" + num;
|
|
1081
|
-
let intStr = "";
|
|
1082
|
-
let fracStr = "";
|
|
1083
|
-
const pointPos = s.indexOf(".");
|
|
1084
|
-
const expIndex = s.indexOf("e");
|
|
1085
|
-
if (expIndex >= 0) {
|
|
1086
|
-
if (pointPos < 0) {
|
|
1087
|
-
return {
|
|
1088
|
-
pointPos: expIndex,
|
|
1089
|
-
intStr: s.substr(0, expIndex),
|
|
1090
|
-
fracStr: "0",
|
|
1091
|
-
expStr: s.substr(expIndex + 1)
|
|
1092
|
-
};
|
|
1093
|
-
}
|
|
1094
|
-
return {
|
|
1095
|
-
pointPos,
|
|
1096
|
-
intStr: s.substr(0, pointPos),
|
|
1097
|
-
fracStr: s.substring(pointPos + 1, expIndex),
|
|
1098
|
-
expStr: s.substr(expIndex + 1)
|
|
1099
|
-
};
|
|
1100
|
-
}
|
|
1101
|
-
if (pointPos < 0) {
|
|
1102
|
-
intStr = s;
|
|
1103
|
-
} else {
|
|
1104
|
-
intStr = s.substr(0, pointPos);
|
|
1105
|
-
fracStr = s.substr(pointPos + 1);
|
|
1106
|
-
}
|
|
1107
|
-
return {
|
|
1108
|
-
"pointPos": pointPos,
|
|
1109
|
-
"intStr": intStr,
|
|
1110
|
-
"fracStr": fracStr,
|
|
1111
|
-
"expStr": ""
|
|
1112
|
-
};
|
|
1113
|
-
};
|
|
1114
|
-
}
|
|
1115
|
-
});
|
|
1116
|
-
|
|
1117
|
-
// ../../node_modules/ansi-escape-sequences/dist/index.cjs
|
|
1118
|
-
var require_dist = __commonJS({
|
|
1119
|
-
"../../node_modules/ansi-escape-sequences/dist/index.cjs"(exports2, module2) {
|
|
1120
|
-
"use strict";
|
|
1121
|
-
function isObject(input) {
|
|
1122
|
-
return typeof input === "object" && input !== null;
|
|
1123
|
-
}
|
|
1124
|
-
function isArrayLike(input) {
|
|
1125
|
-
return isObject(input) && typeof input.length === "number";
|
|
1126
|
-
}
|
|
1127
|
-
function arrayify(input) {
|
|
1128
|
-
if (Array.isArray(input)) {
|
|
1129
|
-
return input;
|
|
1130
|
-
} else if (input === void 0) {
|
|
1131
|
-
return [];
|
|
1132
|
-
} else if (isArrayLike(input) || input instanceof Set) {
|
|
1133
|
-
return Array.from(input);
|
|
1134
|
-
} else {
|
|
1135
|
-
return [input];
|
|
1136
|
-
}
|
|
1137
|
-
}
|
|
1138
|
-
var csi = "\x1B[";
|
|
1139
|
-
var ansi = {};
|
|
1140
|
-
ansi.style = {
|
|
1141
|
-
reset: "\x1B[0m",
|
|
1142
|
-
bold: "\x1B[1m",
|
|
1143
|
-
italic: "\x1B[3m",
|
|
1144
|
-
underline: "\x1B[4m",
|
|
1145
|
-
fontDefault: "\x1B[10m",
|
|
1146
|
-
font2: "\x1B[11m",
|
|
1147
|
-
font3: "\x1B[12m",
|
|
1148
|
-
font4: "\x1B[13m",
|
|
1149
|
-
font5: "\x1B[14m",
|
|
1150
|
-
font6: "\x1B[15m",
|
|
1151
|
-
imageNegative: "\x1B[7m",
|
|
1152
|
-
imagePositive: "\x1B[27m",
|
|
1153
|
-
black: "\x1B[30m",
|
|
1154
|
-
red: "\x1B[31m",
|
|
1155
|
-
green: "\x1B[32m",
|
|
1156
|
-
yellow: "\x1B[33m",
|
|
1157
|
-
blue: "\x1B[34m",
|
|
1158
|
-
magenta: "\x1B[35m",
|
|
1159
|
-
cyan: "\x1B[36m",
|
|
1160
|
-
white: "\x1B[37m",
|
|
1161
|
-
grey: "\x1B[90m",
|
|
1162
|
-
gray: "\x1B[90m",
|
|
1163
|
-
brightRed: "\x1B[91m",
|
|
1164
|
-
brightGreen: "\x1B[92m",
|
|
1165
|
-
brightYellow: "\x1B[93m",
|
|
1166
|
-
brightBlue: "\x1B[94m",
|
|
1167
|
-
brightMagenta: "\x1B[95m",
|
|
1168
|
-
brightCyan: "\x1B[96m",
|
|
1169
|
-
brightWhite: "\x1B[97m",
|
|
1170
|
-
"bg-black": "\x1B[40m",
|
|
1171
|
-
"bg-red": "\x1B[41m",
|
|
1172
|
-
"bg-green": "\x1B[42m",
|
|
1173
|
-
"bg-yellow": "\x1B[43m",
|
|
1174
|
-
"bg-blue": "\x1B[44m",
|
|
1175
|
-
"bg-magenta": "\x1B[45m",
|
|
1176
|
-
"bg-cyan": "\x1B[46m",
|
|
1177
|
-
"bg-white": "\x1B[47m",
|
|
1178
|
-
"bg-grey": "\x1B[100m",
|
|
1179
|
-
"bg-gray": "\x1B[100m",
|
|
1180
|
-
"bg-brightRed": "\x1B[101m",
|
|
1181
|
-
"bg-brightGreen": "\x1B[102m",
|
|
1182
|
-
"bg-brightYellow": "\x1B[103m",
|
|
1183
|
-
"bg-brightBlue": "\x1B[104m",
|
|
1184
|
-
"bg-brightMagenta": "\x1B[105m",
|
|
1185
|
-
"bg-brightCyan": "\x1B[106m",
|
|
1186
|
-
"bg-brightWhite": "\x1B[107m"
|
|
1187
|
-
};
|
|
1188
|
-
ansi.rgb = function(r, g, b) {
|
|
1189
|
-
return `\x1B[38;2;${r};${g};${b}m`;
|
|
1190
|
-
};
|
|
1191
|
-
ansi.bgRgb = function(r, g, b) {
|
|
1192
|
-
return `\x1B[48;2;${r};${g};${b}m`;
|
|
1193
|
-
};
|
|
1194
|
-
ansi.styles = function(styles) {
|
|
1195
|
-
styles = arrayify(styles);
|
|
1196
|
-
return styles.map(function(effect) {
|
|
1197
|
-
const rgbMatches = effect.match(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/);
|
|
1198
|
-
const bgRgbMatches = effect.match(/bg-rgb\((\d+),\s*(\d+),\s*(\d+)\)/);
|
|
1199
|
-
if (bgRgbMatches) {
|
|
1200
|
-
const [full, r, g, b] = bgRgbMatches;
|
|
1201
|
-
return ansi.bgRgb(r, g, b);
|
|
1202
|
-
} else if (rgbMatches) {
|
|
1203
|
-
const [full, r, g, b] = rgbMatches;
|
|
1204
|
-
return ansi.rgb(r, g, b);
|
|
1205
|
-
} else {
|
|
1206
|
-
return ansi.style[effect];
|
|
1207
|
-
}
|
|
1208
|
-
}).join("");
|
|
1209
|
-
};
|
|
1210
|
-
ansi.format = function(str, styleArray) {
|
|
1211
|
-
const re = /\[([\w\s-\(\),]+)\]{([^]*?)}/;
|
|
1212
|
-
let matches;
|
|
1213
|
-
str = String(str);
|
|
1214
|
-
if (!str) return "";
|
|
1215
|
-
while (matches = str.match(re)) {
|
|
1216
|
-
const inlineStyles = matches[1].split(/\s+/);
|
|
1217
|
-
const inlineString = matches[2];
|
|
1218
|
-
str = str.replace(matches[0], ansi.format(inlineString, inlineStyles));
|
|
1219
|
-
}
|
|
1220
|
-
return styleArray && styleArray.length ? ansi.styles(styleArray) + str + ansi.style.reset : str;
|
|
1221
|
-
};
|
|
1222
|
-
ansi.cursor = {
|
|
1223
|
-
/**
|
|
1224
|
-
* Moves the cursor `lines` cells up. If the cursor is already at the edge of the screen, this has no effect
|
|
1225
|
-
* @param [lines=1] {number}
|
|
1226
|
-
* @return {string}
|
|
1227
|
-
*/
|
|
1228
|
-
up: function(lines) {
|
|
1229
|
-
return csi + (lines || 1) + "A";
|
|
1230
|
-
},
|
|
1231
|
-
/**
|
|
1232
|
-
* Moves the cursor `lines` cells down. If the cursor is already at the edge of the screen, this has no effect
|
|
1233
|
-
* @param [lines=1] {number}
|
|
1234
|
-
* @return {string}
|
|
1235
|
-
*/
|
|
1236
|
-
down: function(lines) {
|
|
1237
|
-
return csi + (lines || 1) + "B";
|
|
1238
|
-
},
|
|
1239
|
-
/**
|
|
1240
|
-
* Moves the cursor `lines` cells forward. If the cursor is already at the edge of the screen, this has no effect
|
|
1241
|
-
* @param [lines=1] {number}
|
|
1242
|
-
* @return {string}
|
|
1243
|
-
*/
|
|
1244
|
-
forward: function(lines) {
|
|
1245
|
-
return csi + (lines || 1) + "C";
|
|
1246
|
-
},
|
|
1247
|
-
/**
|
|
1248
|
-
* Moves the cursor `lines` cells back. If the cursor is already at the edge of the screen, this has no effect
|
|
1249
|
-
* @param [lines=1] {number}
|
|
1250
|
-
* @return {string}
|
|
1251
|
-
*/
|
|
1252
|
-
back: function(lines) {
|
|
1253
|
-
return csi + (lines || 1) + "D";
|
|
1254
|
-
},
|
|
1255
|
-
/**
|
|
1256
|
-
* Moves cursor to beginning of the line n lines down.
|
|
1257
|
-
* @param [lines=1] {number}
|
|
1258
|
-
* @return {string}
|
|
1259
|
-
*/
|
|
1260
|
-
nextLine: function(lines) {
|
|
1261
|
-
return csi + (lines || 1) + "E";
|
|
1262
|
-
},
|
|
1263
|
-
/**
|
|
1264
|
-
* Moves cursor to beginning of the line n lines up.
|
|
1265
|
-
* @param [lines=1] {number}
|
|
1266
|
-
* @return {string}
|
|
1267
|
-
*/
|
|
1268
|
-
previousLine: function(lines) {
|
|
1269
|
-
return csi + (lines || 1) + "F";
|
|
1270
|
-
},
|
|
1271
|
-
/**
|
|
1272
|
-
* Moves the cursor to column n.
|
|
1273
|
-
* @param n {number} - column number
|
|
1274
|
-
* @return {string}
|
|
1275
|
-
*/
|
|
1276
|
-
horizontalAbsolute: function(n) {
|
|
1277
|
-
return csi + n + "G";
|
|
1278
|
-
},
|
|
1279
|
-
/**
|
|
1280
|
-
* Moves the cursor to row n, column m. The values are 1-based, and default to 1 (top left corner) if omitted.
|
|
1281
|
-
* @param n {number} - row number
|
|
1282
|
-
* @param m {number} - column number
|
|
1283
|
-
* @return {string}
|
|
1284
|
-
*/
|
|
1285
|
-
position: function(n, m) {
|
|
1286
|
-
return csi + (n || 1) + ";" + (m || 1) + "H";
|
|
1287
|
-
},
|
|
1288
|
-
/**
|
|
1289
|
-
* Hides the cursor
|
|
1290
|
-
*/
|
|
1291
|
-
hide: csi + "?25l",
|
|
1292
|
-
/**
|
|
1293
|
-
* Shows the cursor
|
|
1294
|
-
*/
|
|
1295
|
-
show: csi + "?25h"
|
|
1296
|
-
};
|
|
1297
|
-
ansi.erase = {
|
|
1298
|
-
/**
|
|
1299
|
-
* Clears part of the screen. If n is 0 (or missing), clear from cursor to end of screen. If n is 1, clear from cursor to beginning of the screen. If n is 2, clear entire screen.
|
|
1300
|
-
* @param n {number}
|
|
1301
|
-
* @return {string}
|
|
1302
|
-
*/
|
|
1303
|
-
display: function(n) {
|
|
1304
|
-
return csi + (n || 0) + "J";
|
|
1305
|
-
},
|
|
1306
|
-
/**
|
|
1307
|
-
* Erases part of the line. If n is zero (or missing), clear from cursor to the end of the line. If n is one, clear from cursor to beginning of the line. If n is two, clear entire line. Cursor position does not change.
|
|
1308
|
-
* @param n {number}
|
|
1309
|
-
* @return {string}
|
|
1310
|
-
*/
|
|
1311
|
-
inLine: function(n) {
|
|
1312
|
-
return csi + (n || 0) + "K";
|
|
1313
|
-
}
|
|
1314
|
-
};
|
|
1315
|
-
module2.exports = ansi;
|
|
1316
|
-
}
|
|
1317
|
-
});
|
|
1318
|
-
|
|
1319
|
-
// ../../node_modules/list-it/lib/list-it-buffer.js
|
|
1320
|
-
var require_list_it_buffer = __commonJS({
|
|
1321
|
-
"../../node_modules/list-it/lib/list-it-buffer.js"(exports2, module2) {
|
|
1322
|
-
"use strict";
|
|
1323
|
-
var debug = require_src()("list-it-buffer");
|
|
1324
|
-
var DataCell = require_data_cell();
|
|
1325
|
-
var Row = require_row();
|
|
1326
|
-
var Column = require_column();
|
|
1327
|
-
var ansi = require_dist();
|
|
1328
|
-
function ListItBuffer(opt) {
|
|
1329
|
-
opt = opt || {};
|
|
1330
|
-
this.opt = {
|
|
1331
|
-
"autoAlign": true,
|
|
1332
|
-
"columnWidth": null,
|
|
1333
|
-
"header": null,
|
|
1334
|
-
"headerBold": false,
|
|
1335
|
-
"headerColor": "",
|
|
1336
|
-
"headerUnderline": false
|
|
1337
|
-
};
|
|
1338
|
-
if (opt.header != null && !Array.isArray(opt.header)) {
|
|
1339
|
-
throw new Error([
|
|
1340
|
-
`Invalid header was specified. It must be an array, but (${JSON.stringify(opt.header)}):${typeof opt.header} was specified.`
|
|
1341
|
-
].join(" "));
|
|
1342
|
-
}
|
|
1343
|
-
if (opt.headerColor && !(opt.headerColor in COLORS)) {
|
|
1344
|
-
throw new Error([
|
|
1345
|
-
`Invalid color ${JSON.stringify(opt.headerColor)} was specified.`,
|
|
1346
|
-
"Available color names:",
|
|
1347
|
-
...AVAILABLE_COLORS.map((color) => `* ${JSON.stringify(color)}`)
|
|
1348
|
-
].join("\n"));
|
|
1349
|
-
}
|
|
1350
|
-
Object.keys(this.opt).forEach((key) => {
|
|
1351
|
-
if (key in opt) {
|
|
1352
|
-
this.opt[key] = opt[key];
|
|
1353
|
-
}
|
|
1354
|
-
});
|
|
1355
|
-
this.lines = [];
|
|
1356
|
-
this.columns = [];
|
|
1357
|
-
this.columnWidth = this.opt.columnWidth;
|
|
1358
|
-
if (this.opt.header) {
|
|
1359
|
-
this.setHeaderRow(this.opt.header);
|
|
1360
|
-
}
|
|
1361
|
-
}
|
|
1362
|
-
module2.exports = ListItBuffer;
|
|
1363
|
-
ListItBuffer.prototype.nl = function() {
|
|
1364
|
-
const lastRowIndex = this.lines.length - 1;
|
|
1365
|
-
if (lastRowIndex >= 0 && !this.lines[lastRowIndex].isFixed()) {
|
|
1366
|
-
this.lines[lastRowIndex].fix();
|
|
1367
|
-
}
|
|
1368
|
-
this.pushNewRow();
|
|
1369
|
-
return this;
|
|
1370
|
-
};
|
|
1371
|
-
ListItBuffer.prototype.d = function(data) {
|
|
1372
|
-
if (arguments.length > 1) {
|
|
1373
|
-
const array = Array.apply(null, arguments);
|
|
1374
|
-
if (ListItBuffer.isMultiDimensionalArray(array)) {
|
|
1375
|
-
array.forEach((row) => this.addRow(row));
|
|
1376
|
-
} else {
|
|
1377
|
-
array.forEach((data2) => this.d(data2));
|
|
1378
|
-
}
|
|
1379
|
-
return this;
|
|
1380
|
-
}
|
|
1381
|
-
if (Array.isArray(data)) {
|
|
1382
|
-
if (ListItBuffer.isMultiDimensionalArray(data)) {
|
|
1383
|
-
data.forEach((row) => this.addRow(row));
|
|
1384
|
-
} else if (ListItBuffer.isObjectArray(data)) {
|
|
1385
|
-
data = objectArrayToTable(data);
|
|
1386
|
-
if (!this.header && (this.opt.headerBold || this.opt.headerColor || this.opt.headerUnderline)) {
|
|
1387
|
-
this.setHeaderRow(data.shift());
|
|
1388
|
-
}
|
|
1389
|
-
data.forEach((row) => this.addRow(row));
|
|
1390
|
-
} else {
|
|
1391
|
-
this.addRow(data);
|
|
1392
|
-
}
|
|
1393
|
-
return this;
|
|
1394
|
-
}
|
|
1395
|
-
const rowidx = this.lines.length - 1;
|
|
1396
|
-
if (rowidx < 0 || this.lines[rowidx].isFixed()) {
|
|
1397
|
-
this.pushNewRow();
|
|
1398
|
-
}
|
|
1399
|
-
const cell = new DataCell();
|
|
1400
|
-
cell.setData(data);
|
|
1401
|
-
const iRow = this.lines.length - 1;
|
|
1402
|
-
let iCol = this.lines[iRow].getCellLength();
|
|
1403
|
-
if (iCol >= this.columns.length) {
|
|
1404
|
-
this.addColumn();
|
|
1405
|
-
}
|
|
1406
|
-
this.columns[iCol].setCellAt(iRow, cell);
|
|
1407
|
-
this.lines[iRow].pushCell(cell);
|
|
1408
|
-
return this;
|
|
1409
|
-
};
|
|
1410
|
-
ListItBuffer.isMultiDimensionalArray = function(arr) {
|
|
1411
|
-
if (!Array.isArray(arr)) {
|
|
1412
|
-
throw Error("The parameter arr must be array");
|
|
1413
|
-
}
|
|
1414
|
-
for (let element of arr) {
|
|
1415
|
-
if (!Array.isArray(element)) {
|
|
1416
|
-
return false;
|
|
1417
|
-
}
|
|
1418
|
-
}
|
|
1419
|
-
return true;
|
|
1420
|
-
};
|
|
1421
|
-
ListItBuffer.isObjectArray = function(arr) {
|
|
1422
|
-
if (!Array.isArray(arr)) {
|
|
1423
|
-
throw Error("The parameter arr must be array");
|
|
1424
|
-
}
|
|
1425
|
-
const ctor = arr[0].constructor;
|
|
1426
|
-
for (let element of arr) {
|
|
1427
|
-
if (typeof element != "object") {
|
|
1428
|
-
return false;
|
|
1429
|
-
} else {
|
|
1430
|
-
if (element.constructor.name != ctor.name) {
|
|
1431
|
-
return false;
|
|
1432
|
-
}
|
|
1433
|
-
}
|
|
1434
|
-
}
|
|
1435
|
-
return true;
|
|
1436
|
-
};
|
|
1437
|
-
ListItBuffer.prototype.addRow = function(row) {
|
|
1438
|
-
row.forEach((col) => {
|
|
1439
|
-
switch (typeof col) {
|
|
1440
|
-
case "string":
|
|
1441
|
-
case "number":
|
|
1442
|
-
this.d(col);
|
|
1443
|
-
break;
|
|
1444
|
-
default:
|
|
1445
|
-
this.d(col != null ? col.toString() : "(null)");
|
|
1446
|
-
break;
|
|
1447
|
-
}
|
|
1448
|
-
});
|
|
1449
|
-
this.nl();
|
|
1450
|
-
};
|
|
1451
|
-
ListItBuffer.prototype.pushNewRow = function() {
|
|
1452
|
-
this.lines.push(new Row());
|
|
1453
|
-
};
|
|
1454
|
-
ListItBuffer.prototype.toString = function() {
|
|
1455
|
-
const rows = [];
|
|
1456
|
-
this.columns.forEach((column, iCol) => {
|
|
1457
|
-
if (this.header != null) {
|
|
1458
|
-
column.setHeader(this.header[iCol] || "");
|
|
1459
|
-
}
|
|
1460
|
-
column.setTextWidth(this.getColumnWidth(iCol));
|
|
1461
|
-
column.updateWidth();
|
|
1462
|
-
});
|
|
1463
|
-
if (this.header != null) {
|
|
1464
|
-
const headerLine = this.applyHeaderStyleOption(
|
|
1465
|
-
this.columns.map((column) => column.formatColumnHeader()).join(" ")
|
|
1466
|
-
);
|
|
1467
|
-
rows.push(headerLine);
|
|
1468
|
-
const headerUnderline = this.generateHeaderUnderline();
|
|
1469
|
-
if (headerUnderline) {
|
|
1470
|
-
rows.push(headerUnderline);
|
|
1471
|
-
}
|
|
1472
|
-
}
|
|
1473
|
-
this.lines.forEach((line) => {
|
|
1474
|
-
if (line.isFixed() || !line.isEmpty()) {
|
|
1475
|
-
if (line.isEmpty()) {
|
|
1476
|
-
rows.push("\n");
|
|
1477
|
-
} else {
|
|
1478
|
-
rows.push(this.columns.map((column, iCol) => {
|
|
1479
|
-
const cell = line.getCell(iCol);
|
|
1480
|
-
const data = cell.getData();
|
|
1481
|
-
return column.formatCell(data);
|
|
1482
|
-
}).join(" "));
|
|
1483
|
-
}
|
|
1484
|
-
}
|
|
1485
|
-
});
|
|
1486
|
-
return rows.join("\n");
|
|
1487
|
-
};
|
|
1488
|
-
var COLORS = {};
|
|
1489
|
-
var BGCOLORS = {};
|
|
1490
|
-
Object.keys(ansi.style).forEach((key) => {
|
|
1491
|
-
const value = ansi.style[key];
|
|
1492
|
-
if (/^bg-/.test(key)) {
|
|
1493
|
-
BGCOLORS[key.substr(3)] = value;
|
|
1494
|
-
} else {
|
|
1495
|
-
COLORS[key] = value;
|
|
1496
|
-
debug(`COLOR-KEY: ${key}`);
|
|
1497
|
-
}
|
|
1498
|
-
});
|
|
1499
|
-
Object.keys(COLORS).forEach((key) => {
|
|
1500
|
-
if (!(key in BGCOLORS)) {
|
|
1501
|
-
delete COLORS[key];
|
|
1502
|
-
debug(`remove COLOR-KEY: ${key}`);
|
|
1503
|
-
}
|
|
1504
|
-
});
|
|
1505
|
-
var AVAILABLE_COLORS = Object.keys(COLORS);
|
|
1506
|
-
debug(`AVAILABLE_COLORS:${JSON.stringify(AVAILABLE_COLORS)}`);
|
|
1507
|
-
ListItBuffer.prototype.applyHeaderStyleOption = function(line) {
|
|
1508
|
-
if (!this.opt.headerBold && !this.opt.headerColor) {
|
|
1509
|
-
return line;
|
|
1510
|
-
}
|
|
1511
|
-
const textBuffer = [];
|
|
1512
|
-
if (this.opt.headerBold) {
|
|
1513
|
-
textBuffer.push(ansi.style.bold);
|
|
1514
|
-
}
|
|
1515
|
-
if (this.opt.headerColor) {
|
|
1516
|
-
textBuffer.push(COLORS[this.opt.headerColor]);
|
|
1517
|
-
}
|
|
1518
|
-
textBuffer.push(line);
|
|
1519
|
-
textBuffer.push(ansi.style.reset);
|
|
1520
|
-
return textBuffer.join("");
|
|
1521
|
-
};
|
|
1522
|
-
ListItBuffer.prototype.generateHeaderUnderline = function() {
|
|
1523
|
-
if (!this.opt.headerUnderline) {
|
|
1524
|
-
return null;
|
|
1525
|
-
}
|
|
1526
|
-
if (this.header == null) {
|
|
1527
|
-
return null;
|
|
1528
|
-
}
|
|
1529
|
-
return this.columns.map(
|
|
1530
|
-
(column) => "-".repeat(column.getWidth())
|
|
1531
|
-
).join(" ");
|
|
1532
|
-
};
|
|
1533
|
-
function objectArrayToTable(objects) {
|
|
1534
|
-
const keys = Object.keys(objects[0]);
|
|
1535
|
-
const body = objects.map((item) => keys.map((key) => {
|
|
1536
|
-
if (item[key] != null && typeof item[key] == "object" && item[key].constructor.name == "Date") {
|
|
1537
|
-
return item[key].toISOString();
|
|
1538
|
-
}
|
|
1539
|
-
return item[key];
|
|
1540
|
-
}));
|
|
1541
|
-
return [keys, ...body];
|
|
1542
|
-
}
|
|
1543
|
-
ListItBuffer.prototype.setColumnWidth = function(indexOfColumns, width) {
|
|
1544
|
-
this.columnWidth = this.columnWidth || [];
|
|
1545
|
-
if (typeof indexOfColumns !== "number") {
|
|
1546
|
-
throw new Error("indexOfColumns must be a number");
|
|
1547
|
-
}
|
|
1548
|
-
if (!width) {
|
|
1549
|
-
delete this.columnWidth[indexOfColumns];
|
|
1550
|
-
} else {
|
|
1551
|
-
if (typeof width !== "number") {
|
|
1552
|
-
throw new Error("width must be a number");
|
|
1553
|
-
}
|
|
1554
|
-
this.columnWidth[indexOfColumns] = width;
|
|
1555
|
-
}
|
|
1556
|
-
return this;
|
|
1557
|
-
};
|
|
1558
|
-
ListItBuffer.prototype.setColumnWidthAll = function(widthForAll) {
|
|
1559
|
-
if (widthForAll != null && !Array.isArray(widthForAll) && typeof widthForAll !== "number") {
|
|
1560
|
-
throw new Error(
|
|
1561
|
-
"widthForAll must be one of a null, an Array or a number"
|
|
1562
|
-
);
|
|
1563
|
-
}
|
|
1564
|
-
if (Array.isArray(widthForAll)) {
|
|
1565
|
-
for (let i = 0; i < widthForAll.length; i++) {
|
|
1566
|
-
const width = widthForAll[i];
|
|
1567
|
-
if (width != void 0 && typeof width !== "number") {
|
|
1568
|
-
throw new Error(
|
|
1569
|
-
`widthForAll[${i}] must be an undefined or a number`
|
|
1570
|
-
);
|
|
1571
|
-
}
|
|
1572
|
-
}
|
|
1573
|
-
}
|
|
1574
|
-
this.columnWidth = widthForAll;
|
|
1575
|
-
return this;
|
|
1576
|
-
};
|
|
1577
|
-
ListItBuffer.prototype.getColumnWidth = function(indexOfColumns) {
|
|
1578
|
-
if (Array.isArray(this.columnWidth)) {
|
|
1579
|
-
return this.columnWidth[indexOfColumns];
|
|
1580
|
-
}
|
|
1581
|
-
return this.columnWidth;
|
|
1582
|
-
};
|
|
1583
|
-
ListItBuffer.prototype.setHeaderRow = function(header) {
|
|
1584
|
-
if (header && !Array.isArray(header)) {
|
|
1585
|
-
throw new Error([
|
|
1586
|
-
"The header must be an array,",
|
|
1587
|
-
`but ${typeof header} was specified.`,
|
|
1588
|
-
`header: ${JSON.stringify(header)}`
|
|
1589
|
-
].join(" "));
|
|
1590
|
-
}
|
|
1591
|
-
this.header = header;
|
|
1592
|
-
if (this.header == null) {
|
|
1593
|
-
this.columns.forEach((column) => column.setHeader(null));
|
|
1594
|
-
} else {
|
|
1595
|
-
this.header.forEach((headerText, iCol) => {
|
|
1596
|
-
if (iCol >= this.columns.length) {
|
|
1597
|
-
this.addColumn(headerText);
|
|
1598
|
-
}
|
|
1599
|
-
});
|
|
1600
|
-
}
|
|
1601
|
-
return this;
|
|
1602
|
-
};
|
|
1603
|
-
ListItBuffer.prototype.addColumn = function(headerText) {
|
|
1604
|
-
const column = new Column();
|
|
1605
|
-
if (headerText) {
|
|
1606
|
-
column.setHeader(headerText);
|
|
1607
|
-
}
|
|
1608
|
-
if (this.opt.autoAlign) {
|
|
1609
|
-
column.setAutoAlign(true);
|
|
1610
|
-
}
|
|
1611
|
-
this.columns.push(column);
|
|
1612
|
-
};
|
|
1613
|
-
}
|
|
1614
|
-
});
|
|
1615
|
-
|
|
1616
|
-
// ../../node_modules/list-it/index.js
|
|
1617
|
-
var require_list_it = __commonJS({
|
|
1618
|
-
"../../node_modules/list-it/index.js"(exports2, module2) {
|
|
1619
|
-
"use strict";
|
|
1620
|
-
var ListItBuffer = require_list_it_buffer();
|
|
1621
|
-
function ListIt2(opt) {
|
|
1622
|
-
ListItBuffer.call(this, opt);
|
|
1623
|
-
}
|
|
1624
|
-
ListIt2.prototype = new ListItBuffer();
|
|
1625
|
-
ListIt2.buffer = function(opt) {
|
|
1626
|
-
opt = opt || {};
|
|
1627
|
-
if (!("autoAlign" in opt)) {
|
|
1628
|
-
opt.autoAlign = false;
|
|
1629
|
-
}
|
|
1630
|
-
return new ListIt2(opt);
|
|
1631
|
-
};
|
|
1632
|
-
module2.exports = ListIt2;
|
|
1633
|
-
}
|
|
1634
|
-
});
|
|
1635
|
-
|
|
1636
30
|
// src/scripts/aiTrain.ts
|
|
1637
31
|
var aiTrain_exports = {};
|
|
1638
32
|
__export(aiTrain_exports, {
|
|
@@ -1641,11 +35,12 @@ __export(aiTrain_exports, {
|
|
|
1641
35
|
module.exports = __toCommonJS(aiTrain_exports);
|
|
1642
36
|
var import_args = __toESM(require("args"));
|
|
1643
37
|
var import_chalk = __toESM(require("chalk"));
|
|
1644
|
-
var
|
|
38
|
+
var import_promises3 = __toESM(require("fs/promises"));
|
|
1645
39
|
var import_path = __toESM(require("path"));
|
|
1646
40
|
var import_progress = __toESM(require("progress"));
|
|
1647
41
|
var import_constants = require("@tradejs/core/constants");
|
|
1648
42
|
var import_ai = require("@tradejs/infra/ai");
|
|
43
|
+
var import_strategyReleaseEvidence = require("@tradejs/infra/strategyReleaseEvidence");
|
|
1649
44
|
var import_redis = require("@tradejs/infra/redis");
|
|
1650
45
|
var import_ai2 = require("@tradejs/node/ai");
|
|
1651
46
|
var import_constants2 = require("@tradejs/node/constants");
|
|
@@ -1939,7 +334,10 @@ var isDirectionMatchAtThreshold = (evaluation, threshold) => {
|
|
|
1939
334
|
return directionMatches === true && evaluation.quality != null && evaluation.quality >= threshold;
|
|
1940
335
|
};
|
|
1941
336
|
var summarizeAiTrainEvaluationsByDirection = (evaluations) => {
|
|
1942
|
-
const grouped = /* @__PURE__ */ new Map(
|
|
337
|
+
const grouped = /* @__PURE__ */ new Map([
|
|
338
|
+
["LONG", []],
|
|
339
|
+
["SHORT", []]
|
|
340
|
+
]);
|
|
1943
341
|
for (const evaluation of evaluations) {
|
|
1944
342
|
const direction = typeof evaluation.direction === "string" && evaluation.direction.trim() ? evaluation.direction : "UNKNOWN";
|
|
1945
343
|
const bucket = grouped.get(direction) ?? [];
|
|
@@ -2411,6 +809,14 @@ var buildAiChartSnapshot = (params) => {
|
|
|
2411
809
|
strategies: cards
|
|
2412
810
|
};
|
|
2413
811
|
};
|
|
812
|
+
var buildAiChartPersistenceReceipt = (params) => ({
|
|
813
|
+
persisted: true,
|
|
814
|
+
mode: params.snapshot.mode,
|
|
815
|
+
datasetId: params.datasetId,
|
|
816
|
+
generatedAt: params.snapshot.generatedAt,
|
|
817
|
+
cardIds: params.snapshot.strategies.map((card) => card.cardId),
|
|
818
|
+
ttlMs: params.ttlMs
|
|
819
|
+
});
|
|
2414
820
|
|
|
2415
821
|
// src/lib/aiTrainEvaluationDump.ts
|
|
2416
822
|
var BASE_CONTEXT_FEATURE_SECTIONS = [
|
|
@@ -2554,11 +960,56 @@ var resolveAiTrainRecentLimit = ({
|
|
|
2554
960
|
|
|
2555
961
|
// src/lib/aiTrainResearch.ts
|
|
2556
962
|
var import_node_child_process = require("child_process");
|
|
963
|
+
var import_node_crypto2 = require("crypto");
|
|
964
|
+
var import_promises2 = __toESM(require("fs/promises"));
|
|
965
|
+
var import_node_path2 = __toESM(require("path"));
|
|
966
|
+
var import_strategies = require("@tradejs/node/strategies");
|
|
967
|
+
var import_types = require("@tradejs/types");
|
|
968
|
+
|
|
969
|
+
// src/lib/strategyGateFingerprint.ts
|
|
2557
970
|
var import_node_crypto = require("crypto");
|
|
2558
971
|
var import_promises = __toESM(require("fs/promises"));
|
|
2559
972
|
var import_node_path = __toESM(require("path"));
|
|
2560
|
-
var
|
|
2561
|
-
|
|
973
|
+
var gateFingerprintRelativePaths = (strategyName) => [
|
|
974
|
+
`packages/strategies/src/${strategyName}/adapters/ai.ts`,
|
|
975
|
+
`packages/strategies/src/${strategyName}/guardrails.ts`,
|
|
976
|
+
`packages/strategies/src/${strategyName}/pockets.ts`,
|
|
977
|
+
`packages/strategies/src/${strategyName}/config.ts`,
|
|
978
|
+
"packages/strategies/src/shared/localAiGate.ts",
|
|
979
|
+
"packages/node/src/ai.ts",
|
|
980
|
+
"packages/core/src/utils/strategyHelpers/signalBuilders.ts"
|
|
981
|
+
];
|
|
982
|
+
var resolveStrategyGateFingerprint = async ({
|
|
983
|
+
projectRoot,
|
|
984
|
+
strategyName,
|
|
985
|
+
gitSha
|
|
986
|
+
}) => {
|
|
987
|
+
const candidates = await Promise.all(
|
|
988
|
+
gateFingerprintRelativePaths(strategyName).map(async (relativePath) => {
|
|
989
|
+
const content = await import_promises.default.readFile(import_node_path.default.join(projectRoot, relativePath)).catch(() => null);
|
|
990
|
+
return content == null ? null : { relativePath, content };
|
|
991
|
+
})
|
|
992
|
+
);
|
|
993
|
+
const sourceEntries = candidates.filter(
|
|
994
|
+
(entry) => entry != null
|
|
995
|
+
);
|
|
996
|
+
const hash = (0, import_node_crypto.createHash)("sha256");
|
|
997
|
+
hash.update(strategyName);
|
|
998
|
+
if (sourceEntries.length) {
|
|
999
|
+
for (const entry of sourceEntries) {
|
|
1000
|
+
hash.update(entry.relativePath);
|
|
1001
|
+
hash.update(entry.content);
|
|
1002
|
+
}
|
|
1003
|
+
} else {
|
|
1004
|
+
hash.update(gitSha ?? "unknown-git-sha");
|
|
1005
|
+
}
|
|
1006
|
+
return {
|
|
1007
|
+
gateFingerprint: hash.digest("hex").slice(0, 16),
|
|
1008
|
+
gateFingerprintFiles: sourceEntries.map((entry) => entry.relativePath)
|
|
1009
|
+
};
|
|
1010
|
+
};
|
|
1011
|
+
|
|
1012
|
+
// src/lib/aiTrainResearch.ts
|
|
2562
1013
|
var DAY_MS2 = 24 * 60 * 60 * 1e3;
|
|
2563
1014
|
var RESEARCH_CONTEXT_ENV_KEYS = [
|
|
2564
1015
|
"AI_MODE",
|
|
@@ -2598,9 +1049,9 @@ var writeAiTrainResearchSnapshot = async ({
|
|
|
2598
1049
|
outputPath,
|
|
2599
1050
|
result
|
|
2600
1051
|
}) => {
|
|
2601
|
-
const resolvedPath =
|
|
2602
|
-
await
|
|
2603
|
-
await
|
|
1052
|
+
const resolvedPath = import_node_path2.default.resolve(outputPath);
|
|
1053
|
+
await import_promises2.default.mkdir(import_node_path2.default.dirname(resolvedPath), { recursive: true });
|
|
1054
|
+
await import_promises2.default.writeFile(
|
|
2604
1055
|
resolvedPath,
|
|
2605
1056
|
`${JSON.stringify(result, null, 2)}
|
|
2606
1057
|
`,
|
|
@@ -2619,7 +1070,7 @@ var normalizeForStableJson = (value) => {
|
|
|
2619
1070
|
}
|
|
2620
1071
|
return value;
|
|
2621
1072
|
};
|
|
2622
|
-
var fingerprintResearchValue = (value) => (0,
|
|
1073
|
+
var fingerprintResearchValue = (value) => (0, import_node_crypto2.createHash)("sha256").update(JSON.stringify(normalizeForStableJson(value))).digest("hex").slice(0, 16);
|
|
2623
1074
|
var getTimestampRange = (evaluations) => {
|
|
2624
1075
|
let minTimestamp = null;
|
|
2625
1076
|
let maxTimestamp = null;
|
|
@@ -2684,17 +1135,11 @@ var summarizeAiTrainTerminalWindows = (evaluations, windowDays) => {
|
|
|
2684
1135
|
selected: selected.length,
|
|
2685
1136
|
approvedPerCalendarDay: outcome.approved / coverageDays,
|
|
2686
1137
|
outcome,
|
|
1138
|
+
byDirection: summarizeAiTrainEvaluationsByDirection(selected),
|
|
2687
1139
|
topRejectReasons: summarizeAiTrainRejectReasons(selected)
|
|
2688
1140
|
};
|
|
2689
1141
|
});
|
|
2690
1142
|
};
|
|
2691
|
-
var readOptionalFile = async (filePath) => {
|
|
2692
|
-
try {
|
|
2693
|
-
return await import_promises.default.readFile(filePath);
|
|
2694
|
-
} catch {
|
|
2695
|
-
return null;
|
|
2696
|
-
}
|
|
2697
|
-
};
|
|
2698
1143
|
var getGitLineage = (projectRoot) => {
|
|
2699
1144
|
try {
|
|
2700
1145
|
const gitSha = (0, import_node_child_process.execFileSync)("git", ["rev-parse", "HEAD"], {
|
|
@@ -2716,53 +1161,20 @@ var getGitLineage = (projectRoot) => {
|
|
|
2716
1161
|
return { gitSha: null, gitDirty: null };
|
|
2717
1162
|
}
|
|
2718
1163
|
};
|
|
2719
|
-
var resolveGateFingerprint = async (projectRoot, strategyName, gitSha) => {
|
|
2720
|
-
const relativeCandidates = [
|
|
2721
|
-
`packages/strategies/src/${strategyName}/adapters/ai.ts`,
|
|
2722
|
-
`packages/strategies/src/${strategyName}/guardrails.ts`,
|
|
2723
|
-
`packages/strategies/src/${strategyName}/pockets.ts`,
|
|
2724
|
-
`packages/strategies/src/${strategyName}/config.ts`,
|
|
2725
|
-
"packages/strategies/src/shared/localAiGate.ts",
|
|
2726
|
-
"packages/node/src/ai.ts"
|
|
2727
|
-
];
|
|
2728
|
-
const optionalSourceEntries = await Promise.all(
|
|
2729
|
-
relativeCandidates.map(async (relativePath) => {
|
|
2730
|
-
const content = await readOptionalFile(
|
|
2731
|
-
import_node_path.default.join(projectRoot, relativePath)
|
|
2732
|
-
);
|
|
2733
|
-
return content == null ? null : { relativePath, content };
|
|
2734
|
-
})
|
|
2735
|
-
);
|
|
2736
|
-
const sourceEntries = [];
|
|
2737
|
-
for (const entry of optionalSourceEntries) {
|
|
2738
|
-
if (entry != null) {
|
|
2739
|
-
sourceEntries.push(entry);
|
|
2740
|
-
}
|
|
2741
|
-
}
|
|
2742
|
-
const hash = (0, import_node_crypto.createHash)("sha256");
|
|
2743
|
-
hash.update(strategyName);
|
|
2744
|
-
if (sourceEntries.length) {
|
|
2745
|
-
for (const entry of sourceEntries) {
|
|
2746
|
-
hash.update(entry.relativePath);
|
|
2747
|
-
hash.update(entry.content);
|
|
2748
|
-
}
|
|
2749
|
-
} else {
|
|
2750
|
-
hash.update(gitSha ?? "unknown-git-sha");
|
|
2751
|
-
}
|
|
2752
|
-
return {
|
|
2753
|
-
gateFingerprint: hash.digest("hex").slice(0, 16),
|
|
2754
|
-
gateFingerprintFiles: sourceEntries.map((entry) => entry.relativePath)
|
|
2755
|
-
};
|
|
2756
|
-
};
|
|
2757
1164
|
var buildAiTrainLineage = async ({
|
|
2758
1165
|
projectRoot,
|
|
2759
1166
|
strategyName,
|
|
2760
1167
|
configIds,
|
|
2761
1168
|
runContext,
|
|
1169
|
+
sourceSha256s = [],
|
|
2762
1170
|
env = process.env
|
|
2763
1171
|
}) => {
|
|
2764
1172
|
const { gitSha, gitDirty } = getGitLineage(projectRoot);
|
|
2765
|
-
const gate = await
|
|
1173
|
+
const gate = await resolveStrategyGateFingerprint({
|
|
1174
|
+
projectRoot,
|
|
1175
|
+
strategyName,
|
|
1176
|
+
gitSha
|
|
1177
|
+
});
|
|
2766
1178
|
const normalizedConfigIds = [...new Set(configIds.filter(Boolean))].sort();
|
|
2767
1179
|
const hyperliquidPerpUniverseFingerprint = typeof import_strategies.getHyperliquidPerpUniverseSnapshot === "function" ? (0, import_strategies.getHyperliquidPerpUniverseSnapshot)().fingerprint : null;
|
|
2768
1180
|
const hyperliquidWhaleRegistryFingerprint = typeof import_strategies.getHyperliquidWhaleRegistrySnapshot === "function" ? (0, import_strategies.getHyperliquidWhaleRegistrySnapshot)().fingerprint : null;
|
|
@@ -2782,7 +1194,8 @@ var buildAiTrainLineage = async ({
|
|
|
2782
1194
|
configIdsFingerprint: fingerprintResearchValue(normalizedConfigIds),
|
|
2783
1195
|
configIds: normalizedConfigIds,
|
|
2784
1196
|
contextFingerprint: fingerprintResearchValue(context),
|
|
2785
|
-
context
|
|
1197
|
+
context,
|
|
1198
|
+
sourceSha256s: [...new Set(sourceSha256s.filter(Boolean))].sort()
|
|
2786
1199
|
};
|
|
2787
1200
|
};
|
|
2788
1201
|
|
|
@@ -2970,7 +1383,7 @@ var extractSignalFromAiDatasetRow = (row) => {
|
|
|
2970
1383
|
};
|
|
2971
1384
|
|
|
2972
1385
|
// src/scripts/aiTrain.ts
|
|
2973
|
-
var ListIt =
|
|
1386
|
+
var ListIt = require("list-it");
|
|
2974
1387
|
import_args.default.example(
|
|
2975
1388
|
"yarn ai-train -n 50 --minQuality 4",
|
|
2976
1389
|
"Replay latest AI prompt dataset and measure approval accuracy"
|
|
@@ -3156,7 +1569,7 @@ var listMergedFiles = async (params) => {
|
|
|
3156
1569
|
const { outDir, strategyName } = params;
|
|
3157
1570
|
let entries = [];
|
|
3158
1571
|
try {
|
|
3159
|
-
entries = await
|
|
1572
|
+
entries = await import_promises3.default.readdir(outDir);
|
|
3160
1573
|
} catch {
|
|
3161
1574
|
return [];
|
|
3162
1575
|
}
|
|
@@ -3612,6 +2025,7 @@ var main = async () => {
|
|
|
3612
2025
|
projectRoot: String(process.env.PROJECT_CWD || process.cwd()).trim() || process.cwd(),
|
|
3613
2026
|
strategyName,
|
|
3614
2027
|
configIds: finalEvaluations.map((evaluation) => evaluation.configId),
|
|
2028
|
+
sourceSha256s: await Promise.all(filePaths.map(import_strategyReleaseEvidence.strategyEvidenceFileSha256)),
|
|
3615
2029
|
runContext: {
|
|
3616
2030
|
mode: localOnly ? "local-deterministic" : "llm",
|
|
3617
2031
|
model: localOnly ? "local-deterministic" : model,
|
|
@@ -3655,22 +2069,17 @@ var main = async () => {
|
|
|
3655
2069
|
topRejectReasons,
|
|
3656
2070
|
lineage
|
|
3657
2071
|
},
|
|
2072
|
+
chart: null,
|
|
3658
2073
|
errors: {
|
|
3659
2074
|
failed,
|
|
3660
2075
|
providerErrors: errorMessages
|
|
3661
2076
|
}
|
|
3662
2077
|
};
|
|
3663
|
-
if (jsonOutputPath) {
|
|
3664
|
-
await writeAiTrainResearchSnapshot({
|
|
3665
|
-
outputPath: jsonOutputPath,
|
|
3666
|
-
result
|
|
3667
|
-
});
|
|
3668
|
-
}
|
|
3669
2078
|
if (dumpEvaluationsPath) {
|
|
3670
|
-
await
|
|
2079
|
+
await import_promises3.default.mkdir(import_path.default.dirname(import_path.default.resolve(dumpEvaluationsPath)), {
|
|
3671
2080
|
recursive: true
|
|
3672
2081
|
});
|
|
3673
|
-
await
|
|
2082
|
+
await import_promises3.default.writeFile(
|
|
3674
2083
|
dumpEvaluationsPath,
|
|
3675
2084
|
finalEvaluations.map(
|
|
3676
2085
|
(evaluation) => JSON.stringify({
|
|
@@ -3698,7 +2107,7 @@ var main = async () => {
|
|
|
3698
2107
|
);
|
|
3699
2108
|
}
|
|
3700
2109
|
if (saveChart) {
|
|
3701
|
-
await persistAiChartSnapshot({
|
|
2110
|
+
const snapshot = await persistAiChartSnapshot({
|
|
3702
2111
|
strategyName,
|
|
3703
2112
|
evaluatedRows,
|
|
3704
2113
|
minQuality,
|
|
@@ -3707,6 +2116,17 @@ var main = async () => {
|
|
|
3707
2116
|
userName,
|
|
3708
2117
|
datasetId
|
|
3709
2118
|
});
|
|
2119
|
+
result.chart = buildAiChartPersistenceReceipt({
|
|
2120
|
+
snapshot,
|
|
2121
|
+
datasetId: datasetId ?? null,
|
|
2122
|
+
ttlMs: import_constants.TTL_1M
|
|
2123
|
+
});
|
|
2124
|
+
}
|
|
2125
|
+
if (jsonOutputPath) {
|
|
2126
|
+
await writeAiTrainResearchSnapshot({
|
|
2127
|
+
outputPath: jsonOutputPath,
|
|
2128
|
+
result
|
|
2129
|
+
});
|
|
3710
2130
|
}
|
|
3711
2131
|
if (jsonOutput) {
|
|
3712
2132
|
if (printJsonOutput) {
|
|
@@ -3855,23 +2275,23 @@ var main = async () => {
|
|
|
3855
2275
|
import_chalk.default.gray("MAX_DD"),
|
|
3856
2276
|
import_chalk.default.gray("TOP REJECT")
|
|
3857
2277
|
],
|
|
3858
|
-
terminalWindows.map((
|
|
3859
|
-
import_chalk.default.yellow(
|
|
3860
|
-
|
|
3861
|
-
import_chalk.default.gray(new Date(
|
|
3862
|
-
import_chalk.default.gray(new Date(
|
|
3863
|
-
import_chalk.default.blue(String(
|
|
3864
|
-
import_chalk.default.cyan(String(
|
|
3865
|
-
colorizeMetricNumber(
|
|
3866
|
-
colorizeRatio(
|
|
3867
|
-
colorizeMetricNumber(
|
|
3868
|
-
colorizeMetricNumber(
|
|
3869
|
-
colorizeMetricNumber(
|
|
3870
|
-
colorizeMetricNumber(
|
|
3871
|
-
colorizeProfit(
|
|
3872
|
-
colorizeProfit(-
|
|
2278
|
+
terminalWindows.map((window) => [
|
|
2279
|
+
import_chalk.default.yellow(window.label),
|
|
2280
|
+
window.complete ? import_chalk.default.green("full") : import_chalk.default.yellow("partial"),
|
|
2281
|
+
import_chalk.default.gray(new Date(window.since).toISOString()),
|
|
2282
|
+
import_chalk.default.gray(new Date(window.until).toISOString()),
|
|
2283
|
+
import_chalk.default.blue(String(window.selected)),
|
|
2284
|
+
import_chalk.default.cyan(String(window.outcome.approved)),
|
|
2285
|
+
colorizeMetricNumber(window.approvedPerCalendarDay),
|
|
2286
|
+
colorizeRatio(window.outcome.approvedRisk.winRate),
|
|
2287
|
+
colorizeMetricNumber(window.outcome.approvedRisk.profitFactor),
|
|
2288
|
+
colorizeMetricNumber(window.outcome.approvedRisk.sharpeRatio),
|
|
2289
|
+
colorizeMetricNumber(window.outcome.approvedRisk.sortinoRatio),
|
|
2290
|
+
colorizeMetricNumber(window.outcome.approvedRisk.calmarRatio),
|
|
2291
|
+
colorizeProfit(window.outcome.approvedRisk.totalProfit),
|
|
2292
|
+
colorizeProfit(-window.outcome.approvedRisk.maxDrawdown),
|
|
3873
2293
|
import_chalk.default.gray(
|
|
3874
|
-
|
|
2294
|
+
window.topRejectReasons[0] ? `${window.topRejectReasons[0].reason} (${window.topRejectReasons[0].count})` : "n/a"
|
|
3875
2295
|
)
|
|
3876
2296
|
])
|
|
3877
2297
|
)
|