ccusage 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -0
- package/dist/calculate-cost.d.ts +1 -18
- package/dist/data-loader-D1LHcGfa.d.ts +1563 -0
- package/dist/{data-loader-Dh4y6ICb.js → data-loader-DlG6jpnf.js} +1683 -160
- package/dist/data-loader.d.ts +2 -2
- package/dist/data-loader.js +2 -2
- package/dist/index.js +419 -1222
- package/package.json +2 -10
- package/dist/data-loader-Ds_vUoR2.d.ts +0 -49
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { createRequire } from "node:module";
|
|
2
2
|
import { readFile } from "node:fs/promises";
|
|
3
3
|
import { homedir } from "node:os";
|
|
4
|
-
import path from "node:path";
|
|
4
|
+
import path, { sep } from "node:path";
|
|
5
5
|
import path$1, { posix } from "path";
|
|
6
|
-
import
|
|
6
|
+
import { formatWithOptions } from "node:util";
|
|
7
|
+
import process$1 from "node:process";
|
|
8
|
+
import * as tty from "node:tty";
|
|
7
9
|
|
|
8
10
|
//#region rolldown:runtime
|
|
9
11
|
var __create = Object.create;
|
|
@@ -16,8 +18,8 @@ var __commonJS = (cb, mod) => function() {
|
|
|
16
18
|
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
17
19
|
};
|
|
18
20
|
var __copyProps = (to, from, except, desc) => {
|
|
19
|
-
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
20
|
-
key = keys[i];
|
|
21
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i$1 = 0, n$1 = keys.length, key; i$1 < n$1; i$1++) {
|
|
22
|
+
key = keys[i$1];
|
|
21
23
|
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
22
24
|
get: ((k) => from[k]).bind(null, key),
|
|
23
25
|
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
@@ -34,8 +36,8 @@ var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
|
34
36
|
//#endregion
|
|
35
37
|
//#region node_modules/fast-sort/dist/sort.mjs
|
|
36
38
|
var castComparer = function(comparer) {
|
|
37
|
-
return function(a, b, order) {
|
|
38
|
-
return comparer(a, b, order) * order;
|
|
39
|
+
return function(a$1, b$1, order) {
|
|
40
|
+
return comparer(a$1, b$1, order) * order;
|
|
39
41
|
};
|
|
40
42
|
};
|
|
41
43
|
var throwInvalidConfigErrorIfTrue = function(condition, context) {
|
|
@@ -55,41 +57,41 @@ var unpackObjectSorter = function(sortByObj) {
|
|
|
55
57
|
};
|
|
56
58
|
};
|
|
57
59
|
var multiPropertySorterProvider = function(defaultComparer$1) {
|
|
58
|
-
return function multiPropertySorter(sortBy, sortByArr, depth$1, order, comparer, a, b) {
|
|
60
|
+
return function multiPropertySorter(sortBy, sortByArr, depth$1, order, comparer, a$1, b$1) {
|
|
59
61
|
var valA;
|
|
60
62
|
var valB;
|
|
61
63
|
if (typeof sortBy === "string") {
|
|
62
|
-
valA = a[sortBy];
|
|
63
|
-
valB = b[sortBy];
|
|
64
|
+
valA = a$1[sortBy];
|
|
65
|
+
valB = b$1[sortBy];
|
|
64
66
|
} else if (typeof sortBy === "function") {
|
|
65
|
-
valA = sortBy(a);
|
|
66
|
-
valB = sortBy(b);
|
|
67
|
+
valA = sortBy(a$1);
|
|
68
|
+
valB = sortBy(b$1);
|
|
67
69
|
} else {
|
|
68
70
|
var objectSorterConfig = unpackObjectSorter(sortBy);
|
|
69
|
-
return multiPropertySorter(objectSorterConfig.sortBy, sortByArr, depth$1, objectSorterConfig.order, objectSorterConfig.comparer || defaultComparer$1, a, b);
|
|
71
|
+
return multiPropertySorter(objectSorterConfig.sortBy, sortByArr, depth$1, objectSorterConfig.order, objectSorterConfig.comparer || defaultComparer$1, a$1, b$1);
|
|
70
72
|
}
|
|
71
73
|
var equality = comparer(valA, valB, order);
|
|
72
|
-
if ((equality === 0 || valA == null && valB == null) && sortByArr.length > depth$1) return multiPropertySorter(sortByArr[depth$1], sortByArr, depth$1 + 1, order, comparer, a, b);
|
|
74
|
+
if ((equality === 0 || valA == null && valB == null) && sortByArr.length > depth$1) return multiPropertySorter(sortByArr[depth$1], sortByArr, depth$1 + 1, order, comparer, a$1, b$1);
|
|
73
75
|
return equality;
|
|
74
76
|
};
|
|
75
77
|
};
|
|
76
78
|
function getSortStrategy(sortBy, comparer, order) {
|
|
77
|
-
if (sortBy === void 0 || sortBy === true) return function(a, b) {
|
|
78
|
-
return comparer(a, b, order);
|
|
79
|
+
if (sortBy === void 0 || sortBy === true) return function(a$1, b$1) {
|
|
80
|
+
return comparer(a$1, b$1, order);
|
|
79
81
|
};
|
|
80
82
|
if (typeof sortBy === "string") {
|
|
81
83
|
throwInvalidConfigErrorIfTrue(sortBy.includes("."), "String syntax not allowed for nested properties.");
|
|
82
|
-
return function(a, b) {
|
|
83
|
-
return comparer(a[sortBy], b[sortBy], order);
|
|
84
|
+
return function(a$1, b$1) {
|
|
85
|
+
return comparer(a$1[sortBy], b$1[sortBy], order);
|
|
84
86
|
};
|
|
85
87
|
}
|
|
86
|
-
if (typeof sortBy === "function") return function(a, b) {
|
|
87
|
-
return comparer(sortBy(a), sortBy(b), order);
|
|
88
|
+
if (typeof sortBy === "function") return function(a$1, b$1) {
|
|
89
|
+
return comparer(sortBy(a$1), sortBy(b$1), order);
|
|
88
90
|
};
|
|
89
91
|
if (Array.isArray(sortBy)) {
|
|
90
92
|
var multiPropSorter_1 = multiPropertySorterProvider(comparer);
|
|
91
|
-
return function(a, b) {
|
|
92
|
-
return multiPropSorter_1(sortBy[0], sortBy, 1, order, comparer, a, b);
|
|
93
|
+
return function(a$1, b$1) {
|
|
94
|
+
return multiPropSorter_1(sortBy[0], sortBy, 1, order, comparer, a$1, b$1);
|
|
93
95
|
};
|
|
94
96
|
}
|
|
95
97
|
var objectSorterConfig = unpackObjectSorter(sortBy);
|
|
@@ -118,12 +120,12 @@ function createNewSortInstance(opts) {
|
|
|
118
120
|
};
|
|
119
121
|
};
|
|
120
122
|
}
|
|
121
|
-
var defaultComparer = function(a, b, order) {
|
|
122
|
-
if (a == null) return order;
|
|
123
|
-
if (b == null) return -order;
|
|
124
|
-
if (typeof a !== typeof b) return typeof a < typeof b ? -1 : 1;
|
|
125
|
-
if (a < b) return -1;
|
|
126
|
-
if (a > b) return 1;
|
|
123
|
+
var defaultComparer = function(a$1, b$1, order) {
|
|
124
|
+
if (a$1 == null) return order;
|
|
125
|
+
if (b$1 == null) return -order;
|
|
126
|
+
if (typeof a$1 !== typeof b$1) return typeof a$1 < typeof b$1 ? -1 : 1;
|
|
127
|
+
if (a$1 < b$1) return -1;
|
|
128
|
+
if (a$1 > b$1) return 1;
|
|
127
129
|
return 0;
|
|
128
130
|
};
|
|
129
131
|
var sort = createNewSortInstance({ comparer: defaultComparer });
|
|
@@ -300,21 +302,21 @@ var require_resolve_symlink = __commonJS({ "node_modules/fdir/dist/api/functions
|
|
|
300
302
|
const fs_1$1 = __importDefault$1(__require("fs"));
|
|
301
303
|
const path_1$2 = __require("path");
|
|
302
304
|
const resolveSymlinksAsync = function(path$2, state, callback$1) {
|
|
303
|
-
const { queue, options: { suppressErrors } } = state;
|
|
304
|
-
queue.enqueue();
|
|
305
|
+
const { queue: queue$1, options: { suppressErrors } } = state;
|
|
306
|
+
queue$1.enqueue();
|
|
305
307
|
fs_1$1.default.realpath(path$2, (error, resolvedPath) => {
|
|
306
|
-
if (error) return queue.dequeue(suppressErrors ? null : error, state);
|
|
308
|
+
if (error) return queue$1.dequeue(suppressErrors ? null : error, state);
|
|
307
309
|
fs_1$1.default.stat(resolvedPath, (error$1, stat) => {
|
|
308
|
-
if (error$1) return queue.dequeue(suppressErrors ? null : error$1, state);
|
|
309
|
-
if (stat.isDirectory() && isRecursive(path$2, resolvedPath, state)) return queue.dequeue(null, state);
|
|
310
|
+
if (error$1) return queue$1.dequeue(suppressErrors ? null : error$1, state);
|
|
311
|
+
if (stat.isDirectory() && isRecursive(path$2, resolvedPath, state)) return queue$1.dequeue(null, state);
|
|
310
312
|
callback$1(stat, resolvedPath);
|
|
311
|
-
queue.dequeue(null, state);
|
|
313
|
+
queue$1.dequeue(null, state);
|
|
312
314
|
});
|
|
313
315
|
});
|
|
314
316
|
};
|
|
315
317
|
const resolveSymlinks = function(path$2, state, callback$1) {
|
|
316
|
-
const { queue, options: { suppressErrors } } = state;
|
|
317
|
-
queue.enqueue();
|
|
318
|
+
const { queue: queue$1, options: { suppressErrors } } = state;
|
|
319
|
+
queue$1.enqueue();
|
|
318
320
|
try {
|
|
319
321
|
const resolvedPath = fs_1$1.default.realpathSync(path$2);
|
|
320
322
|
const stat = fs_1$1.default.statSync(resolvedPath);
|
|
@@ -496,7 +498,7 @@ var require_counter = __commonJS({ "node_modules/fdir/dist/api/counter.js"(expor
|
|
|
496
498
|
//#endregion
|
|
497
499
|
//#region node_modules/fdir/dist/api/walker.js
|
|
498
500
|
var require_walker = __commonJS({ "node_modules/fdir/dist/api/walker.js"(exports) {
|
|
499
|
-
var __createBinding$1 = void 0 && (void 0).__createBinding || (Object.create ? function(o, m, k, k2) {
|
|
501
|
+
var __createBinding$1 = void 0 && (void 0).__createBinding || (Object.create ? function(o$1, m, k, k2) {
|
|
500
502
|
if (k2 === void 0) k2 = k;
|
|
501
503
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
502
504
|
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) desc = {
|
|
@@ -505,33 +507,33 @@ var require_walker = __commonJS({ "node_modules/fdir/dist/api/walker.js"(exports
|
|
|
505
507
|
return m[k];
|
|
506
508
|
}
|
|
507
509
|
};
|
|
508
|
-
Object.defineProperty(o, k2, desc);
|
|
509
|
-
} : function(o, m, k, k2) {
|
|
510
|
+
Object.defineProperty(o$1, k2, desc);
|
|
511
|
+
} : function(o$1, m, k, k2) {
|
|
510
512
|
if (k2 === void 0) k2 = k;
|
|
511
|
-
o[k2] = m[k];
|
|
513
|
+
o$1[k2] = m[k];
|
|
512
514
|
});
|
|
513
|
-
var __setModuleDefault = void 0 && (void 0).__setModuleDefault || (Object.create ? function(o, v
|
|
514
|
-
Object.defineProperty(o, "default", {
|
|
515
|
+
var __setModuleDefault = void 0 && (void 0).__setModuleDefault || (Object.create ? function(o$1, v) {
|
|
516
|
+
Object.defineProperty(o$1, "default", {
|
|
515
517
|
enumerable: true,
|
|
516
|
-
value: v
|
|
518
|
+
value: v
|
|
517
519
|
});
|
|
518
|
-
} : function(o, v
|
|
519
|
-
o["default"] = v
|
|
520
|
+
} : function(o$1, v) {
|
|
521
|
+
o$1["default"] = v;
|
|
520
522
|
});
|
|
521
523
|
var __importStar = void 0 && (void 0).__importStar || function() {
|
|
522
|
-
var ownKeys = function(o) {
|
|
523
|
-
ownKeys = Object.getOwnPropertyNames || function(o$
|
|
524
|
+
var ownKeys = function(o$1) {
|
|
525
|
+
ownKeys = Object.getOwnPropertyNames || function(o$2) {
|
|
524
526
|
var ar = [];
|
|
525
|
-
for (var k in o$
|
|
527
|
+
for (var k in o$2) if (Object.prototype.hasOwnProperty.call(o$2, k)) ar[ar.length] = k;
|
|
526
528
|
return ar;
|
|
527
529
|
};
|
|
528
|
-
return ownKeys(o);
|
|
530
|
+
return ownKeys(o$1);
|
|
529
531
|
};
|
|
530
532
|
return function(mod) {
|
|
531
533
|
if (mod && mod.__esModule) return mod;
|
|
532
534
|
var result = {};
|
|
533
535
|
if (mod != null) {
|
|
534
|
-
for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding$1(result, mod, k[i]);
|
|
536
|
+
for (var k = ownKeys(mod), i$1 = 0; i$1 < k.length; i$1++) if (k[i$1] !== "default") __createBinding$1(result, mod, k[i$1]);
|
|
535
537
|
}
|
|
536
538
|
__setModuleDefault(result, mod);
|
|
537
539
|
return result;
|
|
@@ -595,8 +597,8 @@ var require_walker = __commonJS({ "node_modules/fdir/dist/api/walker.js"(exports
|
|
|
595
597
|
const { paths, options: { filters, resolveSymlinks: resolveSymlinks$1, excludeSymlinks, exclude, maxFiles, signal, useRealPaths, pathSeparator }, controller } = this.state;
|
|
596
598
|
if (controller.signal.aborted || signal && signal.aborted || maxFiles && paths.length > maxFiles) return;
|
|
597
599
|
const files = this.getArray(this.state.paths);
|
|
598
|
-
for (let i = 0; i < entries.length; ++i) {
|
|
599
|
-
const entry = entries[i];
|
|
600
|
+
for (let i$1 = 0; i$1 < entries.length; ++i$1) {
|
|
601
|
+
const entry = entries[i$1];
|
|
600
602
|
if (entry.isFile() || entry.isSymbolicLink() && !resolveSymlinks$1 && !excludeSymlinks) {
|
|
601
603
|
const filename = this.joinPath(entry.name, directoryPath);
|
|
602
604
|
this.pushFile(filename, files, this.state.counts, filters);
|
|
@@ -870,8 +872,8 @@ var require_utils = __commonJS({ "node_modules/picomatch/lib/utils.js"(exports)
|
|
|
870
872
|
exports.toPosixSlashes = (str) => str.replace(REGEX_BACKSLASH, "/");
|
|
871
873
|
exports.isWindows = () => {
|
|
872
874
|
if (typeof navigator !== "undefined" && navigator.platform) {
|
|
873
|
-
const platform = navigator.platform.toLowerCase();
|
|
874
|
-
return platform === "win32" || platform === "windows";
|
|
875
|
+
const platform$1 = navigator.platform.toLowerCase();
|
|
876
|
+
return platform$1 === "win32" || platform$1 === "windows";
|
|
875
877
|
}
|
|
876
878
|
if (typeof process !== "undefined" && process.platform) return process.platform === "win32";
|
|
877
879
|
return false;
|
|
@@ -1168,9 +1170,9 @@ var require_scan = __commonJS({ "node_modules/picomatch/lib/scan.js"(exports, mo
|
|
|
1168
1170
|
if (opts.parts === true || opts.tokens === true) {
|
|
1169
1171
|
let prevIndex;
|
|
1170
1172
|
for (let idx = 0; idx < slashes.length; idx++) {
|
|
1171
|
-
const n = prevIndex ? prevIndex + 1 : start;
|
|
1172
|
-
const i = slashes[idx];
|
|
1173
|
-
const value = input.slice(n, i);
|
|
1173
|
+
const n$1 = prevIndex ? prevIndex + 1 : start;
|
|
1174
|
+
const i$1 = slashes[idx];
|
|
1175
|
+
const value = input.slice(n$1, i$1);
|
|
1174
1176
|
if (opts.tokens) {
|
|
1175
1177
|
if (idx === 0 && start !== 0) {
|
|
1176
1178
|
tokens[idx].isPrefix = true;
|
|
@@ -1180,7 +1182,7 @@ var require_scan = __commonJS({ "node_modules/picomatch/lib/scan.js"(exports, mo
|
|
|
1180
1182
|
state.maxDepth += tokens[idx].depth;
|
|
1181
1183
|
}
|
|
1182
1184
|
if (idx !== 0 || value !== "") parts.push(value);
|
|
1183
|
-
prevIndex = i;
|
|
1185
|
+
prevIndex = i$1;
|
|
1184
1186
|
}
|
|
1185
1187
|
if (prevIndex && prevIndex + 1 < input.length) {
|
|
1186
1188
|
const value = input.slice(prevIndex + 1);
|
|
@@ -1218,7 +1220,7 @@ var require_parse = __commonJS({ "node_modules/picomatch/lib/parse.js"(exports,
|
|
|
1218
1220
|
try {
|
|
1219
1221
|
new RegExp(value);
|
|
1220
1222
|
} catch (ex) {
|
|
1221
|
-
return args.map((v
|
|
1223
|
+
return args.map((v) => utils$2.escapeRegex(v)).join("..");
|
|
1222
1224
|
}
|
|
1223
1225
|
return value;
|
|
1224
1226
|
};
|
|
@@ -1234,7 +1236,7 @@ var require_parse = __commonJS({ "node_modules/picomatch/lib/parse.js"(exports,
|
|
|
1234
1236
|
* @param {Object} options
|
|
1235
1237
|
* @return {Object}
|
|
1236
1238
|
*/
|
|
1237
|
-
const parse$
|
|
1239
|
+
const parse$2 = (input, options) => {
|
|
1238
1240
|
if (typeof input !== "string") throw new TypeError("Expected a string");
|
|
1239
1241
|
input = REPLACEMENTS[input] || input;
|
|
1240
1242
|
const opts = { ...options };
|
|
@@ -1287,7 +1289,7 @@ var require_parse = __commonJS({ "node_modules/picomatch/lib/parse.js"(exports,
|
|
|
1287
1289
|
* Tokenizing helpers
|
|
1288
1290
|
*/
|
|
1289
1291
|
const eos = () => state.index === len - 1;
|
|
1290
|
-
const peek = state.peek = (n = 1) => input[state.index + n];
|
|
1292
|
+
const peek = state.peek = (n$1 = 1) => input[state.index + n$1];
|
|
1291
1293
|
const advance = state.advance = () => input[++state.index] || "";
|
|
1292
1294
|
const remaining = () => input.slice(state.index + 1);
|
|
1293
1295
|
const consume = (value$1 = "", num = 0) => {
|
|
@@ -1380,7 +1382,7 @@ var require_parse = __commonJS({ "node_modules/picomatch/lib/parse.js"(exports,
|
|
|
1380
1382
|
if (token.inner && token.inner.length > 1 && token.inner.includes("/")) extglobStar = globstar(opts);
|
|
1381
1383
|
if (extglobStar !== star || eos() || /^\)+$/.test(remaining())) output = token.close = `)$))${extglobStar}`;
|
|
1382
1384
|
if (token.inner.includes("*") && (rest = remaining()) && /^\.[^\\/.]+$/.test(rest)) {
|
|
1383
|
-
const expression = parse$
|
|
1385
|
+
const expression = parse$2(rest, {
|
|
1384
1386
|
...options,
|
|
1385
1387
|
fastpaths: false
|
|
1386
1388
|
}).output;
|
|
@@ -1624,10 +1626,10 @@ var require_parse = __commonJS({ "node_modules/picomatch/lib/parse.js"(exports,
|
|
|
1624
1626
|
if (brace.dots === true) {
|
|
1625
1627
|
const arr = tokens.slice();
|
|
1626
1628
|
const range = [];
|
|
1627
|
-
for (let i = arr.length - 1; i >= 0; i--) {
|
|
1629
|
+
for (let i$1 = arr.length - 1; i$1 >= 0; i$1--) {
|
|
1628
1630
|
tokens.pop();
|
|
1629
|
-
if (arr[i].type === "brace") break;
|
|
1630
|
-
if (arr[i].type !== "dots") range.unshift(arr[i].value);
|
|
1631
|
+
if (arr[i$1].type === "brace") break;
|
|
1632
|
+
if (arr[i$1].type !== "dots") range.unshift(arr[i$1].value);
|
|
1631
1633
|
}
|
|
1632
1634
|
output = expandRange(range, opts);
|
|
1633
1635
|
state.backtrack = true;
|
|
@@ -1638,7 +1640,7 @@ var require_parse = __commonJS({ "node_modules/picomatch/lib/parse.js"(exports,
|
|
|
1638
1640
|
brace.value = brace.output = "\\{";
|
|
1639
1641
|
value = output = "\\}";
|
|
1640
1642
|
state.output = out;
|
|
1641
|
-
for (const t of toks) state.output += t.output || t.value;
|
|
1643
|
+
for (const t$1 of toks) state.output += t$1.output || t$1.value;
|
|
1642
1644
|
}
|
|
1643
1645
|
push({
|
|
1644
1646
|
type: "brace",
|
|
@@ -2017,7 +2019,7 @@ var require_parse = __commonJS({ "node_modules/picomatch/lib/parse.js"(exports,
|
|
|
2017
2019
|
* This can significantly speed up processing and has very little downside
|
|
2018
2020
|
* impact when none of the fast paths match.
|
|
2019
2021
|
*/
|
|
2020
|
-
parse$
|
|
2022
|
+
parse$2.fastpaths = (input, options) => {
|
|
2021
2023
|
const opts = { ...options };
|
|
2022
2024
|
const max = typeof opts.maxLength === "number" ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;
|
|
2023
2025
|
const len = input.length;
|
|
@@ -2061,14 +2063,14 @@ var require_parse = __commonJS({ "node_modules/picomatch/lib/parse.js"(exports,
|
|
|
2061
2063
|
if (source && opts.strictSlashes !== true) source += `${SLASH_LITERAL$1}?`;
|
|
2062
2064
|
return source;
|
|
2063
2065
|
};
|
|
2064
|
-
module.exports = parse$
|
|
2066
|
+
module.exports = parse$2;
|
|
2065
2067
|
} });
|
|
2066
2068
|
|
|
2067
2069
|
//#endregion
|
|
2068
2070
|
//#region node_modules/picomatch/lib/picomatch.js
|
|
2069
2071
|
var require_picomatch$1 = __commonJS({ "node_modules/picomatch/lib/picomatch.js"(exports, module) {
|
|
2070
2072
|
const scan = require_scan();
|
|
2071
|
-
const parse = require_parse();
|
|
2073
|
+
const parse$1 = require_parse();
|
|
2072
2074
|
const utils$1 = require_utils();
|
|
2073
2075
|
const constants = require_constants();
|
|
2074
2076
|
const isObject = (val) => val && typeof val === "object" && !Array.isArray(val);
|
|
@@ -2109,9 +2111,9 @@ var require_picomatch$1 = __commonJS({ "node_modules/picomatch/lib/picomatch.js"
|
|
|
2109
2111
|
if (glob$1 === "" || typeof glob$1 !== "string" && !isState) throw new TypeError("Expected pattern to be a non-empty string");
|
|
2110
2112
|
const opts = options || {};
|
|
2111
2113
|
const posix$1 = opts.windows;
|
|
2112
|
-
const regex = isState ? picomatch$2.compileRe(glob$1, options) : picomatch$2.makeRe(glob$1, options, false, true);
|
|
2113
|
-
const state = regex.state;
|
|
2114
|
-
delete regex.state;
|
|
2114
|
+
const regex$2 = isState ? picomatch$2.compileRe(glob$1, options) : picomatch$2.makeRe(glob$1, options, false, true);
|
|
2115
|
+
const state = regex$2.state;
|
|
2116
|
+
delete regex$2.state;
|
|
2115
2117
|
let isIgnored = () => false;
|
|
2116
2118
|
if (opts.ignore) {
|
|
2117
2119
|
const ignoreOpts = {
|
|
@@ -2123,14 +2125,14 @@ var require_picomatch$1 = __commonJS({ "node_modules/picomatch/lib/picomatch.js"
|
|
|
2123
2125
|
isIgnored = picomatch$2(opts.ignore, ignoreOpts, returnState);
|
|
2124
2126
|
}
|
|
2125
2127
|
const matcher = (input, returnObject = false) => {
|
|
2126
|
-
const { isMatch, match, output } = picomatch$2.test(input, regex, options, {
|
|
2128
|
+
const { isMatch, match, output } = picomatch$2.test(input, regex$2, options, {
|
|
2127
2129
|
glob: glob$1,
|
|
2128
2130
|
posix: posix$1
|
|
2129
2131
|
});
|
|
2130
2132
|
const result = {
|
|
2131
2133
|
glob: glob$1,
|
|
2132
2134
|
state,
|
|
2133
|
-
regex,
|
|
2135
|
+
regex: regex$2,
|
|
2134
2136
|
posix: posix$1,
|
|
2135
2137
|
input,
|
|
2136
2138
|
output,
|
|
@@ -2169,7 +2171,7 @@ var require_picomatch$1 = __commonJS({ "node_modules/picomatch/lib/picomatch.js"
|
|
|
2169
2171
|
* @return {Object} Returns an object with matching info.
|
|
2170
2172
|
* @api public
|
|
2171
2173
|
*/
|
|
2172
|
-
picomatch$2.test = (input, regex, options, { glob: glob$1, posix: posix$1 } = {}) => {
|
|
2174
|
+
picomatch$2.test = (input, regex$2, options, { glob: glob$1, posix: posix$1 } = {}) => {
|
|
2173
2175
|
if (typeof input !== "string") throw new TypeError("Expected input to be a string");
|
|
2174
2176
|
if (input === "") return {
|
|
2175
2177
|
isMatch: false,
|
|
@@ -2183,8 +2185,8 @@ var require_picomatch$1 = __commonJS({ "node_modules/picomatch/lib/picomatch.js"
|
|
|
2183
2185
|
output = format ? format(input) : input;
|
|
2184
2186
|
match = output === glob$1;
|
|
2185
2187
|
}
|
|
2186
|
-
if (match === false || opts.capture === true) if (opts.matchBase === true || opts.basename === true) match = picomatch$2.matchBase(input, regex, options, posix$1);
|
|
2187
|
-
else match = regex.exec(output);
|
|
2188
|
+
if (match === false || opts.capture === true) if (opts.matchBase === true || opts.basename === true) match = picomatch$2.matchBase(input, regex$2, options, posix$1);
|
|
2189
|
+
else match = regex$2.exec(output);
|
|
2188
2190
|
return {
|
|
2189
2191
|
isMatch: Boolean(match),
|
|
2190
2192
|
match,
|
|
@@ -2205,8 +2207,8 @@ var require_picomatch$1 = __commonJS({ "node_modules/picomatch/lib/picomatch.js"
|
|
|
2205
2207
|
* @api public
|
|
2206
2208
|
*/
|
|
2207
2209
|
picomatch$2.matchBase = (input, glob$1, options) => {
|
|
2208
|
-
const regex = glob$1 instanceof RegExp ? glob$1 : picomatch$2.makeRe(glob$1, options);
|
|
2209
|
-
return regex.test(utils$1.basename(input));
|
|
2210
|
+
const regex$2 = glob$1 instanceof RegExp ? glob$1 : picomatch$2.makeRe(glob$1, options);
|
|
2211
|
+
return regex$2.test(utils$1.basename(input));
|
|
2210
2212
|
};
|
|
2211
2213
|
/**
|
|
2212
2214
|
* Returns true if **any** of the given glob `patterns` match the specified `string`.
|
|
@@ -2240,7 +2242,7 @@ var require_picomatch$1 = __commonJS({ "node_modules/picomatch/lib/picomatch.js"
|
|
|
2240
2242
|
*/
|
|
2241
2243
|
picomatch$2.parse = (pattern, options) => {
|
|
2242
2244
|
if (Array.isArray(pattern)) return pattern.map((p) => picomatch$2.parse(p, options));
|
|
2243
|
-
return parse(pattern, {
|
|
2245
|
+
return parse$1(pattern, {
|
|
2244
2246
|
...options,
|
|
2245
2247
|
fastpaths: false
|
|
2246
2248
|
});
|
|
@@ -2290,9 +2292,9 @@ var require_picomatch$1 = __commonJS({ "node_modules/picomatch/lib/picomatch.js"
|
|
|
2290
2292
|
const append = opts.contains ? "" : "$";
|
|
2291
2293
|
let source = `${prepend}(?:${state.output})${append}`;
|
|
2292
2294
|
if (state && state.negated === true) source = `^(?!${source}).*$`;
|
|
2293
|
-
const regex = picomatch$2.toRegex(source, options);
|
|
2294
|
-
if (returnState === true) regex.state = state;
|
|
2295
|
-
return regex;
|
|
2295
|
+
const regex$2 = picomatch$2.toRegex(source, options);
|
|
2296
|
+
if (returnState === true) regex$2.state = state;
|
|
2297
|
+
return regex$2;
|
|
2296
2298
|
};
|
|
2297
2299
|
/**
|
|
2298
2300
|
* Create a regular expression from a parsed glob pattern.
|
|
@@ -2318,8 +2320,8 @@ var require_picomatch$1 = __commonJS({ "node_modules/picomatch/lib/picomatch.js"
|
|
|
2318
2320
|
negated: false,
|
|
2319
2321
|
fastpaths: true
|
|
2320
2322
|
};
|
|
2321
|
-
if (options.fastpaths !== false && (input[0] === "." || input[0] === "*")) parsed.output = parse.fastpaths(input, options);
|
|
2322
|
-
if (!parsed.output) parsed = parse(input, options);
|
|
2323
|
+
if (options.fastpaths !== false && (input[0] === "." || input[0] === "*")) parsed.output = parse$1.fastpaths(input, options);
|
|
2324
|
+
if (!parsed.output) parsed = parse$1(input, options);
|
|
2323
2325
|
return picomatch$2.compileRe(parsed, options, returnOutput, returnState);
|
|
2324
2326
|
};
|
|
2325
2327
|
/**
|
|
@@ -2521,7 +2523,7 @@ var require_types = __commonJS({ "node_modules/fdir/dist/types.js"(exports) {
|
|
|
2521
2523
|
//#endregion
|
|
2522
2524
|
//#region node_modules/fdir/dist/index.js
|
|
2523
2525
|
var require_dist = __commonJS({ "node_modules/fdir/dist/index.js"(exports) {
|
|
2524
|
-
var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function(o, m, k, k2) {
|
|
2526
|
+
var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function(o$1, m, k, k2) {
|
|
2525
2527
|
if (k2 === void 0) k2 = k;
|
|
2526
2528
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
2527
2529
|
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) desc = {
|
|
@@ -2530,10 +2532,10 @@ var require_dist = __commonJS({ "node_modules/fdir/dist/index.js"(exports) {
|
|
|
2530
2532
|
return m[k];
|
|
2531
2533
|
}
|
|
2532
2534
|
};
|
|
2533
|
-
Object.defineProperty(o, k2, desc);
|
|
2534
|
-
} : function(o, m, k, k2) {
|
|
2535
|
+
Object.defineProperty(o$1, k2, desc);
|
|
2536
|
+
} : function(o$1, m, k, k2) {
|
|
2535
2537
|
if (k2 === void 0) k2 = k;
|
|
2536
|
-
o[k2] = m[k];
|
|
2538
|
+
o$1[k2] = m[k];
|
|
2537
2539
|
});
|
|
2538
2540
|
var __exportStar = void 0 && (void 0).__exportStar || function(m, exports$1) {
|
|
2539
2541
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports$1, p)) __createBinding(exports$1, m, p);
|
|
@@ -2559,27 +2561,27 @@ function getPartialMatcher(patterns, options) {
|
|
|
2559
2561
|
const patternsCount = patterns.length;
|
|
2560
2562
|
const patternsParts = Array(patternsCount);
|
|
2561
2563
|
const regexes = Array(patternsCount);
|
|
2562
|
-
for (let i = 0; i < patternsCount; i++) {
|
|
2563
|
-
const parts = splitPattern(patterns[i]);
|
|
2564
|
-
patternsParts[i] = parts;
|
|
2564
|
+
for (let i$1 = 0; i$1 < patternsCount; i$1++) {
|
|
2565
|
+
const parts = splitPattern(patterns[i$1]);
|
|
2566
|
+
patternsParts[i$1] = parts;
|
|
2565
2567
|
const partsCount = parts.length;
|
|
2566
2568
|
const partRegexes = Array(partsCount);
|
|
2567
2569
|
for (let j = 0; j < partsCount; j++) partRegexes[j] = import_picomatch.default.makeRe(parts[j], options);
|
|
2568
|
-
regexes[i] = partRegexes;
|
|
2570
|
+
regexes[i$1] = partRegexes;
|
|
2569
2571
|
}
|
|
2570
2572
|
return (input) => {
|
|
2571
2573
|
const inputParts = input.split("/");
|
|
2572
2574
|
if (inputParts[0] === ".." && ONLY_PARENT_DIRECTORIES.test(input)) return true;
|
|
2573
|
-
for (let i = 0; i < patterns.length; i++) {
|
|
2574
|
-
const patternParts = patternsParts[i];
|
|
2575
|
-
const regex = regexes[i];
|
|
2575
|
+
for (let i$1 = 0; i$1 < patterns.length; i$1++) {
|
|
2576
|
+
const patternParts = patternsParts[i$1];
|
|
2577
|
+
const regex$2 = regexes[i$1];
|
|
2576
2578
|
const inputPatternCount = inputParts.length;
|
|
2577
2579
|
const minParts = Math.min(inputPatternCount, patternParts.length);
|
|
2578
2580
|
let j = 0;
|
|
2579
2581
|
while (j < minParts) {
|
|
2580
2582
|
const part = patternParts[j];
|
|
2581
2583
|
if (part.includes("/")) return true;
|
|
2582
|
-
const match = regex[j].test(inputParts[j]);
|
|
2584
|
+
const match = regex$2[j].test(inputParts[j]);
|
|
2583
2585
|
if (!match) break;
|
|
2584
2586
|
if (part === "**") return true;
|
|
2585
2587
|
j++;
|
|
@@ -2606,7 +2608,7 @@ function isDynamicPattern(pattern, options) {
|
|
|
2606
2608
|
const scan$2 = import_picomatch.default.scan(pattern);
|
|
2607
2609
|
return scan$2.isGlob || scan$2.negated;
|
|
2608
2610
|
}
|
|
2609
|
-
function log(...tasks) {
|
|
2611
|
+
function log$1(...tasks) {
|
|
2610
2612
|
console.log(`[tinyglobby ${new Date().toLocaleTimeString("es")}]`, ...tasks);
|
|
2611
2613
|
}
|
|
2612
2614
|
const PARENT_DIRECTORY = /^(\/?\.\.)+/;
|
|
@@ -2622,17 +2624,17 @@ function normalizePattern(pattern, expandDirectories, cwd, props, isIgnore) {
|
|
|
2622
2624
|
const parentDirectoryMatch = PARENT_DIRECTORY.exec(result);
|
|
2623
2625
|
const parts = splitPattern(result);
|
|
2624
2626
|
if (parentDirectoryMatch === null || parentDirectoryMatch === void 0 ? void 0 : parentDirectoryMatch[0]) {
|
|
2625
|
-
const n = (parentDirectoryMatch[0].length + 1) / 3;
|
|
2626
|
-
let i = 0;
|
|
2627
|
+
const n$1 = (parentDirectoryMatch[0].length + 1) / 3;
|
|
2628
|
+
let i$1 = 0;
|
|
2627
2629
|
const cwdParts = escapedCwd.split("/");
|
|
2628
|
-
while (i < n && parts[i + n] === cwdParts[cwdParts.length + i - n]) {
|
|
2629
|
-
result = result.slice(0, (n - i - 1) * 3) + result.slice((n - i) * 3 + parts[i + n].length + 1) || ".";
|
|
2630
|
-
i++;
|
|
2630
|
+
while (i$1 < n$1 && parts[i$1 + n$1] === cwdParts[cwdParts.length + i$1 - n$1]) {
|
|
2631
|
+
result = result.slice(0, (n$1 - i$1 - 1) * 3) + result.slice((n$1 - i$1) * 3 + parts[i$1 + n$1].length + 1) || ".";
|
|
2632
|
+
i$1++;
|
|
2631
2633
|
}
|
|
2632
|
-
const potentialRoot = posix.join(cwd, parentDirectoryMatch[0].slice(i * 3));
|
|
2634
|
+
const potentialRoot = posix.join(cwd, parentDirectoryMatch[0].slice(i$1 * 3));
|
|
2633
2635
|
if (!potentialRoot.startsWith(".") && props.root.length > potentialRoot.length) {
|
|
2634
2636
|
props.root = potentialRoot;
|
|
2635
|
-
props.depthOffset = -n + i;
|
|
2637
|
+
props.depthOffset = -n$1 + i$1;
|
|
2636
2638
|
}
|
|
2637
2639
|
}
|
|
2638
2640
|
if (!isIgnore && props.depthOffset >= 0) {
|
|
@@ -2640,13 +2642,13 @@ function normalizePattern(pattern, expandDirectories, cwd, props, isIgnore) {
|
|
|
2640
2642
|
(_props$commonPath = props.commonPath) !== null && _props$commonPath !== void 0 || (props.commonPath = parts);
|
|
2641
2643
|
const newCommonPath = [];
|
|
2642
2644
|
const length = Math.min(props.commonPath.length, parts.length);
|
|
2643
|
-
for (let i = 0; i < length; i++) {
|
|
2644
|
-
const part = parts[i];
|
|
2645
|
-
if (part === "**" && !parts[i + 1]) {
|
|
2645
|
+
for (let i$1 = 0; i$1 < length; i$1++) {
|
|
2646
|
+
const part = parts[i$1];
|
|
2647
|
+
if (part === "**" && !parts[i$1 + 1]) {
|
|
2646
2648
|
newCommonPath.pop();
|
|
2647
2649
|
break;
|
|
2648
2650
|
}
|
|
2649
|
-
if (part !== props.commonPath[i] || isDynamicPattern(part) || i === parts.length - 1) break;
|
|
2651
|
+
if (part !== props.commonPath[i$1] || isDynamicPattern(part) || i$1 === parts.length - 1) break;
|
|
2650
2652
|
newCommonPath.push(part);
|
|
2651
2653
|
}
|
|
2652
2654
|
props.depthOffset = newCommonPath.length;
|
|
@@ -2684,15 +2686,15 @@ function processPath(path$1$1, cwd, root, isDirectory, absolute) {
|
|
|
2684
2686
|
return getRelativePath(relativePath, cwd, root);
|
|
2685
2687
|
}
|
|
2686
2688
|
function formatPaths(paths, cwd, root) {
|
|
2687
|
-
for (let i = paths.length - 1; i >= 0; i--) {
|
|
2688
|
-
const path$1$1 = paths[i];
|
|
2689
|
-
paths[i] = getRelativePath(path$1$1, cwd, root) + (!path$1$1 || path$1$1.endsWith("/") ? "/" : "");
|
|
2689
|
+
for (let i$1 = paths.length - 1; i$1 >= 0; i$1--) {
|
|
2690
|
+
const path$1$1 = paths[i$1];
|
|
2691
|
+
paths[i$1] = getRelativePath(path$1$1, cwd, root) + (!path$1$1 || path$1$1.endsWith("/") ? "/" : "");
|
|
2690
2692
|
}
|
|
2691
2693
|
return paths;
|
|
2692
2694
|
}
|
|
2693
2695
|
function crawl(options, cwd, sync$1) {
|
|
2694
2696
|
if (process.env.TINYGLOBBY_DEBUG) options.debug = true;
|
|
2695
|
-
if (options.debug) log("globbing with options:", options, "cwd:", cwd);
|
|
2697
|
+
if (options.debug) log$1("globbing with options:", options, "cwd:", cwd);
|
|
2696
2698
|
if (Array.isArray(options.patterns) && options.patterns.length === 0) return sync$1 ? [] : Promise.resolve([]);
|
|
2697
2699
|
const props = {
|
|
2698
2700
|
root: cwd,
|
|
@@ -2701,7 +2703,7 @@ function crawl(options, cwd, sync$1) {
|
|
|
2701
2703
|
};
|
|
2702
2704
|
const processed = processPatterns(options, cwd, props);
|
|
2703
2705
|
const nocase = options.caseSensitiveMatch === false;
|
|
2704
|
-
if (options.debug) log("internal processing patterns:", processed);
|
|
2706
|
+
if (options.debug) log$1("internal processing patterns:", processed);
|
|
2705
2707
|
const matcher = (0, import_picomatch.default)(processed.match, {
|
|
2706
2708
|
dot: options.dot,
|
|
2707
2709
|
nocase,
|
|
@@ -2719,16 +2721,16 @@ function crawl(options, cwd, sync$1) {
|
|
|
2719
2721
|
filters: [options.debug ? (p, isDirectory) => {
|
|
2720
2722
|
const path$1$1 = processPath(p, cwd, props.root, isDirectory, options.absolute);
|
|
2721
2723
|
const matches = matcher(path$1$1);
|
|
2722
|
-
if (matches) log(`matched ${path$1$1}`);
|
|
2724
|
+
if (matches) log$1(`matched ${path$1$1}`);
|
|
2723
2725
|
return matches;
|
|
2724
2726
|
} : (p, isDirectory) => matcher(processPath(p, cwd, props.root, isDirectory, options.absolute))],
|
|
2725
|
-
exclude: options.debug ? (_, p) => {
|
|
2727
|
+
exclude: options.debug ? (_$1, p) => {
|
|
2726
2728
|
const relativePath = processPath(p, cwd, props.root, true, true);
|
|
2727
2729
|
const skipped = relativePath !== "." && !partialMatcher(relativePath) || ignore(relativePath);
|
|
2728
|
-
if (skipped) log(`skipped ${p}`);
|
|
2729
|
-
else log(`crawling ${p}`);
|
|
2730
|
+
if (skipped) log$1(`skipped ${p}`);
|
|
2731
|
+
else log$1(`crawling ${p}`);
|
|
2730
2732
|
return skipped;
|
|
2731
|
-
} : (_, p) => {
|
|
2733
|
+
} : (_$1, p) => {
|
|
2732
2734
|
const relativePath = processPath(p, cwd, props.root, true, true);
|
|
2733
2735
|
return relativePath !== "." && !partialMatcher(relativePath) || ignore(relativePath);
|
|
2734
2736
|
},
|
|
@@ -2752,7 +2754,7 @@ function crawl(options, cwd, sync$1) {
|
|
|
2752
2754
|
} else if (options.onlyFiles === false) fdirOptions.includeDirs = true;
|
|
2753
2755
|
props.root = props.root.replace(BACKSLASHES, "");
|
|
2754
2756
|
const root = props.root;
|
|
2755
|
-
if (options.debug) log("internal properties:", props);
|
|
2757
|
+
if (options.debug) log$1("internal properties:", props);
|
|
2756
2758
|
const api = new import_dist.fdir(fdirOptions).crawl(root);
|
|
2757
2759
|
if (cwd === root || options.absolute) return sync$1 ? api.sync() : api.withPromise();
|
|
2758
2760
|
return sync$1 ? formatPaths(api.sync(), cwd, root) : api.withPromise().then((paths) => formatPaths(paths, cwd, root));
|
|
@@ -2767,36 +2769,1526 @@ async function glob(patternsOrOptions, options) {
|
|
|
2767
2769
|
return crawl(opts, cwd, false);
|
|
2768
2770
|
}
|
|
2769
2771
|
|
|
2772
|
+
//#endregion
|
|
2773
|
+
//#region node_modules/valibot/dist/index.js
|
|
2774
|
+
var store;
|
|
2775
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
2776
|
+
function getGlobalConfig(config2) {
|
|
2777
|
+
return {
|
|
2778
|
+
lang: config2?.lang ?? store?.lang,
|
|
2779
|
+
message: config2?.message,
|
|
2780
|
+
abortEarly: config2?.abortEarly ?? store?.abortEarly,
|
|
2781
|
+
abortPipeEarly: config2?.abortPipeEarly ?? store?.abortPipeEarly
|
|
2782
|
+
};
|
|
2783
|
+
}
|
|
2784
|
+
var store2;
|
|
2785
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
2786
|
+
function getGlobalMessage(lang) {
|
|
2787
|
+
return store2?.get(lang);
|
|
2788
|
+
}
|
|
2789
|
+
var store3;
|
|
2790
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
2791
|
+
function getSchemaMessage(lang) {
|
|
2792
|
+
return store3?.get(lang);
|
|
2793
|
+
}
|
|
2794
|
+
var store4;
|
|
2795
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
2796
|
+
function getSpecificMessage(reference, lang) {
|
|
2797
|
+
return store4?.get(reference)?.get(lang);
|
|
2798
|
+
}
|
|
2799
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
2800
|
+
function _stringify(input) {
|
|
2801
|
+
const type = typeof input;
|
|
2802
|
+
if (type === "string") return `"${input}"`;
|
|
2803
|
+
if (type === "number" || type === "bigint" || type === "boolean") return `${input}`;
|
|
2804
|
+
if (type === "object" || type === "function") return (input && Object.getPrototypeOf(input)?.constructor?.name) ?? "null";
|
|
2805
|
+
return type;
|
|
2806
|
+
}
|
|
2807
|
+
function _addIssue(context, label, dataset, config2, other) {
|
|
2808
|
+
const input = other && "input" in other ? other.input : dataset.value;
|
|
2809
|
+
const expected = other?.expected ?? context.expects ?? null;
|
|
2810
|
+
const received = other?.received ?? /* @__PURE__ */ _stringify(input);
|
|
2811
|
+
const issue = {
|
|
2812
|
+
kind: context.kind,
|
|
2813
|
+
type: context.type,
|
|
2814
|
+
input,
|
|
2815
|
+
expected,
|
|
2816
|
+
received,
|
|
2817
|
+
message: `Invalid ${label}: ${expected ? `Expected ${expected} but r` : "R"}eceived ${received}`,
|
|
2818
|
+
requirement: context.requirement,
|
|
2819
|
+
path: other?.path,
|
|
2820
|
+
issues: other?.issues,
|
|
2821
|
+
lang: config2.lang,
|
|
2822
|
+
abortEarly: config2.abortEarly,
|
|
2823
|
+
abortPipeEarly: config2.abortPipeEarly
|
|
2824
|
+
};
|
|
2825
|
+
const isSchema = context.kind === "schema";
|
|
2826
|
+
const message2 = other?.message ?? context.message ?? /* @__PURE__ */ getSpecificMessage(context.reference, issue.lang) ?? (isSchema ? /* @__PURE__ */ getSchemaMessage(issue.lang) : null) ?? config2.message ?? /* @__PURE__ */ getGlobalMessage(issue.lang);
|
|
2827
|
+
if (message2 !== void 0) issue.message = typeof message2 === "function" ? message2(issue) : message2;
|
|
2828
|
+
if (isSchema) dataset.typed = false;
|
|
2829
|
+
if (dataset.issues) dataset.issues.push(issue);
|
|
2830
|
+
else dataset.issues = [issue];
|
|
2831
|
+
}
|
|
2832
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
2833
|
+
function _getStandardProps(context) {
|
|
2834
|
+
return {
|
|
2835
|
+
version: 1,
|
|
2836
|
+
vendor: "valibot",
|
|
2837
|
+
validate(value2) {
|
|
2838
|
+
return context["~run"]({ value: value2 }, /* @__PURE__ */ getGlobalConfig());
|
|
2839
|
+
}
|
|
2840
|
+
};
|
|
2841
|
+
}
|
|
2842
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
2843
|
+
function _isValidObjectKey(object2, key) {
|
|
2844
|
+
return Object.hasOwn(object2, key) && key !== "__proto__" && key !== "prototype" && key !== "constructor";
|
|
2845
|
+
}
|
|
2846
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
2847
|
+
function _joinExpects(values2, separator) {
|
|
2848
|
+
const list = [...new Set(values2)];
|
|
2849
|
+
if (list.length > 1) return `(${list.join(` ${separator} `)})`;
|
|
2850
|
+
return list[0] ?? "never";
|
|
2851
|
+
}
|
|
2852
|
+
var ValiError = class extends Error {
|
|
2853
|
+
/**
|
|
2854
|
+
* Creates a Valibot error with useful information.
|
|
2855
|
+
*
|
|
2856
|
+
* @param issues The error issues.
|
|
2857
|
+
*/
|
|
2858
|
+
constructor(issues) {
|
|
2859
|
+
super(issues[0].message);
|
|
2860
|
+
this.name = "ValiError";
|
|
2861
|
+
this.issues = issues;
|
|
2862
|
+
}
|
|
2863
|
+
};
|
|
2864
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
2865
|
+
function regex$1(requirement, message2) {
|
|
2866
|
+
return {
|
|
2867
|
+
kind: "validation",
|
|
2868
|
+
type: "regex",
|
|
2869
|
+
reference: regex$1,
|
|
2870
|
+
async: false,
|
|
2871
|
+
expects: `${requirement}`,
|
|
2872
|
+
requirement,
|
|
2873
|
+
message: message2,
|
|
2874
|
+
"~run"(dataset, config2) {
|
|
2875
|
+
if (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, "format", dataset, config2);
|
|
2876
|
+
return dataset;
|
|
2877
|
+
}
|
|
2878
|
+
};
|
|
2879
|
+
}
|
|
2880
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
2881
|
+
function getFallback(schema, dataset, config2) {
|
|
2882
|
+
return typeof schema.fallback === "function" ? schema.fallback(dataset, config2) : schema.fallback;
|
|
2883
|
+
}
|
|
2884
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
2885
|
+
function getDefault(schema, dataset, config2) {
|
|
2886
|
+
return typeof schema.default === "function" ? schema.default(dataset, config2) : schema.default;
|
|
2887
|
+
}
|
|
2888
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
2889
|
+
function array(item, message2) {
|
|
2890
|
+
return {
|
|
2891
|
+
kind: "schema",
|
|
2892
|
+
type: "array",
|
|
2893
|
+
reference: array,
|
|
2894
|
+
expects: "Array",
|
|
2895
|
+
async: false,
|
|
2896
|
+
item,
|
|
2897
|
+
message: message2,
|
|
2898
|
+
get "~standard"() {
|
|
2899
|
+
return /* @__PURE__ */ _getStandardProps(this);
|
|
2900
|
+
},
|
|
2901
|
+
"~run"(dataset, config2) {
|
|
2902
|
+
const input = dataset.value;
|
|
2903
|
+
if (Array.isArray(input)) {
|
|
2904
|
+
dataset.typed = true;
|
|
2905
|
+
dataset.value = [];
|
|
2906
|
+
for (let key = 0; key < input.length; key++) {
|
|
2907
|
+
const value2 = input[key];
|
|
2908
|
+
const itemDataset = this.item["~run"]({ value: value2 }, config2);
|
|
2909
|
+
if (itemDataset.issues) {
|
|
2910
|
+
const pathItem = {
|
|
2911
|
+
type: "array",
|
|
2912
|
+
origin: "value",
|
|
2913
|
+
input,
|
|
2914
|
+
key,
|
|
2915
|
+
value: value2
|
|
2916
|
+
};
|
|
2917
|
+
for (const issue of itemDataset.issues) {
|
|
2918
|
+
if (issue.path) issue.path.unshift(pathItem);
|
|
2919
|
+
else issue.path = [pathItem];
|
|
2920
|
+
dataset.issues?.push(issue);
|
|
2921
|
+
}
|
|
2922
|
+
if (!dataset.issues) dataset.issues = itemDataset.issues;
|
|
2923
|
+
if (config2.abortEarly) {
|
|
2924
|
+
dataset.typed = false;
|
|
2925
|
+
break;
|
|
2926
|
+
}
|
|
2927
|
+
}
|
|
2928
|
+
if (!itemDataset.typed) dataset.typed = false;
|
|
2929
|
+
dataset.value.push(itemDataset.value);
|
|
2930
|
+
}
|
|
2931
|
+
} else _addIssue(this, "type", dataset, config2);
|
|
2932
|
+
return dataset;
|
|
2933
|
+
}
|
|
2934
|
+
};
|
|
2935
|
+
}
|
|
2936
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
2937
|
+
function boolean(message2) {
|
|
2938
|
+
return {
|
|
2939
|
+
kind: "schema",
|
|
2940
|
+
type: "boolean",
|
|
2941
|
+
reference: boolean,
|
|
2942
|
+
expects: "boolean",
|
|
2943
|
+
async: false,
|
|
2944
|
+
message: message2,
|
|
2945
|
+
get "~standard"() {
|
|
2946
|
+
return /* @__PURE__ */ _getStandardProps(this);
|
|
2947
|
+
},
|
|
2948
|
+
"~run"(dataset, config2) {
|
|
2949
|
+
if (typeof dataset.value === "boolean") dataset.typed = true;
|
|
2950
|
+
else _addIssue(this, "type", dataset, config2);
|
|
2951
|
+
return dataset;
|
|
2952
|
+
}
|
|
2953
|
+
};
|
|
2954
|
+
}
|
|
2955
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
2956
|
+
function number(message2) {
|
|
2957
|
+
return {
|
|
2958
|
+
kind: "schema",
|
|
2959
|
+
type: "number",
|
|
2960
|
+
reference: number,
|
|
2961
|
+
expects: "number",
|
|
2962
|
+
async: false,
|
|
2963
|
+
message: message2,
|
|
2964
|
+
get "~standard"() {
|
|
2965
|
+
return /* @__PURE__ */ _getStandardProps(this);
|
|
2966
|
+
},
|
|
2967
|
+
"~run"(dataset, config2) {
|
|
2968
|
+
if (typeof dataset.value === "number" && !isNaN(dataset.value)) dataset.typed = true;
|
|
2969
|
+
else _addIssue(this, "type", dataset, config2);
|
|
2970
|
+
return dataset;
|
|
2971
|
+
}
|
|
2972
|
+
};
|
|
2973
|
+
}
|
|
2974
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
2975
|
+
function object(entries2, message2) {
|
|
2976
|
+
return {
|
|
2977
|
+
kind: "schema",
|
|
2978
|
+
type: "object",
|
|
2979
|
+
reference: object,
|
|
2980
|
+
expects: "Object",
|
|
2981
|
+
async: false,
|
|
2982
|
+
entries: entries2,
|
|
2983
|
+
message: message2,
|
|
2984
|
+
get "~standard"() {
|
|
2985
|
+
return /* @__PURE__ */ _getStandardProps(this);
|
|
2986
|
+
},
|
|
2987
|
+
"~run"(dataset, config2) {
|
|
2988
|
+
const input = dataset.value;
|
|
2989
|
+
if (input && typeof input === "object") {
|
|
2990
|
+
dataset.typed = true;
|
|
2991
|
+
dataset.value = {};
|
|
2992
|
+
for (const key in this.entries) {
|
|
2993
|
+
const valueSchema = this.entries[key];
|
|
2994
|
+
if (key in input || (valueSchema.type === "exact_optional" || valueSchema.type === "optional" || valueSchema.type === "nullish") && valueSchema.default !== void 0) {
|
|
2995
|
+
const value2 = key in input ? input[key] : /* @__PURE__ */ getDefault(valueSchema);
|
|
2996
|
+
const valueDataset = valueSchema["~run"]({ value: value2 }, config2);
|
|
2997
|
+
if (valueDataset.issues) {
|
|
2998
|
+
const pathItem = {
|
|
2999
|
+
type: "object",
|
|
3000
|
+
origin: "value",
|
|
3001
|
+
input,
|
|
3002
|
+
key,
|
|
3003
|
+
value: value2
|
|
3004
|
+
};
|
|
3005
|
+
for (const issue of valueDataset.issues) {
|
|
3006
|
+
if (issue.path) issue.path.unshift(pathItem);
|
|
3007
|
+
else issue.path = [pathItem];
|
|
3008
|
+
dataset.issues?.push(issue);
|
|
3009
|
+
}
|
|
3010
|
+
if (!dataset.issues) dataset.issues = valueDataset.issues;
|
|
3011
|
+
if (config2.abortEarly) {
|
|
3012
|
+
dataset.typed = false;
|
|
3013
|
+
break;
|
|
3014
|
+
}
|
|
3015
|
+
}
|
|
3016
|
+
if (!valueDataset.typed) dataset.typed = false;
|
|
3017
|
+
dataset.value[key] = valueDataset.value;
|
|
3018
|
+
} else if (valueSchema.fallback !== void 0) dataset.value[key] = /* @__PURE__ */ getFallback(valueSchema);
|
|
3019
|
+
else if (valueSchema.type !== "exact_optional" && valueSchema.type !== "optional" && valueSchema.type !== "nullish") {
|
|
3020
|
+
_addIssue(this, "key", dataset, config2, {
|
|
3021
|
+
input: void 0,
|
|
3022
|
+
expected: `"${key}"`,
|
|
3023
|
+
path: [{
|
|
3024
|
+
type: "object",
|
|
3025
|
+
origin: "key",
|
|
3026
|
+
input,
|
|
3027
|
+
key,
|
|
3028
|
+
value: input[key]
|
|
3029
|
+
}]
|
|
3030
|
+
});
|
|
3031
|
+
if (config2.abortEarly) break;
|
|
3032
|
+
}
|
|
3033
|
+
}
|
|
3034
|
+
} else _addIssue(this, "type", dataset, config2);
|
|
3035
|
+
return dataset;
|
|
3036
|
+
}
|
|
3037
|
+
};
|
|
3038
|
+
}
|
|
3039
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
3040
|
+
function optional(wrapped, default_) {
|
|
3041
|
+
return {
|
|
3042
|
+
kind: "schema",
|
|
3043
|
+
type: "optional",
|
|
3044
|
+
reference: optional,
|
|
3045
|
+
expects: `(${wrapped.expects} | undefined)`,
|
|
3046
|
+
async: false,
|
|
3047
|
+
wrapped,
|
|
3048
|
+
default: default_,
|
|
3049
|
+
get "~standard"() {
|
|
3050
|
+
return /* @__PURE__ */ _getStandardProps(this);
|
|
3051
|
+
},
|
|
3052
|
+
"~run"(dataset, config2) {
|
|
3053
|
+
if (dataset.value === void 0) {
|
|
3054
|
+
if (this.default !== void 0) dataset.value = /* @__PURE__ */ getDefault(this, dataset, config2);
|
|
3055
|
+
if (dataset.value === void 0) {
|
|
3056
|
+
dataset.typed = true;
|
|
3057
|
+
return dataset;
|
|
3058
|
+
}
|
|
3059
|
+
}
|
|
3060
|
+
return this.wrapped["~run"](dataset, config2);
|
|
3061
|
+
}
|
|
3062
|
+
};
|
|
3063
|
+
}
|
|
3064
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
3065
|
+
function record(key, value2, message2) {
|
|
3066
|
+
return {
|
|
3067
|
+
kind: "schema",
|
|
3068
|
+
type: "record",
|
|
3069
|
+
reference: record,
|
|
3070
|
+
expects: "Object",
|
|
3071
|
+
async: false,
|
|
3072
|
+
key,
|
|
3073
|
+
value: value2,
|
|
3074
|
+
message: message2,
|
|
3075
|
+
get "~standard"() {
|
|
3076
|
+
return /* @__PURE__ */ _getStandardProps(this);
|
|
3077
|
+
},
|
|
3078
|
+
"~run"(dataset, config2) {
|
|
3079
|
+
const input = dataset.value;
|
|
3080
|
+
if (input && typeof input === "object") {
|
|
3081
|
+
dataset.typed = true;
|
|
3082
|
+
dataset.value = {};
|
|
3083
|
+
for (const entryKey in input) if (/* @__PURE__ */ _isValidObjectKey(input, entryKey)) {
|
|
3084
|
+
const entryValue = input[entryKey];
|
|
3085
|
+
const keyDataset = this.key["~run"]({ value: entryKey }, config2);
|
|
3086
|
+
if (keyDataset.issues) {
|
|
3087
|
+
const pathItem = {
|
|
3088
|
+
type: "object",
|
|
3089
|
+
origin: "key",
|
|
3090
|
+
input,
|
|
3091
|
+
key: entryKey,
|
|
3092
|
+
value: entryValue
|
|
3093
|
+
};
|
|
3094
|
+
for (const issue of keyDataset.issues) {
|
|
3095
|
+
issue.path = [pathItem];
|
|
3096
|
+
dataset.issues?.push(issue);
|
|
3097
|
+
}
|
|
3098
|
+
if (!dataset.issues) dataset.issues = keyDataset.issues;
|
|
3099
|
+
if (config2.abortEarly) {
|
|
3100
|
+
dataset.typed = false;
|
|
3101
|
+
break;
|
|
3102
|
+
}
|
|
3103
|
+
}
|
|
3104
|
+
const valueDataset = this.value["~run"]({ value: entryValue }, config2);
|
|
3105
|
+
if (valueDataset.issues) {
|
|
3106
|
+
const pathItem = {
|
|
3107
|
+
type: "object",
|
|
3108
|
+
origin: "value",
|
|
3109
|
+
input,
|
|
3110
|
+
key: entryKey,
|
|
3111
|
+
value: entryValue
|
|
3112
|
+
};
|
|
3113
|
+
for (const issue of valueDataset.issues) {
|
|
3114
|
+
if (issue.path) issue.path.unshift(pathItem);
|
|
3115
|
+
else issue.path = [pathItem];
|
|
3116
|
+
dataset.issues?.push(issue);
|
|
3117
|
+
}
|
|
3118
|
+
if (!dataset.issues) dataset.issues = valueDataset.issues;
|
|
3119
|
+
if (config2.abortEarly) {
|
|
3120
|
+
dataset.typed = false;
|
|
3121
|
+
break;
|
|
3122
|
+
}
|
|
3123
|
+
}
|
|
3124
|
+
if (!keyDataset.typed || !valueDataset.typed) dataset.typed = false;
|
|
3125
|
+
if (keyDataset.typed) dataset.value[keyDataset.value] = valueDataset.value;
|
|
3126
|
+
}
|
|
3127
|
+
} else _addIssue(this, "type", dataset, config2);
|
|
3128
|
+
return dataset;
|
|
3129
|
+
}
|
|
3130
|
+
};
|
|
3131
|
+
}
|
|
3132
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
3133
|
+
function string(message2) {
|
|
3134
|
+
return {
|
|
3135
|
+
kind: "schema",
|
|
3136
|
+
type: "string",
|
|
3137
|
+
reference: string,
|
|
3138
|
+
expects: "string",
|
|
3139
|
+
async: false,
|
|
3140
|
+
message: message2,
|
|
3141
|
+
get "~standard"() {
|
|
3142
|
+
return /* @__PURE__ */ _getStandardProps(this);
|
|
3143
|
+
},
|
|
3144
|
+
"~run"(dataset, config2) {
|
|
3145
|
+
if (typeof dataset.value === "string") dataset.typed = true;
|
|
3146
|
+
else _addIssue(this, "type", dataset, config2);
|
|
3147
|
+
return dataset;
|
|
3148
|
+
}
|
|
3149
|
+
};
|
|
3150
|
+
}
|
|
3151
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
3152
|
+
function _subIssues(datasets) {
|
|
3153
|
+
let issues;
|
|
3154
|
+
if (datasets) for (const dataset of datasets) if (issues) issues.push(...dataset.issues);
|
|
3155
|
+
else issues = dataset.issues;
|
|
3156
|
+
return issues;
|
|
3157
|
+
}
|
|
3158
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
3159
|
+
function union(options, message2) {
|
|
3160
|
+
return {
|
|
3161
|
+
kind: "schema",
|
|
3162
|
+
type: "union",
|
|
3163
|
+
reference: union,
|
|
3164
|
+
expects: /* @__PURE__ */ _joinExpects(options.map((option) => option.expects), "|"),
|
|
3165
|
+
async: false,
|
|
3166
|
+
options,
|
|
3167
|
+
message: message2,
|
|
3168
|
+
get "~standard"() {
|
|
3169
|
+
return /* @__PURE__ */ _getStandardProps(this);
|
|
3170
|
+
},
|
|
3171
|
+
"~run"(dataset, config2) {
|
|
3172
|
+
let validDataset;
|
|
3173
|
+
let typedDatasets;
|
|
3174
|
+
let untypedDatasets;
|
|
3175
|
+
for (const schema of this.options) {
|
|
3176
|
+
const optionDataset = schema["~run"]({ value: dataset.value }, config2);
|
|
3177
|
+
if (optionDataset.typed) if (optionDataset.issues) if (typedDatasets) typedDatasets.push(optionDataset);
|
|
3178
|
+
else typedDatasets = [optionDataset];
|
|
3179
|
+
else {
|
|
3180
|
+
validDataset = optionDataset;
|
|
3181
|
+
break;
|
|
3182
|
+
}
|
|
3183
|
+
else if (untypedDatasets) untypedDatasets.push(optionDataset);
|
|
3184
|
+
else untypedDatasets = [optionDataset];
|
|
3185
|
+
}
|
|
3186
|
+
if (validDataset) return validDataset;
|
|
3187
|
+
if (typedDatasets) {
|
|
3188
|
+
if (typedDatasets.length === 1) return typedDatasets[0];
|
|
3189
|
+
_addIssue(this, "type", dataset, config2, { issues: /* @__PURE__ */ _subIssues(typedDatasets) });
|
|
3190
|
+
dataset.typed = true;
|
|
3191
|
+
} else if (untypedDatasets?.length === 1) return untypedDatasets[0];
|
|
3192
|
+
else _addIssue(this, "type", dataset, config2, { issues: /* @__PURE__ */ _subIssues(untypedDatasets) });
|
|
3193
|
+
return dataset;
|
|
3194
|
+
}
|
|
3195
|
+
};
|
|
3196
|
+
}
|
|
3197
|
+
function parse(schema, input, config2) {
|
|
3198
|
+
const dataset = schema["~run"]({ value: input }, /* @__PURE__ */ getGlobalConfig(config2));
|
|
3199
|
+
if (dataset.issues) throw new ValiError(dataset.issues);
|
|
3200
|
+
return dataset.value;
|
|
3201
|
+
}
|
|
3202
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
3203
|
+
function pipe(...pipe2) {
|
|
3204
|
+
return {
|
|
3205
|
+
...pipe2[0],
|
|
3206
|
+
pipe: pipe2,
|
|
3207
|
+
get "~standard"() {
|
|
3208
|
+
return /* @__PURE__ */ _getStandardProps(this);
|
|
3209
|
+
},
|
|
3210
|
+
"~run"(dataset, config2) {
|
|
3211
|
+
for (const item of pipe2) if (item.kind !== "metadata") {
|
|
3212
|
+
if (dataset.issues && (item.kind === "schema" || item.kind === "transformation")) {
|
|
3213
|
+
dataset.typed = false;
|
|
3214
|
+
break;
|
|
3215
|
+
}
|
|
3216
|
+
if (!dataset.issues || !config2.abortEarly && !config2.abortPipeEarly) dataset = item["~run"](dataset, config2);
|
|
3217
|
+
}
|
|
3218
|
+
return dataset;
|
|
3219
|
+
}
|
|
3220
|
+
};
|
|
3221
|
+
}
|
|
3222
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
3223
|
+
function safeParse(schema, input, config2) {
|
|
3224
|
+
const dataset = schema["~run"]({ value: input }, /* @__PURE__ */ getGlobalConfig(config2));
|
|
3225
|
+
return {
|
|
3226
|
+
typed: dataset.typed,
|
|
3227
|
+
success: !dataset.issues,
|
|
3228
|
+
output: dataset.value,
|
|
3229
|
+
issues: dataset.issues
|
|
3230
|
+
};
|
|
3231
|
+
}
|
|
3232
|
+
|
|
3233
|
+
//#endregion
|
|
3234
|
+
//#region node_modules/consola/dist/core.mjs
|
|
3235
|
+
const LogLevels = {
|
|
3236
|
+
silent: Number.NEGATIVE_INFINITY,
|
|
3237
|
+
fatal: 0,
|
|
3238
|
+
error: 0,
|
|
3239
|
+
warn: 1,
|
|
3240
|
+
log: 2,
|
|
3241
|
+
info: 3,
|
|
3242
|
+
success: 3,
|
|
3243
|
+
fail: 3,
|
|
3244
|
+
ready: 3,
|
|
3245
|
+
start: 3,
|
|
3246
|
+
box: 3,
|
|
3247
|
+
debug: 4,
|
|
3248
|
+
trace: 5,
|
|
3249
|
+
verbose: Number.POSITIVE_INFINITY
|
|
3250
|
+
};
|
|
3251
|
+
const LogTypes = {
|
|
3252
|
+
silent: { level: -1 },
|
|
3253
|
+
fatal: { level: LogLevels.fatal },
|
|
3254
|
+
error: { level: LogLevels.error },
|
|
3255
|
+
warn: { level: LogLevels.warn },
|
|
3256
|
+
log: { level: LogLevels.log },
|
|
3257
|
+
info: { level: LogLevels.info },
|
|
3258
|
+
success: { level: LogLevels.success },
|
|
3259
|
+
fail: { level: LogLevels.fail },
|
|
3260
|
+
ready: { level: LogLevels.info },
|
|
3261
|
+
start: { level: LogLevels.info },
|
|
3262
|
+
box: { level: LogLevels.info },
|
|
3263
|
+
debug: { level: LogLevels.debug },
|
|
3264
|
+
trace: { level: LogLevels.trace },
|
|
3265
|
+
verbose: { level: LogLevels.verbose }
|
|
3266
|
+
};
|
|
3267
|
+
function isPlainObject$1(value) {
|
|
3268
|
+
if (value === null || typeof value !== "object") return false;
|
|
3269
|
+
const prototype = Object.getPrototypeOf(value);
|
|
3270
|
+
if (prototype !== null && prototype !== Object.prototype && Object.getPrototypeOf(prototype) !== null) return false;
|
|
3271
|
+
if (Symbol.iterator in value) return false;
|
|
3272
|
+
if (Symbol.toStringTag in value) return Object.prototype.toString.call(value) === "[object Module]";
|
|
3273
|
+
return true;
|
|
3274
|
+
}
|
|
3275
|
+
function _defu(baseObject, defaults, namespace = ".", merger) {
|
|
3276
|
+
if (!isPlainObject$1(defaults)) return _defu(baseObject, {}, namespace, merger);
|
|
3277
|
+
const object$1 = Object.assign({}, defaults);
|
|
3278
|
+
for (const key in baseObject) {
|
|
3279
|
+
if (key === "__proto__" || key === "constructor") continue;
|
|
3280
|
+
const value = baseObject[key];
|
|
3281
|
+
if (value === null || value === void 0) continue;
|
|
3282
|
+
if (merger && merger(object$1, key, value, namespace)) continue;
|
|
3283
|
+
if (Array.isArray(value) && Array.isArray(object$1[key])) object$1[key] = [...value, ...object$1[key]];
|
|
3284
|
+
else if (isPlainObject$1(value) && isPlainObject$1(object$1[key])) object$1[key] = _defu(value, object$1[key], (namespace ? `${namespace}.` : "") + key.toString(), merger);
|
|
3285
|
+
else object$1[key] = value;
|
|
3286
|
+
}
|
|
3287
|
+
return object$1;
|
|
3288
|
+
}
|
|
3289
|
+
function createDefu(merger) {
|
|
3290
|
+
return (...arguments_) => arguments_.reduce((p, c$1) => _defu(p, c$1, "", merger), {});
|
|
3291
|
+
}
|
|
3292
|
+
const defu = createDefu();
|
|
3293
|
+
function isPlainObject(obj) {
|
|
3294
|
+
return Object.prototype.toString.call(obj) === "[object Object]";
|
|
3295
|
+
}
|
|
3296
|
+
function isLogObj(arg) {
|
|
3297
|
+
if (!isPlainObject(arg)) return false;
|
|
3298
|
+
if (!arg.message && !arg.args) return false;
|
|
3299
|
+
if (arg.stack) return false;
|
|
3300
|
+
return true;
|
|
3301
|
+
}
|
|
3302
|
+
let paused = false;
|
|
3303
|
+
const queue = [];
|
|
3304
|
+
var Consola = class Consola {
|
|
3305
|
+
options;
|
|
3306
|
+
_lastLog;
|
|
3307
|
+
_mockFn;
|
|
3308
|
+
/**
|
|
3309
|
+
* Creates an instance of Consola with specified options or defaults.
|
|
3310
|
+
*
|
|
3311
|
+
* @param {Partial<ConsolaOptions>} [options={}] - Configuration options for the Consola instance.
|
|
3312
|
+
*/
|
|
3313
|
+
constructor(options = {}) {
|
|
3314
|
+
const types = options.types || LogTypes;
|
|
3315
|
+
this.options = defu({
|
|
3316
|
+
...options,
|
|
3317
|
+
defaults: { ...options.defaults },
|
|
3318
|
+
level: _normalizeLogLevel(options.level, types),
|
|
3319
|
+
reporters: [...options.reporters || []]
|
|
3320
|
+
}, {
|
|
3321
|
+
types: LogTypes,
|
|
3322
|
+
throttle: 1e3,
|
|
3323
|
+
throttleMin: 5,
|
|
3324
|
+
formatOptions: {
|
|
3325
|
+
date: true,
|
|
3326
|
+
colors: false,
|
|
3327
|
+
compact: true
|
|
3328
|
+
}
|
|
3329
|
+
});
|
|
3330
|
+
for (const type in types) {
|
|
3331
|
+
const defaults = {
|
|
3332
|
+
type,
|
|
3333
|
+
...this.options.defaults,
|
|
3334
|
+
...types[type]
|
|
3335
|
+
};
|
|
3336
|
+
this[type] = this._wrapLogFn(defaults);
|
|
3337
|
+
this[type].raw = this._wrapLogFn(defaults, true);
|
|
3338
|
+
}
|
|
3339
|
+
if (this.options.mockFn) this.mockTypes();
|
|
3340
|
+
this._lastLog = {};
|
|
3341
|
+
}
|
|
3342
|
+
/**
|
|
3343
|
+
* Gets the current log level of the Consola instance.
|
|
3344
|
+
*
|
|
3345
|
+
* @returns {number} The current log level.
|
|
3346
|
+
*/
|
|
3347
|
+
get level() {
|
|
3348
|
+
return this.options.level;
|
|
3349
|
+
}
|
|
3350
|
+
/**
|
|
3351
|
+
* Sets the minimum log level that will be output by the instance.
|
|
3352
|
+
*
|
|
3353
|
+
* @param {number} level - The new log level to set.
|
|
3354
|
+
*/
|
|
3355
|
+
set level(level) {
|
|
3356
|
+
this.options.level = _normalizeLogLevel(level, this.options.types, this.options.level);
|
|
3357
|
+
}
|
|
3358
|
+
/**
|
|
3359
|
+
* Displays a prompt to the user and returns the response.
|
|
3360
|
+
* Throw an error if `prompt` is not supported by the current configuration.
|
|
3361
|
+
*
|
|
3362
|
+
* @template T
|
|
3363
|
+
* @param {string} message - The message to display in the prompt.
|
|
3364
|
+
* @param {T} [opts] - Optional options for the prompt. See {@link PromptOptions}.
|
|
3365
|
+
* @returns {promise<T>} A promise that infer with the prompt options. See {@link PromptOptions}.
|
|
3366
|
+
*/
|
|
3367
|
+
prompt(message, opts) {
|
|
3368
|
+
if (!this.options.prompt) throw new Error("prompt is not supported!");
|
|
3369
|
+
return this.options.prompt(message, opts);
|
|
3370
|
+
}
|
|
3371
|
+
/**
|
|
3372
|
+
* Creates a new instance of Consola, inheriting options from the current instance, with possible overrides.
|
|
3373
|
+
*
|
|
3374
|
+
* @param {Partial<ConsolaOptions>} options - Optional overrides for the new instance. See {@link ConsolaOptions}.
|
|
3375
|
+
* @returns {ConsolaInstance} A new Consola instance. See {@link ConsolaInstance}.
|
|
3376
|
+
*/
|
|
3377
|
+
create(options) {
|
|
3378
|
+
const instance = new Consola({
|
|
3379
|
+
...this.options,
|
|
3380
|
+
...options
|
|
3381
|
+
});
|
|
3382
|
+
if (this._mockFn) instance.mockTypes(this._mockFn);
|
|
3383
|
+
return instance;
|
|
3384
|
+
}
|
|
3385
|
+
/**
|
|
3386
|
+
* Creates a new Consola instance with the specified default log object properties.
|
|
3387
|
+
*
|
|
3388
|
+
* @param {InputLogObject} defaults - Default properties to include in any log from the new instance. See {@link InputLogObject}.
|
|
3389
|
+
* @returns {ConsolaInstance} A new Consola instance. See {@link ConsolaInstance}.
|
|
3390
|
+
*/
|
|
3391
|
+
withDefaults(defaults) {
|
|
3392
|
+
return this.create({
|
|
3393
|
+
...this.options,
|
|
3394
|
+
defaults: {
|
|
3395
|
+
...this.options.defaults,
|
|
3396
|
+
...defaults
|
|
3397
|
+
}
|
|
3398
|
+
});
|
|
3399
|
+
}
|
|
3400
|
+
/**
|
|
3401
|
+
* Creates a new Consola instance with a specified tag, which will be included in every log.
|
|
3402
|
+
*
|
|
3403
|
+
* @param {string} tag - The tag to include in each log of the new instance.
|
|
3404
|
+
* @returns {ConsolaInstance} A new Consola instance. See {@link ConsolaInstance}.
|
|
3405
|
+
*/
|
|
3406
|
+
withTag(tag) {
|
|
3407
|
+
return this.withDefaults({ tag: this.options.defaults.tag ? this.options.defaults.tag + ":" + tag : tag });
|
|
3408
|
+
}
|
|
3409
|
+
/**
|
|
3410
|
+
* Adds a custom reporter to the Consola instance.
|
|
3411
|
+
* Reporters will be called for each log message, depending on their implementation and log level.
|
|
3412
|
+
*
|
|
3413
|
+
* @param {ConsolaReporter} reporter - The reporter to add. See {@link ConsolaReporter}.
|
|
3414
|
+
* @returns {Consola} The current Consola instance.
|
|
3415
|
+
*/
|
|
3416
|
+
addReporter(reporter) {
|
|
3417
|
+
this.options.reporters.push(reporter);
|
|
3418
|
+
return this;
|
|
3419
|
+
}
|
|
3420
|
+
/**
|
|
3421
|
+
* Removes a custom reporter from the Consola instance.
|
|
3422
|
+
* If no reporter is specified, all reporters will be removed.
|
|
3423
|
+
*
|
|
3424
|
+
* @param {ConsolaReporter} reporter - The reporter to remove. See {@link ConsolaReporter}.
|
|
3425
|
+
* @returns {Consola} The current Consola instance.
|
|
3426
|
+
*/
|
|
3427
|
+
removeReporter(reporter) {
|
|
3428
|
+
if (reporter) {
|
|
3429
|
+
const i$1 = this.options.reporters.indexOf(reporter);
|
|
3430
|
+
if (i$1 !== -1) return this.options.reporters.splice(i$1, 1);
|
|
3431
|
+
} else this.options.reporters.splice(0);
|
|
3432
|
+
return this;
|
|
3433
|
+
}
|
|
3434
|
+
/**
|
|
3435
|
+
* Replaces all reporters of the Consola instance with the specified array of reporters.
|
|
3436
|
+
*
|
|
3437
|
+
* @param {ConsolaReporter[]} reporters - The new reporters to set. See {@link ConsolaReporter}.
|
|
3438
|
+
* @returns {Consola} The current Consola instance.
|
|
3439
|
+
*/
|
|
3440
|
+
setReporters(reporters) {
|
|
3441
|
+
this.options.reporters = Array.isArray(reporters) ? reporters : [reporters];
|
|
3442
|
+
return this;
|
|
3443
|
+
}
|
|
3444
|
+
wrapAll() {
|
|
3445
|
+
this.wrapConsole();
|
|
3446
|
+
this.wrapStd();
|
|
3447
|
+
}
|
|
3448
|
+
restoreAll() {
|
|
3449
|
+
this.restoreConsole();
|
|
3450
|
+
this.restoreStd();
|
|
3451
|
+
}
|
|
3452
|
+
/**
|
|
3453
|
+
* Overrides console methods with Consola logging methods for consistent logging.
|
|
3454
|
+
*/
|
|
3455
|
+
wrapConsole() {
|
|
3456
|
+
for (const type in this.options.types) {
|
|
3457
|
+
if (!console["__" + type]) console["__" + type] = console[type];
|
|
3458
|
+
console[type] = this[type].raw;
|
|
3459
|
+
}
|
|
3460
|
+
}
|
|
3461
|
+
/**
|
|
3462
|
+
* Restores the original console methods, removing Consola overrides.
|
|
3463
|
+
*/
|
|
3464
|
+
restoreConsole() {
|
|
3465
|
+
for (const type in this.options.types) if (console["__" + type]) {
|
|
3466
|
+
console[type] = console["__" + type];
|
|
3467
|
+
delete console["__" + type];
|
|
3468
|
+
}
|
|
3469
|
+
}
|
|
3470
|
+
/**
|
|
3471
|
+
* Overrides standard output and error streams to redirect them through Consola.
|
|
3472
|
+
*/
|
|
3473
|
+
wrapStd() {
|
|
3474
|
+
this._wrapStream(this.options.stdout, "log");
|
|
3475
|
+
this._wrapStream(this.options.stderr, "log");
|
|
3476
|
+
}
|
|
3477
|
+
_wrapStream(stream, type) {
|
|
3478
|
+
if (!stream) return;
|
|
3479
|
+
if (!stream.__write) stream.__write = stream.write;
|
|
3480
|
+
stream.write = (data) => {
|
|
3481
|
+
this[type].raw(String(data).trim());
|
|
3482
|
+
};
|
|
3483
|
+
}
|
|
3484
|
+
/**
|
|
3485
|
+
* Restores the original standard output and error streams, removing the Consola redirection.
|
|
3486
|
+
*/
|
|
3487
|
+
restoreStd() {
|
|
3488
|
+
this._restoreStream(this.options.stdout);
|
|
3489
|
+
this._restoreStream(this.options.stderr);
|
|
3490
|
+
}
|
|
3491
|
+
_restoreStream(stream) {
|
|
3492
|
+
if (!stream) return;
|
|
3493
|
+
if (stream.__write) {
|
|
3494
|
+
stream.write = stream.__write;
|
|
3495
|
+
delete stream.__write;
|
|
3496
|
+
}
|
|
3497
|
+
}
|
|
3498
|
+
/**
|
|
3499
|
+
* Pauses logging, queues incoming logs until resumed.
|
|
3500
|
+
*/
|
|
3501
|
+
pauseLogs() {
|
|
3502
|
+
paused = true;
|
|
3503
|
+
}
|
|
3504
|
+
/**
|
|
3505
|
+
* Resumes logging, processing any queued logs.
|
|
3506
|
+
*/
|
|
3507
|
+
resumeLogs() {
|
|
3508
|
+
paused = false;
|
|
3509
|
+
const _queue = queue.splice(0);
|
|
3510
|
+
for (const item of _queue) item[0]._logFn(item[1], item[2]);
|
|
3511
|
+
}
|
|
3512
|
+
/**
|
|
3513
|
+
* Replaces logging methods with mocks if a mock function is provided.
|
|
3514
|
+
*
|
|
3515
|
+
* @param {ConsolaOptions["mockFn"]} mockFn - The function to use for mocking logging methods. See {@link ConsolaOptions["mockFn"]}.
|
|
3516
|
+
*/
|
|
3517
|
+
mockTypes(mockFn) {
|
|
3518
|
+
const _mockFn = mockFn || this.options.mockFn;
|
|
3519
|
+
this._mockFn = _mockFn;
|
|
3520
|
+
if (typeof _mockFn !== "function") return;
|
|
3521
|
+
for (const type in this.options.types) {
|
|
3522
|
+
this[type] = _mockFn(type, this.options.types[type]) || this[type];
|
|
3523
|
+
this[type].raw = this[type];
|
|
3524
|
+
}
|
|
3525
|
+
}
|
|
3526
|
+
_wrapLogFn(defaults, isRaw) {
|
|
3527
|
+
return (...args) => {
|
|
3528
|
+
if (paused) {
|
|
3529
|
+
queue.push([
|
|
3530
|
+
this,
|
|
3531
|
+
defaults,
|
|
3532
|
+
args,
|
|
3533
|
+
isRaw
|
|
3534
|
+
]);
|
|
3535
|
+
return;
|
|
3536
|
+
}
|
|
3537
|
+
return this._logFn(defaults, args, isRaw);
|
|
3538
|
+
};
|
|
3539
|
+
}
|
|
3540
|
+
_logFn(defaults, args, isRaw) {
|
|
3541
|
+
if ((defaults.level || 0) > this.level) return false;
|
|
3542
|
+
const logObj = {
|
|
3543
|
+
date: /* @__PURE__ */ new Date(),
|
|
3544
|
+
args: [],
|
|
3545
|
+
...defaults,
|
|
3546
|
+
level: _normalizeLogLevel(defaults.level, this.options.types)
|
|
3547
|
+
};
|
|
3548
|
+
if (!isRaw && args.length === 1 && isLogObj(args[0])) Object.assign(logObj, args[0]);
|
|
3549
|
+
else logObj.args = [...args];
|
|
3550
|
+
if (logObj.message) {
|
|
3551
|
+
logObj.args.unshift(logObj.message);
|
|
3552
|
+
delete logObj.message;
|
|
3553
|
+
}
|
|
3554
|
+
if (logObj.additional) {
|
|
3555
|
+
if (!Array.isArray(logObj.additional)) logObj.additional = logObj.additional.split("\n");
|
|
3556
|
+
logObj.args.push("\n" + logObj.additional.join("\n"));
|
|
3557
|
+
delete logObj.additional;
|
|
3558
|
+
}
|
|
3559
|
+
logObj.type = typeof logObj.type === "string" ? logObj.type.toLowerCase() : "log";
|
|
3560
|
+
logObj.tag = typeof logObj.tag === "string" ? logObj.tag : "";
|
|
3561
|
+
const resolveLog = (newLog = false) => {
|
|
3562
|
+
const repeated = (this._lastLog.count || 0) - this.options.throttleMin;
|
|
3563
|
+
if (this._lastLog.object && repeated > 0) {
|
|
3564
|
+
const args2 = [...this._lastLog.object.args];
|
|
3565
|
+
if (repeated > 1) args2.push(`(repeated ${repeated} times)`);
|
|
3566
|
+
this._log({
|
|
3567
|
+
...this._lastLog.object,
|
|
3568
|
+
args: args2
|
|
3569
|
+
});
|
|
3570
|
+
this._lastLog.count = 1;
|
|
3571
|
+
}
|
|
3572
|
+
if (newLog) {
|
|
3573
|
+
this._lastLog.object = logObj;
|
|
3574
|
+
this._log(logObj);
|
|
3575
|
+
}
|
|
3576
|
+
};
|
|
3577
|
+
clearTimeout(this._lastLog.timeout);
|
|
3578
|
+
const diffTime = this._lastLog.time && logObj.date ? logObj.date.getTime() - this._lastLog.time.getTime() : 0;
|
|
3579
|
+
this._lastLog.time = logObj.date;
|
|
3580
|
+
if (diffTime < this.options.throttle) try {
|
|
3581
|
+
const serializedLog = JSON.stringify([
|
|
3582
|
+
logObj.type,
|
|
3583
|
+
logObj.tag,
|
|
3584
|
+
logObj.args
|
|
3585
|
+
]);
|
|
3586
|
+
const isSameLog = this._lastLog.serialized === serializedLog;
|
|
3587
|
+
this._lastLog.serialized = serializedLog;
|
|
3588
|
+
if (isSameLog) {
|
|
3589
|
+
this._lastLog.count = (this._lastLog.count || 0) + 1;
|
|
3590
|
+
if (this._lastLog.count > this.options.throttleMin) {
|
|
3591
|
+
this._lastLog.timeout = setTimeout(resolveLog, this.options.throttle);
|
|
3592
|
+
return;
|
|
3593
|
+
}
|
|
3594
|
+
}
|
|
3595
|
+
} catch {}
|
|
3596
|
+
resolveLog(true);
|
|
3597
|
+
}
|
|
3598
|
+
_log(logObj) {
|
|
3599
|
+
for (const reporter of this.options.reporters) reporter.log(logObj, { options: this.options });
|
|
3600
|
+
}
|
|
3601
|
+
};
|
|
3602
|
+
function _normalizeLogLevel(input, types = {}, defaultLevel = 3) {
|
|
3603
|
+
if (input === void 0) return defaultLevel;
|
|
3604
|
+
if (typeof input === "number") return input;
|
|
3605
|
+
if (types[input] && types[input].level !== void 0) return types[input].level;
|
|
3606
|
+
return defaultLevel;
|
|
3607
|
+
}
|
|
3608
|
+
Consola.prototype.add = Consola.prototype.addReporter;
|
|
3609
|
+
Consola.prototype.remove = Consola.prototype.removeReporter;
|
|
3610
|
+
Consola.prototype.clear = Consola.prototype.removeReporter;
|
|
3611
|
+
Consola.prototype.withScope = Consola.prototype.withTag;
|
|
3612
|
+
Consola.prototype.mock = Consola.prototype.mockTypes;
|
|
3613
|
+
Consola.prototype.pause = Consola.prototype.pauseLogs;
|
|
3614
|
+
Consola.prototype.resume = Consola.prototype.resumeLogs;
|
|
3615
|
+
function createConsola$1(options = {}) {
|
|
3616
|
+
return new Consola(options);
|
|
3617
|
+
}
|
|
3618
|
+
|
|
3619
|
+
//#endregion
|
|
3620
|
+
//#region node_modules/consola/dist/shared/consola.DRwqZj3T.mjs
|
|
3621
|
+
function parseStack(stack, message) {
|
|
3622
|
+
const cwd = process.cwd() + sep;
|
|
3623
|
+
const lines = stack.split("\n").splice(message.split("\n").length).map((l$1) => l$1.trim().replace("file://", "").replace(cwd, ""));
|
|
3624
|
+
return lines;
|
|
3625
|
+
}
|
|
3626
|
+
function writeStream(data, stream) {
|
|
3627
|
+
const write = stream.__write || stream.write;
|
|
3628
|
+
return write.call(stream, data);
|
|
3629
|
+
}
|
|
3630
|
+
const bracket = (x) => x ? `[${x}]` : "";
|
|
3631
|
+
var BasicReporter = class {
|
|
3632
|
+
formatStack(stack, message, opts) {
|
|
3633
|
+
const indent = " ".repeat((opts?.errorLevel || 0) + 1);
|
|
3634
|
+
return indent + parseStack(stack, message).join(`
|
|
3635
|
+
${indent}`);
|
|
3636
|
+
}
|
|
3637
|
+
formatError(err, opts) {
|
|
3638
|
+
const message = err.message ?? formatWithOptions(opts, err);
|
|
3639
|
+
const stack = err.stack ? this.formatStack(err.stack, message, opts) : "";
|
|
3640
|
+
const level = opts?.errorLevel || 0;
|
|
3641
|
+
const causedPrefix = level > 0 ? `${" ".repeat(level)}[cause]: ` : "";
|
|
3642
|
+
const causedError = err.cause ? "\n\n" + this.formatError(err.cause, {
|
|
3643
|
+
...opts,
|
|
3644
|
+
errorLevel: level + 1
|
|
3645
|
+
}) : "";
|
|
3646
|
+
return causedPrefix + message + "\n" + stack + causedError;
|
|
3647
|
+
}
|
|
3648
|
+
formatArgs(args, opts) {
|
|
3649
|
+
const _args = args.map((arg) => {
|
|
3650
|
+
if (arg && typeof arg.stack === "string") return this.formatError(arg, opts);
|
|
3651
|
+
return arg;
|
|
3652
|
+
});
|
|
3653
|
+
return formatWithOptions(opts, ..._args);
|
|
3654
|
+
}
|
|
3655
|
+
formatDate(date, opts) {
|
|
3656
|
+
return opts.date ? date.toLocaleTimeString() : "";
|
|
3657
|
+
}
|
|
3658
|
+
filterAndJoin(arr) {
|
|
3659
|
+
return arr.filter(Boolean).join(" ");
|
|
3660
|
+
}
|
|
3661
|
+
formatLogObj(logObj, opts) {
|
|
3662
|
+
const message = this.formatArgs(logObj.args, opts);
|
|
3663
|
+
if (logObj.type === "box") return "\n" + [
|
|
3664
|
+
bracket(logObj.tag),
|
|
3665
|
+
logObj.title && logObj.title,
|
|
3666
|
+
...message.split("\n")
|
|
3667
|
+
].filter(Boolean).map((l$1) => " > " + l$1).join("\n") + "\n";
|
|
3668
|
+
return this.filterAndJoin([
|
|
3669
|
+
bracket(logObj.type),
|
|
3670
|
+
bracket(logObj.tag),
|
|
3671
|
+
message
|
|
3672
|
+
]);
|
|
3673
|
+
}
|
|
3674
|
+
log(logObj, ctx) {
|
|
3675
|
+
const line = this.formatLogObj(logObj, {
|
|
3676
|
+
columns: ctx.options.stdout.columns || 0,
|
|
3677
|
+
...ctx.options.formatOptions
|
|
3678
|
+
});
|
|
3679
|
+
return writeStream(line + "\n", logObj.level < 2 ? ctx.options.stderr || process.stderr : ctx.options.stdout || process.stdout);
|
|
3680
|
+
}
|
|
3681
|
+
};
|
|
3682
|
+
|
|
3683
|
+
//#endregion
|
|
3684
|
+
//#region node_modules/consola/dist/shared/consola.DXBYu-KD.mjs
|
|
3685
|
+
const { env = {}, argv = [], platform = "" } = typeof process === "undefined" ? {} : process;
|
|
3686
|
+
const isDisabled = "NO_COLOR" in env || argv.includes("--no-color");
|
|
3687
|
+
const isForced = "FORCE_COLOR" in env || argv.includes("--color");
|
|
3688
|
+
const isWindows = platform === "win32";
|
|
3689
|
+
const isDumbTerminal = env.TERM === "dumb";
|
|
3690
|
+
const isCompatibleTerminal = tty && tty.isatty && tty.isatty(1) && env.TERM && !isDumbTerminal;
|
|
3691
|
+
const isCI = "CI" in env && ("GITHUB_ACTIONS" in env || "GITLAB_CI" in env || "CIRCLECI" in env);
|
|
3692
|
+
const isColorSupported = !isDisabled && (isForced || isWindows && !isDumbTerminal || isCompatibleTerminal || isCI);
|
|
3693
|
+
function replaceClose(index, string$1, close, replace, head = string$1.slice(0, Math.max(0, index)) + replace, tail = string$1.slice(Math.max(0, index + close.length)), next = tail.indexOf(close)) {
|
|
3694
|
+
return head + (next < 0 ? tail : replaceClose(next, tail, close, replace));
|
|
3695
|
+
}
|
|
3696
|
+
function clearBleed(index, string$1, open, close, replace) {
|
|
3697
|
+
return index < 0 ? open + string$1 + close : open + replaceClose(index, string$1, close, replace) + close;
|
|
3698
|
+
}
|
|
3699
|
+
function filterEmpty(open, close, replace = open, at = open.length + 1) {
|
|
3700
|
+
return (string$1) => string$1 || !(string$1 === "" || string$1 === void 0) ? clearBleed(("" + string$1).indexOf(close, at), string$1, open, close, replace) : "";
|
|
3701
|
+
}
|
|
3702
|
+
function init(open, close, replace) {
|
|
3703
|
+
return filterEmpty(`\x1B[${open}m`, `\x1B[${close}m`, replace);
|
|
3704
|
+
}
|
|
3705
|
+
const colorDefs = {
|
|
3706
|
+
reset: init(0, 0),
|
|
3707
|
+
bold: init(1, 22, "\x1B[22m\x1B[1m"),
|
|
3708
|
+
dim: init(2, 22, "\x1B[22m\x1B[2m"),
|
|
3709
|
+
italic: init(3, 23),
|
|
3710
|
+
underline: init(4, 24),
|
|
3711
|
+
inverse: init(7, 27),
|
|
3712
|
+
hidden: init(8, 28),
|
|
3713
|
+
strikethrough: init(9, 29),
|
|
3714
|
+
black: init(30, 39),
|
|
3715
|
+
red: init(31, 39),
|
|
3716
|
+
green: init(32, 39),
|
|
3717
|
+
yellow: init(33, 39),
|
|
3718
|
+
blue: init(34, 39),
|
|
3719
|
+
magenta: init(35, 39),
|
|
3720
|
+
cyan: init(36, 39),
|
|
3721
|
+
white: init(37, 39),
|
|
3722
|
+
gray: init(90, 39),
|
|
3723
|
+
bgBlack: init(40, 49),
|
|
3724
|
+
bgRed: init(41, 49),
|
|
3725
|
+
bgGreen: init(42, 49),
|
|
3726
|
+
bgYellow: init(43, 49),
|
|
3727
|
+
bgBlue: init(44, 49),
|
|
3728
|
+
bgMagenta: init(45, 49),
|
|
3729
|
+
bgCyan: init(46, 49),
|
|
3730
|
+
bgWhite: init(47, 49),
|
|
3731
|
+
blackBright: init(90, 39),
|
|
3732
|
+
redBright: init(91, 39),
|
|
3733
|
+
greenBright: init(92, 39),
|
|
3734
|
+
yellowBright: init(93, 39),
|
|
3735
|
+
blueBright: init(94, 39),
|
|
3736
|
+
magentaBright: init(95, 39),
|
|
3737
|
+
cyanBright: init(96, 39),
|
|
3738
|
+
whiteBright: init(97, 39),
|
|
3739
|
+
bgBlackBright: init(100, 49),
|
|
3740
|
+
bgRedBright: init(101, 49),
|
|
3741
|
+
bgGreenBright: init(102, 49),
|
|
3742
|
+
bgYellowBright: init(103, 49),
|
|
3743
|
+
bgBlueBright: init(104, 49),
|
|
3744
|
+
bgMagentaBright: init(105, 49),
|
|
3745
|
+
bgCyanBright: init(106, 49),
|
|
3746
|
+
bgWhiteBright: init(107, 49)
|
|
3747
|
+
};
|
|
3748
|
+
function createColors(useColor = isColorSupported) {
|
|
3749
|
+
return useColor ? colorDefs : Object.fromEntries(Object.keys(colorDefs).map((key) => [key, String]));
|
|
3750
|
+
}
|
|
3751
|
+
const colors = createColors();
|
|
3752
|
+
function getColor$1(color, fallback = "reset") {
|
|
3753
|
+
return colors[color] || colors[fallback];
|
|
3754
|
+
}
|
|
3755
|
+
const ansiRegex$1 = [String.raw`[\u001B\u009B][[\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\d\/#&.:=?%@~_]+)*|[a-zA-Z\d]+(?:;[-a-zA-Z\d\/#&.:=?%@~_]*)*)?\u0007)`, String.raw`(?:(?:\d{1,4}(?:;\d{0,4})*)?[\dA-PR-TZcf-nq-uy=><~]))`].join("|");
|
|
3756
|
+
function stripAnsi$1(text) {
|
|
3757
|
+
return text.replace(new RegExp(ansiRegex$1, "g"), "");
|
|
3758
|
+
}
|
|
3759
|
+
const boxStylePresets = {
|
|
3760
|
+
solid: {
|
|
3761
|
+
tl: "┌",
|
|
3762
|
+
tr: "┐",
|
|
3763
|
+
bl: "└",
|
|
3764
|
+
br: "┘",
|
|
3765
|
+
h: "─",
|
|
3766
|
+
v: "│"
|
|
3767
|
+
},
|
|
3768
|
+
double: {
|
|
3769
|
+
tl: "╔",
|
|
3770
|
+
tr: "╗",
|
|
3771
|
+
bl: "╚",
|
|
3772
|
+
br: "╝",
|
|
3773
|
+
h: "═",
|
|
3774
|
+
v: "║"
|
|
3775
|
+
},
|
|
3776
|
+
doubleSingle: {
|
|
3777
|
+
tl: "╓",
|
|
3778
|
+
tr: "╖",
|
|
3779
|
+
bl: "╙",
|
|
3780
|
+
br: "╜",
|
|
3781
|
+
h: "─",
|
|
3782
|
+
v: "║"
|
|
3783
|
+
},
|
|
3784
|
+
doubleSingleRounded: {
|
|
3785
|
+
tl: "╭",
|
|
3786
|
+
tr: "╮",
|
|
3787
|
+
bl: "╰",
|
|
3788
|
+
br: "╯",
|
|
3789
|
+
h: "─",
|
|
3790
|
+
v: "║"
|
|
3791
|
+
},
|
|
3792
|
+
singleThick: {
|
|
3793
|
+
tl: "┏",
|
|
3794
|
+
tr: "┓",
|
|
3795
|
+
bl: "┗",
|
|
3796
|
+
br: "┛",
|
|
3797
|
+
h: "━",
|
|
3798
|
+
v: "┃"
|
|
3799
|
+
},
|
|
3800
|
+
singleDouble: {
|
|
3801
|
+
tl: "╒",
|
|
3802
|
+
tr: "╕",
|
|
3803
|
+
bl: "╘",
|
|
3804
|
+
br: "╛",
|
|
3805
|
+
h: "═",
|
|
3806
|
+
v: "│"
|
|
3807
|
+
},
|
|
3808
|
+
singleDoubleRounded: {
|
|
3809
|
+
tl: "╭",
|
|
3810
|
+
tr: "╮",
|
|
3811
|
+
bl: "╰",
|
|
3812
|
+
br: "╯",
|
|
3813
|
+
h: "═",
|
|
3814
|
+
v: "│"
|
|
3815
|
+
},
|
|
3816
|
+
rounded: {
|
|
3817
|
+
tl: "╭",
|
|
3818
|
+
tr: "╮",
|
|
3819
|
+
bl: "╰",
|
|
3820
|
+
br: "╯",
|
|
3821
|
+
h: "─",
|
|
3822
|
+
v: "│"
|
|
3823
|
+
}
|
|
3824
|
+
};
|
|
3825
|
+
const defaultStyle = {
|
|
3826
|
+
borderColor: "white",
|
|
3827
|
+
borderStyle: "rounded",
|
|
3828
|
+
valign: "center",
|
|
3829
|
+
padding: 2,
|
|
3830
|
+
marginLeft: 1,
|
|
3831
|
+
marginTop: 1,
|
|
3832
|
+
marginBottom: 1
|
|
3833
|
+
};
|
|
3834
|
+
function box(text, _opts = {}) {
|
|
3835
|
+
const opts = {
|
|
3836
|
+
..._opts,
|
|
3837
|
+
style: {
|
|
3838
|
+
...defaultStyle,
|
|
3839
|
+
..._opts.style
|
|
3840
|
+
}
|
|
3841
|
+
};
|
|
3842
|
+
const textLines = text.split("\n");
|
|
3843
|
+
const boxLines = [];
|
|
3844
|
+
const _color = getColor$1(opts.style.borderColor);
|
|
3845
|
+
const borderStyle = { ...typeof opts.style.borderStyle === "string" ? boxStylePresets[opts.style.borderStyle] || boxStylePresets.solid : opts.style.borderStyle };
|
|
3846
|
+
if (_color) for (const key in borderStyle) borderStyle[key] = _color(borderStyle[key]);
|
|
3847
|
+
const paddingOffset = opts.style.padding % 2 === 0 ? opts.style.padding : opts.style.padding + 1;
|
|
3848
|
+
const height = textLines.length + paddingOffset;
|
|
3849
|
+
const width = Math.max(...textLines.map((line) => stripAnsi$1(line).length), opts.title ? stripAnsi$1(opts.title).length : 0) + paddingOffset;
|
|
3850
|
+
const widthOffset = width + paddingOffset;
|
|
3851
|
+
const leftSpace = opts.style.marginLeft > 0 ? " ".repeat(opts.style.marginLeft) : "";
|
|
3852
|
+
if (opts.style.marginTop > 0) boxLines.push("".repeat(opts.style.marginTop));
|
|
3853
|
+
if (opts.title) {
|
|
3854
|
+
const title = _color ? _color(opts.title) : opts.title;
|
|
3855
|
+
const left = borderStyle.h.repeat(Math.floor((width - stripAnsi$1(opts.title).length) / 2));
|
|
3856
|
+
const right = borderStyle.h.repeat(width - stripAnsi$1(opts.title).length - stripAnsi$1(left).length + paddingOffset);
|
|
3857
|
+
boxLines.push(`${leftSpace}${borderStyle.tl}${left}${title}${right}${borderStyle.tr}`);
|
|
3858
|
+
} else boxLines.push(`${leftSpace}${borderStyle.tl}${borderStyle.h.repeat(widthOffset)}${borderStyle.tr}`);
|
|
3859
|
+
const valignOffset = opts.style.valign === "center" ? Math.floor((height - textLines.length) / 2) : opts.style.valign === "top" ? height - textLines.length - paddingOffset : height - textLines.length;
|
|
3860
|
+
for (let i$1 = 0; i$1 < height; i$1++) if (i$1 < valignOffset || i$1 >= valignOffset + textLines.length) boxLines.push(`${leftSpace}${borderStyle.v}${" ".repeat(widthOffset)}${borderStyle.v}`);
|
|
3861
|
+
else {
|
|
3862
|
+
const line = textLines[i$1 - valignOffset];
|
|
3863
|
+
const left = " ".repeat(paddingOffset);
|
|
3864
|
+
const right = " ".repeat(width - stripAnsi$1(line).length);
|
|
3865
|
+
boxLines.push(`${leftSpace}${borderStyle.v}${left}${line}${right}${borderStyle.v}`);
|
|
3866
|
+
}
|
|
3867
|
+
boxLines.push(`${leftSpace}${borderStyle.bl}${borderStyle.h.repeat(widthOffset)}${borderStyle.br}`);
|
|
3868
|
+
if (opts.style.marginBottom > 0) boxLines.push("".repeat(opts.style.marginBottom));
|
|
3869
|
+
return boxLines.join("\n");
|
|
3870
|
+
}
|
|
3871
|
+
|
|
3872
|
+
//#endregion
|
|
3873
|
+
//#region node_modules/consola/dist/index.mjs
|
|
3874
|
+
const r = Object.create(null), i = (e) => globalThis.process?.env || import.meta.env || globalThis.Deno?.env.toObject() || globalThis.__env__ || (e ? r : globalThis), o = new Proxy(r, {
|
|
3875
|
+
get(e, s$1) {
|
|
3876
|
+
return i()[s$1] ?? r[s$1];
|
|
3877
|
+
},
|
|
3878
|
+
has(e, s$1) {
|
|
3879
|
+
const E = i();
|
|
3880
|
+
return s$1 in E || s$1 in r;
|
|
3881
|
+
},
|
|
3882
|
+
set(e, s$1, E) {
|
|
3883
|
+
const B = i(true);
|
|
3884
|
+
return B[s$1] = E, true;
|
|
3885
|
+
},
|
|
3886
|
+
deleteProperty(e, s$1) {
|
|
3887
|
+
if (!s$1) return false;
|
|
3888
|
+
const E = i(true);
|
|
3889
|
+
return delete E[s$1], true;
|
|
3890
|
+
},
|
|
3891
|
+
ownKeys() {
|
|
3892
|
+
const e = i(true);
|
|
3893
|
+
return Object.keys(e);
|
|
3894
|
+
}
|
|
3895
|
+
}), t = typeof process < "u" && process.env && process.env.NODE_ENV || "", f = [
|
|
3896
|
+
["APPVEYOR"],
|
|
3897
|
+
[
|
|
3898
|
+
"AWS_AMPLIFY",
|
|
3899
|
+
"AWS_APP_ID",
|
|
3900
|
+
{ ci: true }
|
|
3901
|
+
],
|
|
3902
|
+
["AZURE_PIPELINES", "SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"],
|
|
3903
|
+
["AZURE_STATIC", "INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN"],
|
|
3904
|
+
["APPCIRCLE", "AC_APPCIRCLE"],
|
|
3905
|
+
["BAMBOO", "bamboo_planKey"],
|
|
3906
|
+
["BITBUCKET", "BITBUCKET_COMMIT"],
|
|
3907
|
+
["BITRISE", "BITRISE_IO"],
|
|
3908
|
+
["BUDDY", "BUDDY_WORKSPACE_ID"],
|
|
3909
|
+
["BUILDKITE"],
|
|
3910
|
+
["CIRCLE", "CIRCLECI"],
|
|
3911
|
+
["CIRRUS", "CIRRUS_CI"],
|
|
3912
|
+
[
|
|
3913
|
+
"CLOUDFLARE_PAGES",
|
|
3914
|
+
"CF_PAGES",
|
|
3915
|
+
{ ci: true }
|
|
3916
|
+
],
|
|
3917
|
+
["CODEBUILD", "CODEBUILD_BUILD_ARN"],
|
|
3918
|
+
["CODEFRESH", "CF_BUILD_ID"],
|
|
3919
|
+
["DRONE"],
|
|
3920
|
+
["DRONE", "DRONE_BUILD_EVENT"],
|
|
3921
|
+
["DSARI"],
|
|
3922
|
+
["GITHUB_ACTIONS"],
|
|
3923
|
+
["GITLAB", "GITLAB_CI"],
|
|
3924
|
+
["GITLAB", "CI_MERGE_REQUEST_ID"],
|
|
3925
|
+
["GOCD", "GO_PIPELINE_LABEL"],
|
|
3926
|
+
["LAYERCI"],
|
|
3927
|
+
["HUDSON", "HUDSON_URL"],
|
|
3928
|
+
["JENKINS", "JENKINS_URL"],
|
|
3929
|
+
["MAGNUM"],
|
|
3930
|
+
["NETLIFY"],
|
|
3931
|
+
[
|
|
3932
|
+
"NETLIFY",
|
|
3933
|
+
"NETLIFY_LOCAL",
|
|
3934
|
+
{ ci: false }
|
|
3935
|
+
],
|
|
3936
|
+
["NEVERCODE"],
|
|
3937
|
+
["RENDER"],
|
|
3938
|
+
["SAIL", "SAILCI"],
|
|
3939
|
+
["SEMAPHORE"],
|
|
3940
|
+
["SCREWDRIVER"],
|
|
3941
|
+
["SHIPPABLE"],
|
|
3942
|
+
["SOLANO", "TDDIUM"],
|
|
3943
|
+
["STRIDER"],
|
|
3944
|
+
["TEAMCITY", "TEAMCITY_VERSION"],
|
|
3945
|
+
["TRAVIS"],
|
|
3946
|
+
["VERCEL", "NOW_BUILDER"],
|
|
3947
|
+
[
|
|
3948
|
+
"VERCEL",
|
|
3949
|
+
"VERCEL",
|
|
3950
|
+
{ ci: false }
|
|
3951
|
+
],
|
|
3952
|
+
[
|
|
3953
|
+
"VERCEL",
|
|
3954
|
+
"VERCEL_ENV",
|
|
3955
|
+
{ ci: false }
|
|
3956
|
+
],
|
|
3957
|
+
["APPCENTER", "APPCENTER_BUILD_ID"],
|
|
3958
|
+
[
|
|
3959
|
+
"CODESANDBOX",
|
|
3960
|
+
"CODESANDBOX_SSE",
|
|
3961
|
+
{ ci: false }
|
|
3962
|
+
],
|
|
3963
|
+
[
|
|
3964
|
+
"CODESANDBOX",
|
|
3965
|
+
"CODESANDBOX_HOST",
|
|
3966
|
+
{ ci: false }
|
|
3967
|
+
],
|
|
3968
|
+
["STACKBLITZ"],
|
|
3969
|
+
["STORMKIT"],
|
|
3970
|
+
["CLEAVR"],
|
|
3971
|
+
["ZEABUR"],
|
|
3972
|
+
[
|
|
3973
|
+
"CODESPHERE",
|
|
3974
|
+
"CODESPHERE_APP_ID",
|
|
3975
|
+
{ ci: true }
|
|
3976
|
+
],
|
|
3977
|
+
["RAILWAY", "RAILWAY_PROJECT_ID"],
|
|
3978
|
+
["RAILWAY", "RAILWAY_SERVICE_ID"],
|
|
3979
|
+
["DENO-DEPLOY", "DENO_DEPLOYMENT_ID"],
|
|
3980
|
+
[
|
|
3981
|
+
"FIREBASE_APP_HOSTING",
|
|
3982
|
+
"FIREBASE_APP_HOSTING",
|
|
3983
|
+
{ ci: true }
|
|
3984
|
+
]
|
|
3985
|
+
];
|
|
3986
|
+
function b() {
|
|
3987
|
+
if (globalThis.process?.env) for (const e of f) {
|
|
3988
|
+
const s$1 = e[1] || e[0];
|
|
3989
|
+
if (globalThis.process?.env[s$1]) return {
|
|
3990
|
+
name: e[0].toLowerCase(),
|
|
3991
|
+
...e[2]
|
|
3992
|
+
};
|
|
3993
|
+
}
|
|
3994
|
+
return globalThis.process?.env?.SHELL === "/bin/jsh" && globalThis.process?.versions?.webcontainer ? {
|
|
3995
|
+
name: "stackblitz",
|
|
3996
|
+
ci: false
|
|
3997
|
+
} : {
|
|
3998
|
+
name: "",
|
|
3999
|
+
ci: false
|
|
4000
|
+
};
|
|
4001
|
+
}
|
|
4002
|
+
const l = b();
|
|
4003
|
+
l.name;
|
|
4004
|
+
function n(e) {
|
|
4005
|
+
return e ? e !== "false" : false;
|
|
4006
|
+
}
|
|
4007
|
+
const I = globalThis.process?.platform || "", T = n(o.CI) || l.ci !== false, a = n(globalThis.process?.stdout && globalThis.process?.stdout.isTTY), g = n(o.DEBUG), R = t === "test" || n(o.TEST);
|
|
4008
|
+
n(o.MINIMAL);
|
|
4009
|
+
const A = /^win/i.test(I);
|
|
4010
|
+
!n(o.NO_COLOR) && (n(o.FORCE_COLOR) || (a || A) && o.TERM);
|
|
4011
|
+
const C = (globalThis.process?.versions?.node || "").replace(/^v/, "") || null;
|
|
4012
|
+
Number(C?.split(".")[0]);
|
|
4013
|
+
const y = globalThis.process || Object.create(null), _ = { versions: {} };
|
|
4014
|
+
new Proxy(y, { get(e, s$1) {
|
|
4015
|
+
if (s$1 === "env") return o;
|
|
4016
|
+
if (s$1 in e) return e[s$1];
|
|
4017
|
+
if (s$1 in _) return _[s$1];
|
|
4018
|
+
} });
|
|
4019
|
+
const c = globalThis.process?.release?.name === "node", O = !!globalThis.Bun || !!globalThis.process?.versions?.bun, D = !!globalThis.Deno, L = !!globalThis.fastly, S = !!globalThis.Netlify, u = !!globalThis.EdgeRuntime, N = globalThis.navigator?.userAgent === "Cloudflare-Workers", F = [
|
|
4020
|
+
[S, "netlify"],
|
|
4021
|
+
[u, "edge-light"],
|
|
4022
|
+
[N, "workerd"],
|
|
4023
|
+
[L, "fastly"],
|
|
4024
|
+
[D, "deno"],
|
|
4025
|
+
[O, "bun"],
|
|
4026
|
+
[c, "node"]
|
|
4027
|
+
];
|
|
4028
|
+
function G() {
|
|
4029
|
+
const e = F.find((s$1) => s$1[0]);
|
|
4030
|
+
if (e) return { name: e[1] };
|
|
4031
|
+
}
|
|
4032
|
+
const P = G();
|
|
4033
|
+
P?.name;
|
|
4034
|
+
function ansiRegex({ onlyFirst = false } = {}) {
|
|
4035
|
+
const ST = "(?:\\u0007|\\u001B\\u005C|\\u009C)";
|
|
4036
|
+
const pattern = [`[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?${ST})`, "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");
|
|
4037
|
+
return new RegExp(pattern, onlyFirst ? void 0 : "g");
|
|
4038
|
+
}
|
|
4039
|
+
const regex = ansiRegex();
|
|
4040
|
+
function stripAnsi(string$1) {
|
|
4041
|
+
if (typeof string$1 !== "string") throw new TypeError(`Expected a \`string\`, got \`${typeof string$1}\``);
|
|
4042
|
+
return string$1.replace(regex, "");
|
|
4043
|
+
}
|
|
4044
|
+
function isAmbiguous(x) {
|
|
4045
|
+
return x === 161 || x === 164 || x === 167 || x === 168 || x === 170 || x === 173 || x === 174 || x >= 176 && x <= 180 || x >= 182 && x <= 186 || x >= 188 && x <= 191 || x === 198 || x === 208 || x === 215 || x === 216 || x >= 222 && x <= 225 || x === 230 || x >= 232 && x <= 234 || x === 236 || x === 237 || x === 240 || x === 242 || x === 243 || x >= 247 && x <= 250 || x === 252 || x === 254 || x === 257 || x === 273 || x === 275 || x === 283 || x === 294 || x === 295 || x === 299 || x >= 305 && x <= 307 || x === 312 || x >= 319 && x <= 322 || x === 324 || x >= 328 && x <= 331 || x === 333 || x === 338 || x === 339 || x === 358 || x === 359 || x === 363 || x === 462 || x === 464 || x === 466 || x === 468 || x === 470 || x === 472 || x === 474 || x === 476 || x === 593 || x === 609 || x === 708 || x === 711 || x >= 713 && x <= 715 || x === 717 || x === 720 || x >= 728 && x <= 731 || x === 733 || x === 735 || x >= 768 && x <= 879 || x >= 913 && x <= 929 || x >= 931 && x <= 937 || x >= 945 && x <= 961 || x >= 963 && x <= 969 || x === 1025 || x >= 1040 && x <= 1103 || x === 1105 || x === 8208 || x >= 8211 && x <= 8214 || x === 8216 || x === 8217 || x === 8220 || x === 8221 || x >= 8224 && x <= 8226 || x >= 8228 && x <= 8231 || x === 8240 || x === 8242 || x === 8243 || x === 8245 || x === 8251 || x === 8254 || x === 8308 || x === 8319 || x >= 8321 && x <= 8324 || x === 8364 || x === 8451 || x === 8453 || x === 8457 || x === 8467 || x === 8470 || x === 8481 || x === 8482 || x === 8486 || x === 8491 || x === 8531 || x === 8532 || x >= 8539 && x <= 8542 || x >= 8544 && x <= 8555 || x >= 8560 && x <= 8569 || x === 8585 || x >= 8592 && x <= 8601 || x === 8632 || x === 8633 || x === 8658 || x === 8660 || x === 8679 || x === 8704 || x === 8706 || x === 8707 || x === 8711 || x === 8712 || x === 8715 || x === 8719 || x === 8721 || x === 8725 || x === 8730 || x >= 8733 && x <= 8736 || x === 8739 || x === 8741 || x >= 8743 && x <= 8748 || x === 8750 || x >= 8756 && x <= 8759 || x === 8764 || x === 8765 || x === 8776 || x === 8780 || x === 8786 || x === 8800 || x === 8801 || x >= 8804 && x <= 8807 || x === 8810 || x === 8811 || x === 8814 || x === 8815 || x === 8834 || x === 8835 || x === 8838 || x === 8839 || x === 8853 || x === 8857 || x === 8869 || x === 8895 || x === 8978 || x >= 9312 && x <= 9449 || x >= 9451 && x <= 9547 || x >= 9552 && x <= 9587 || x >= 9600 && x <= 9615 || x >= 9618 && x <= 9621 || x === 9632 || x === 9633 || x >= 9635 && x <= 9641 || x === 9650 || x === 9651 || x === 9654 || x === 9655 || x === 9660 || x === 9661 || x === 9664 || x === 9665 || x >= 9670 && x <= 9672 || x === 9675 || x >= 9678 && x <= 9681 || x >= 9698 && x <= 9701 || x === 9711 || x === 9733 || x === 9734 || x === 9737 || x === 9742 || x === 9743 || x === 9756 || x === 9758 || x === 9792 || x === 9794 || x === 9824 || x === 9825 || x >= 9827 && x <= 9829 || x >= 9831 && x <= 9834 || x === 9836 || x === 9837 || x === 9839 || x === 9886 || x === 9887 || x === 9919 || x >= 9926 && x <= 9933 || x >= 9935 && x <= 9939 || x >= 9941 && x <= 9953 || x === 9955 || x === 9960 || x === 9961 || x >= 9963 && x <= 9969 || x === 9972 || x >= 9974 && x <= 9977 || x === 9979 || x === 9980 || x === 9982 || x === 9983 || x === 10045 || x >= 10102 && x <= 10111 || x >= 11094 && x <= 11097 || x >= 12872 && x <= 12879 || x >= 57344 && x <= 63743 || x >= 65024 && x <= 65039 || x === 65533 || x >= 127232 && x <= 127242 || x >= 127248 && x <= 127277 || x >= 127280 && x <= 127337 || x >= 127344 && x <= 127373 || x === 127375 || x === 127376 || x >= 127387 && x <= 127404 || x >= 917760 && x <= 917999 || x >= 983040 && x <= 1048573 || x >= 1048576 && x <= 1114109;
|
|
4046
|
+
}
|
|
4047
|
+
function isFullWidth(x) {
|
|
4048
|
+
return x === 12288 || x >= 65281 && x <= 65376 || x >= 65504 && x <= 65510;
|
|
4049
|
+
}
|
|
4050
|
+
function isWide(x) {
|
|
4051
|
+
return x >= 4352 && x <= 4447 || x === 8986 || x === 8987 || x === 9001 || x === 9002 || x >= 9193 && x <= 9196 || x === 9200 || x === 9203 || x === 9725 || x === 9726 || x === 9748 || x === 9749 || x >= 9776 && x <= 9783 || x >= 9800 && x <= 9811 || x === 9855 || x >= 9866 && x <= 9871 || x === 9875 || x === 9889 || x === 9898 || x === 9899 || x === 9917 || x === 9918 || x === 9924 || x === 9925 || x === 9934 || x === 9940 || x === 9962 || x === 9970 || x === 9971 || x === 9973 || x === 9978 || x === 9981 || x === 9989 || x === 9994 || x === 9995 || x === 10024 || x === 10060 || x === 10062 || x >= 10067 && x <= 10069 || x === 10071 || x >= 10133 && x <= 10135 || x === 10160 || x === 10175 || x === 11035 || x === 11036 || x === 11088 || x === 11093 || x >= 11904 && x <= 11929 || x >= 11931 && x <= 12019 || x >= 12032 && x <= 12245 || x >= 12272 && x <= 12287 || x >= 12289 && x <= 12350 || x >= 12353 && x <= 12438 || x >= 12441 && x <= 12543 || x >= 12549 && x <= 12591 || x >= 12593 && x <= 12686 || x >= 12688 && x <= 12773 || x >= 12783 && x <= 12830 || x >= 12832 && x <= 12871 || x >= 12880 && x <= 42124 || x >= 42128 && x <= 42182 || x >= 43360 && x <= 43388 || x >= 44032 && x <= 55203 || x >= 63744 && x <= 64255 || x >= 65040 && x <= 65049 || x >= 65072 && x <= 65106 || x >= 65108 && x <= 65126 || x >= 65128 && x <= 65131 || x >= 94176 && x <= 94180 || x === 94192 || x === 94193 || x >= 94208 && x <= 100343 || x >= 100352 && x <= 101589 || x >= 101631 && x <= 101640 || x >= 110576 && x <= 110579 || x >= 110581 && x <= 110587 || x === 110589 || x === 110590 || x >= 110592 && x <= 110882 || x === 110898 || x >= 110928 && x <= 110930 || x === 110933 || x >= 110948 && x <= 110951 || x >= 110960 && x <= 111355 || x >= 119552 && x <= 119638 || x >= 119648 && x <= 119670 || x === 126980 || x === 127183 || x === 127374 || x >= 127377 && x <= 127386 || x >= 127488 && x <= 127490 || x >= 127504 && x <= 127547 || x >= 127552 && x <= 127560 || x === 127568 || x === 127569 || x >= 127584 && x <= 127589 || x >= 127744 && x <= 127776 || x >= 127789 && x <= 127797 || x >= 127799 && x <= 127868 || x >= 127870 && x <= 127891 || x >= 127904 && x <= 127946 || x >= 127951 && x <= 127955 || x >= 127968 && x <= 127984 || x === 127988 || x >= 127992 && x <= 128062 || x === 128064 || x >= 128066 && x <= 128252 || x >= 128255 && x <= 128317 || x >= 128331 && x <= 128334 || x >= 128336 && x <= 128359 || x === 128378 || x === 128405 || x === 128406 || x === 128420 || x >= 128507 && x <= 128591 || x >= 128640 && x <= 128709 || x === 128716 || x >= 128720 && x <= 128722 || x >= 128725 && x <= 128727 || x >= 128732 && x <= 128735 || x === 128747 || x === 128748 || x >= 128756 && x <= 128764 || x >= 128992 && x <= 129003 || x === 129008 || x >= 129292 && x <= 129338 || x >= 129340 && x <= 129349 || x >= 129351 && x <= 129535 || x >= 129648 && x <= 129660 || x >= 129664 && x <= 129673 || x >= 129679 && x <= 129734 || x >= 129742 && x <= 129756 || x >= 129759 && x <= 129769 || x >= 129776 && x <= 129784 || x >= 131072 && x <= 196605 || x >= 196608 && x <= 262141;
|
|
4052
|
+
}
|
|
4053
|
+
function validate(codePoint) {
|
|
4054
|
+
if (!Number.isSafeInteger(codePoint)) throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`);
|
|
4055
|
+
}
|
|
4056
|
+
function eastAsianWidth(codePoint, { ambiguousAsWide = false } = {}) {
|
|
4057
|
+
validate(codePoint);
|
|
4058
|
+
if (isFullWidth(codePoint) || isWide(codePoint) || ambiguousAsWide && isAmbiguous(codePoint)) return 2;
|
|
4059
|
+
return 1;
|
|
4060
|
+
}
|
|
4061
|
+
const emojiRegex = () => {
|
|
4062
|
+
return /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE89\uDE8F-\uDEC2\uDEC6\uDECE-\uDEDC\uDEDF-\uDEE9]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g;
|
|
4063
|
+
};
|
|
4064
|
+
const segmenter = globalThis.Intl?.Segmenter ? new Intl.Segmenter() : { segment: (str) => str.split("") };
|
|
4065
|
+
const defaultIgnorableCodePointRegex = /^\p{Default_Ignorable_Code_Point}$/u;
|
|
4066
|
+
function stringWidth$1(string$1, options = {}) {
|
|
4067
|
+
if (typeof string$1 !== "string" || string$1.length === 0) return 0;
|
|
4068
|
+
const { ambiguousIsNarrow = true, countAnsiEscapeCodes = false } = options;
|
|
4069
|
+
if (!countAnsiEscapeCodes) string$1 = stripAnsi(string$1);
|
|
4070
|
+
if (string$1.length === 0) return 0;
|
|
4071
|
+
let width = 0;
|
|
4072
|
+
const eastAsianWidthOptions = { ambiguousAsWide: !ambiguousIsNarrow };
|
|
4073
|
+
for (const { segment: character } of segmenter.segment(string$1)) {
|
|
4074
|
+
const codePoint = character.codePointAt(0);
|
|
4075
|
+
if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) continue;
|
|
4076
|
+
if (codePoint >= 8203 && codePoint <= 8207 || codePoint === 65279) continue;
|
|
4077
|
+
if (codePoint >= 768 && codePoint <= 879 || codePoint >= 6832 && codePoint <= 6911 || codePoint >= 7616 && codePoint <= 7679 || codePoint >= 8400 && codePoint <= 8447 || codePoint >= 65056 && codePoint <= 65071) continue;
|
|
4078
|
+
if (codePoint >= 55296 && codePoint <= 57343) continue;
|
|
4079
|
+
if (codePoint >= 65024 && codePoint <= 65039) continue;
|
|
4080
|
+
if (defaultIgnorableCodePointRegex.test(character)) continue;
|
|
4081
|
+
if (emojiRegex().test(character)) {
|
|
4082
|
+
width += 2;
|
|
4083
|
+
continue;
|
|
4084
|
+
}
|
|
4085
|
+
width += eastAsianWidth(codePoint, eastAsianWidthOptions);
|
|
4086
|
+
}
|
|
4087
|
+
return width;
|
|
4088
|
+
}
|
|
4089
|
+
function isUnicodeSupported() {
|
|
4090
|
+
const { env: env$1 } = process$1;
|
|
4091
|
+
const { TERM, TERM_PROGRAM } = env$1;
|
|
4092
|
+
if (process$1.platform !== "win32") return TERM !== "linux";
|
|
4093
|
+
return Boolean(env$1.WT_SESSION) || Boolean(env$1.TERMINUS_SUBLIME) || env$1.ConEmuTask === "{cmd::Cmder}" || TERM_PROGRAM === "Terminus-Sublime" || TERM_PROGRAM === "vscode" || TERM === "xterm-256color" || TERM === "alacritty" || TERM === "rxvt-unicode" || TERM === "rxvt-unicode-256color" || env$1.TERMINAL_EMULATOR === "JetBrains-JediTerm";
|
|
4094
|
+
}
|
|
4095
|
+
const TYPE_COLOR_MAP = {
|
|
4096
|
+
info: "cyan",
|
|
4097
|
+
fail: "red",
|
|
4098
|
+
success: "green",
|
|
4099
|
+
ready: "green",
|
|
4100
|
+
start: "magenta"
|
|
4101
|
+
};
|
|
4102
|
+
const LEVEL_COLOR_MAP = {
|
|
4103
|
+
0: "red",
|
|
4104
|
+
1: "yellow"
|
|
4105
|
+
};
|
|
4106
|
+
const unicode = isUnicodeSupported();
|
|
4107
|
+
const s = (c$1, fallback) => unicode ? c$1 : fallback;
|
|
4108
|
+
const TYPE_ICONS = {
|
|
4109
|
+
error: s("✖", "×"),
|
|
4110
|
+
fatal: s("✖", "×"),
|
|
4111
|
+
ready: s("✔", "√"),
|
|
4112
|
+
warn: s("⚠", "‼"),
|
|
4113
|
+
info: s("ℹ", "i"),
|
|
4114
|
+
success: s("✔", "√"),
|
|
4115
|
+
debug: s("⚙", "D"),
|
|
4116
|
+
trace: s("→", "→"),
|
|
4117
|
+
fail: s("✖", "×"),
|
|
4118
|
+
start: s("◐", "o"),
|
|
4119
|
+
log: ""
|
|
4120
|
+
};
|
|
4121
|
+
function stringWidth(str) {
|
|
4122
|
+
const hasICU = typeof Intl === "object";
|
|
4123
|
+
if (!hasICU || !Intl.Segmenter) return stripAnsi$1(str).length;
|
|
4124
|
+
return stringWidth$1(str);
|
|
4125
|
+
}
|
|
4126
|
+
var FancyReporter = class extends BasicReporter {
|
|
4127
|
+
formatStack(stack, message, opts) {
|
|
4128
|
+
const indent = " ".repeat((opts?.errorLevel || 0) + 1);
|
|
4129
|
+
return `
|
|
4130
|
+
${indent}` + parseStack(stack, message).map((line) => " " + line.replace(/^at +/, (m) => colors.gray(m)).replace(/\((.+)\)/, (_$1, m) => `(${colors.cyan(m)})`)).join(`
|
|
4131
|
+
${indent}`);
|
|
4132
|
+
}
|
|
4133
|
+
formatType(logObj, isBadge, opts) {
|
|
4134
|
+
const typeColor = TYPE_COLOR_MAP[logObj.type] || LEVEL_COLOR_MAP[logObj.level] || "gray";
|
|
4135
|
+
if (isBadge) return getBgColor(typeColor)(colors.black(` ${logObj.type.toUpperCase()} `));
|
|
4136
|
+
const _type = typeof TYPE_ICONS[logObj.type] === "string" ? TYPE_ICONS[logObj.type] : logObj.icon || logObj.type;
|
|
4137
|
+
return _type ? getColor(typeColor)(_type) : "";
|
|
4138
|
+
}
|
|
4139
|
+
formatLogObj(logObj, opts) {
|
|
4140
|
+
const [message, ...additional] = this.formatArgs(logObj.args, opts).split("\n");
|
|
4141
|
+
if (logObj.type === "box") return box(characterFormat(message + (additional.length > 0 ? "\n" + additional.join("\n") : "")), {
|
|
4142
|
+
title: logObj.title ? characterFormat(logObj.title) : void 0,
|
|
4143
|
+
style: logObj.style
|
|
4144
|
+
});
|
|
4145
|
+
const date = this.formatDate(logObj.date, opts);
|
|
4146
|
+
const coloredDate = date && colors.gray(date);
|
|
4147
|
+
const isBadge = logObj.badge ?? logObj.level < 2;
|
|
4148
|
+
const type = this.formatType(logObj, isBadge, opts);
|
|
4149
|
+
const tag = logObj.tag ? colors.gray(logObj.tag) : "";
|
|
4150
|
+
let line;
|
|
4151
|
+
const left = this.filterAndJoin([type, characterFormat(message)]);
|
|
4152
|
+
const right = this.filterAndJoin(opts.columns ? [tag, coloredDate] : [tag]);
|
|
4153
|
+
const space = (opts.columns || 0) - stringWidth(left) - stringWidth(right) - 2;
|
|
4154
|
+
line = space > 0 && (opts.columns || 0) >= 80 ? left + " ".repeat(space) + right : (right ? `${colors.gray(`[${right}]`)} ` : "") + left;
|
|
4155
|
+
line += characterFormat(additional.length > 0 ? "\n" + additional.join("\n") : "");
|
|
4156
|
+
if (logObj.type === "trace") {
|
|
4157
|
+
const _err = new Error("Trace: " + logObj.message);
|
|
4158
|
+
line += this.formatStack(_err.stack || "", _err.message);
|
|
4159
|
+
}
|
|
4160
|
+
return isBadge ? "\n" + line + "\n" : line;
|
|
4161
|
+
}
|
|
4162
|
+
};
|
|
4163
|
+
function characterFormat(str) {
|
|
4164
|
+
return str.replace(/`([^`]+)`/gm, (_$1, m) => colors.cyan(m)).replace(/\s+_([^_]+)_\s+/gm, (_$1, m) => ` ${colors.underline(m)} `);
|
|
4165
|
+
}
|
|
4166
|
+
function getColor(color = "white") {
|
|
4167
|
+
return colors[color] || colors.white;
|
|
4168
|
+
}
|
|
4169
|
+
function getBgColor(color = "bgWhite") {
|
|
4170
|
+
return colors[`bg${color[0].toUpperCase()}${color.slice(1)}`] || colors.bgWhite;
|
|
4171
|
+
}
|
|
4172
|
+
function createConsola(options = {}) {
|
|
4173
|
+
let level = _getDefaultLogLevel();
|
|
4174
|
+
if (process.env.CONSOLA_LEVEL) level = Number.parseInt(process.env.CONSOLA_LEVEL) ?? level;
|
|
4175
|
+
const consola2 = createConsola$1({
|
|
4176
|
+
level,
|
|
4177
|
+
defaults: { level },
|
|
4178
|
+
stdout: process.stdout,
|
|
4179
|
+
stderr: process.stderr,
|
|
4180
|
+
prompt: (...args) => import("./prompt-_w55ddDU.js").then((m) => m.prompt(...args)),
|
|
4181
|
+
reporters: options.reporters || [options.fancy ?? !(T || R) ? new FancyReporter() : new BasicReporter()],
|
|
4182
|
+
...options
|
|
4183
|
+
});
|
|
4184
|
+
return consola2;
|
|
4185
|
+
}
|
|
4186
|
+
function _getDefaultLogLevel() {
|
|
4187
|
+
if (g) return LogLevels.debug;
|
|
4188
|
+
if (R) return LogLevels.warn;
|
|
4189
|
+
return LogLevels.info;
|
|
4190
|
+
}
|
|
4191
|
+
const consola = createConsola();
|
|
4192
|
+
|
|
4193
|
+
//#endregion
|
|
4194
|
+
//#region package.json
|
|
4195
|
+
var name = "ccusage";
|
|
4196
|
+
var version = "0.4.0";
|
|
4197
|
+
var description = "Usage analysis tool for Claude Code";
|
|
4198
|
+
|
|
4199
|
+
//#endregion
|
|
4200
|
+
//#region logger.ts
|
|
4201
|
+
const logger = consola.withTag(name);
|
|
4202
|
+
const log = (...args) => logger.log(...args);
|
|
4203
|
+
|
|
4204
|
+
//#endregion
|
|
4205
|
+
//#region pricing-fetcher.ts
|
|
4206
|
+
const ModelPricingSchema = object({
|
|
4207
|
+
input_cost_per_token: optional(number()),
|
|
4208
|
+
output_cost_per_token: optional(number()),
|
|
4209
|
+
cache_creation_input_token_cost: optional(number()),
|
|
4210
|
+
cache_read_input_token_cost: optional(number())
|
|
4211
|
+
});
|
|
4212
|
+
const LITELLM_PRICING_URL = "https://raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.json";
|
|
4213
|
+
let cachedPricing = null;
|
|
4214
|
+
async function fetchModelPricing() {
|
|
4215
|
+
if (cachedPricing) return cachedPricing;
|
|
4216
|
+
try {
|
|
4217
|
+
logger.info("Fetching latest model pricing from LiteLLM...");
|
|
4218
|
+
const response = await fetch(LITELLM_PRICING_URL);
|
|
4219
|
+
if (!response.ok) throw new Error(`Failed to fetch pricing data: ${response.statusText}`);
|
|
4220
|
+
const data = await response.json();
|
|
4221
|
+
const pricing = {};
|
|
4222
|
+
for (const [modelName, modelData] of Object.entries(data)) if (typeof modelData === "object" && modelData !== null) try {
|
|
4223
|
+
const parsed = parse(ModelPricingSchema, modelData);
|
|
4224
|
+
pricing[modelName] = parsed;
|
|
4225
|
+
} catch {}
|
|
4226
|
+
cachedPricing = pricing;
|
|
4227
|
+
logger.info(`Loaded pricing for ${Object.keys(pricing).length} models`);
|
|
4228
|
+
return pricing;
|
|
4229
|
+
} catch (error) {
|
|
4230
|
+
logger.error("Failed to fetch model pricing:", error);
|
|
4231
|
+
throw new Error("Could not fetch model pricing data");
|
|
4232
|
+
}
|
|
4233
|
+
}
|
|
4234
|
+
function getModelPricing(modelName, pricing) {
|
|
4235
|
+
if (pricing[modelName]) return pricing[modelName];
|
|
4236
|
+
const variations = [
|
|
4237
|
+
modelName,
|
|
4238
|
+
`anthropic/${modelName}`,
|
|
4239
|
+
`claude-3-5-${modelName}`,
|
|
4240
|
+
`claude-3-${modelName}`,
|
|
4241
|
+
`claude-${modelName}`
|
|
4242
|
+
];
|
|
4243
|
+
for (const variant of variations) if (pricing[variant]) return pricing[variant];
|
|
4244
|
+
const lowerModel = modelName.toLowerCase();
|
|
4245
|
+
for (const [key, value] of Object.entries(pricing)) if (key.toLowerCase().includes(lowerModel) || lowerModel.includes(key.toLowerCase())) return value;
|
|
4246
|
+
return null;
|
|
4247
|
+
}
|
|
4248
|
+
function calculateCostFromTokens(tokens, pricing) {
|
|
4249
|
+
let cost = 0;
|
|
4250
|
+
if (pricing.input_cost_per_token) cost += tokens.input_tokens * pricing.input_cost_per_token;
|
|
4251
|
+
if (pricing.output_cost_per_token) cost += tokens.output_tokens * pricing.output_cost_per_token;
|
|
4252
|
+
if (tokens.cache_creation_input_tokens && pricing.cache_creation_input_token_cost) cost += tokens.cache_creation_input_tokens * pricing.cache_creation_input_token_cost;
|
|
4253
|
+
if (tokens.cache_read_input_tokens && pricing.cache_read_input_token_cost) cost += tokens.cache_read_input_tokens * pricing.cache_read_input_token_cost;
|
|
4254
|
+
return cost;
|
|
4255
|
+
}
|
|
4256
|
+
|
|
2770
4257
|
//#endregion
|
|
2771
4258
|
//#region data-loader.ts
|
|
2772
4259
|
const getDefaultClaudePath = () => path.join(homedir(), ".claude");
|
|
2773
|
-
const UsageDataSchema =
|
|
2774
|
-
timestamp:
|
|
2775
|
-
|
|
2776
|
-
|
|
2777
|
-
|
|
2778
|
-
|
|
2779
|
-
|
|
2780
|
-
|
|
2781
|
-
|
|
4260
|
+
const UsageDataSchema = object({
|
|
4261
|
+
timestamp: string(),
|
|
4262
|
+
version: optional(string()),
|
|
4263
|
+
message: object({
|
|
4264
|
+
usage: object({
|
|
4265
|
+
input_tokens: number(),
|
|
4266
|
+
output_tokens: number(),
|
|
4267
|
+
cache_creation_input_tokens: optional(number()),
|
|
4268
|
+
cache_read_input_tokens: optional(number())
|
|
4269
|
+
}),
|
|
4270
|
+
model: optional(string())
|
|
4271
|
+
}),
|
|
4272
|
+
costUSD: optional(number())
|
|
2782
4273
|
});
|
|
2783
|
-
const DailyUsageSchema =
|
|
2784
|
-
date:
|
|
2785
|
-
inputTokens:
|
|
2786
|
-
outputTokens:
|
|
2787
|
-
cacheCreationTokens:
|
|
2788
|
-
cacheReadTokens:
|
|
2789
|
-
totalCost:
|
|
4274
|
+
const DailyUsageSchema = object({
|
|
4275
|
+
date: string(),
|
|
4276
|
+
inputTokens: number(),
|
|
4277
|
+
outputTokens: number(),
|
|
4278
|
+
cacheCreationTokens: number(),
|
|
4279
|
+
cacheReadTokens: number(),
|
|
4280
|
+
totalCost: number()
|
|
2790
4281
|
});
|
|
2791
|
-
const SessionUsageSchema =
|
|
2792
|
-
sessionId:
|
|
2793
|
-
projectPath:
|
|
2794
|
-
inputTokens:
|
|
2795
|
-
outputTokens:
|
|
2796
|
-
cacheCreationTokens:
|
|
2797
|
-
cacheReadTokens:
|
|
2798
|
-
totalCost:
|
|
2799
|
-
lastActivity:
|
|
4282
|
+
const SessionUsageSchema = object({
|
|
4283
|
+
sessionId: string(),
|
|
4284
|
+
projectPath: string(),
|
|
4285
|
+
inputTokens: number(),
|
|
4286
|
+
outputTokens: number(),
|
|
4287
|
+
cacheCreationTokens: number(),
|
|
4288
|
+
cacheReadTokens: number(),
|
|
4289
|
+
totalCost: number(),
|
|
4290
|
+
lastActivity: string(),
|
|
4291
|
+
versions: array(string())
|
|
2800
4292
|
});
|
|
2801
4293
|
const formatDate = (dateStr) => {
|
|
2802
4294
|
const date = new Date(dateStr);
|
|
@@ -2805,6 +4297,22 @@ const formatDate = (dateStr) => {
|
|
|
2805
4297
|
const day = String(date.getDate()).padStart(2, "0");
|
|
2806
4298
|
return `${year}-${month}-${day}`;
|
|
2807
4299
|
};
|
|
4300
|
+
const calculateCostForEntry = (data, mode, modelPricing) => {
|
|
4301
|
+
if (mode === "display") return data.costUSD ?? 0;
|
|
4302
|
+
if (mode === "calculate") {
|
|
4303
|
+
if (data.message.model) {
|
|
4304
|
+
const pricing = getModelPricing(data.message.model, modelPricing);
|
|
4305
|
+
if (pricing) return calculateCostFromTokens(data.message.usage, pricing);
|
|
4306
|
+
}
|
|
4307
|
+
return 0;
|
|
4308
|
+
}
|
|
4309
|
+
if (data.costUSD !== void 0) return data.costUSD;
|
|
4310
|
+
if (data.message.model) {
|
|
4311
|
+
const pricing = getModelPricing(data.message.model, modelPricing);
|
|
4312
|
+
if (pricing) return calculateCostFromTokens(data.message.usage, pricing);
|
|
4313
|
+
}
|
|
4314
|
+
return 0;
|
|
4315
|
+
};
|
|
2808
4316
|
async function loadUsageData(options) {
|
|
2809
4317
|
const claudePath = options?.claudePath ?? getDefaultClaudePath();
|
|
2810
4318
|
const claudeDir = path.join(claudePath, "projects");
|
|
@@ -2813,13 +4321,15 @@ async function loadUsageData(options) {
|
|
|
2813
4321
|
absolute: true
|
|
2814
4322
|
});
|
|
2815
4323
|
if (files.length === 0) return [];
|
|
4324
|
+
const mode = options?.mode || "auto";
|
|
4325
|
+
const modelPricing = mode === "display" ? {} : await fetchModelPricing();
|
|
2816
4326
|
const dailyMap = new Map();
|
|
2817
4327
|
for (const file of files) {
|
|
2818
4328
|
const content = await readFile(file, "utf-8");
|
|
2819
4329
|
const lines = content.trim().split("\n").filter((line) => line.length > 0);
|
|
2820
4330
|
for (const line of lines) try {
|
|
2821
4331
|
const parsed = JSON.parse(line);
|
|
2822
|
-
const result =
|
|
4332
|
+
const result = safeParse(UsageDataSchema, parsed);
|
|
2823
4333
|
if (!result.success) continue;
|
|
2824
4334
|
const data = result.output;
|
|
2825
4335
|
const date = formatDate(data.timestamp);
|
|
@@ -2831,11 +4341,12 @@ async function loadUsageData(options) {
|
|
|
2831
4341
|
cacheReadTokens: 0,
|
|
2832
4342
|
totalCost: 0
|
|
2833
4343
|
};
|
|
2834
|
-
existing.inputTokens += data.message.usage.input_tokens
|
|
2835
|
-
existing.outputTokens += data.message.usage.output_tokens
|
|
2836
|
-
existing.cacheCreationTokens += data.message.usage.cache_creation_input_tokens
|
|
2837
|
-
existing.cacheReadTokens += data.message.usage.cache_read_input_tokens
|
|
2838
|
-
|
|
4344
|
+
existing.inputTokens += data.message.usage.input_tokens ?? 0;
|
|
4345
|
+
existing.outputTokens += data.message.usage.output_tokens ?? 0;
|
|
4346
|
+
existing.cacheCreationTokens += data.message.usage.cache_creation_input_tokens ?? 0;
|
|
4347
|
+
existing.cacheReadTokens += data.message.usage.cache_read_input_tokens ?? 0;
|
|
4348
|
+
const cost = calculateCostForEntry(data, mode, modelPricing);
|
|
4349
|
+
existing.totalCost += cost;
|
|
2839
4350
|
dailyMap.set(date, existing);
|
|
2840
4351
|
} catch (e) {}
|
|
2841
4352
|
}
|
|
@@ -2856,6 +4367,8 @@ async function loadSessionData(options) {
|
|
|
2856
4367
|
absolute: true
|
|
2857
4368
|
});
|
|
2858
4369
|
if (files.length === 0) return [];
|
|
4370
|
+
const mode = options?.mode || "auto";
|
|
4371
|
+
const modelPricing = mode === "display" ? {} : await fetchModelPricing();
|
|
2859
4372
|
const sessionMap = new Map();
|
|
2860
4373
|
for (const file of files) {
|
|
2861
4374
|
const relativePath = path.relative(claudeDir, file);
|
|
@@ -2867,7 +4380,7 @@ async function loadSessionData(options) {
|
|
|
2867
4380
|
let lastTimestamp = "";
|
|
2868
4381
|
for (const line of lines) try {
|
|
2869
4382
|
const parsed = JSON.parse(line);
|
|
2870
|
-
const result =
|
|
4383
|
+
const result = safeParse(UsageDataSchema, parsed);
|
|
2871
4384
|
if (!result.success) continue;
|
|
2872
4385
|
const data = result.output;
|
|
2873
4386
|
const key = `${projectPath}/${sessionId}`;
|
|
@@ -2879,29 +4392,39 @@ async function loadSessionData(options) {
|
|
|
2879
4392
|
cacheCreationTokens: 0,
|
|
2880
4393
|
cacheReadTokens: 0,
|
|
2881
4394
|
totalCost: 0,
|
|
2882
|
-
lastActivity: ""
|
|
4395
|
+
lastActivity: "",
|
|
4396
|
+
versions: [],
|
|
4397
|
+
versionSet: new Set()
|
|
2883
4398
|
};
|
|
2884
|
-
existing.inputTokens += data.message.usage.input_tokens
|
|
2885
|
-
existing.outputTokens += data.message.usage.output_tokens
|
|
2886
|
-
existing.cacheCreationTokens += data.message.usage.cache_creation_input_tokens
|
|
2887
|
-
existing.cacheReadTokens += data.message.usage.cache_read_input_tokens
|
|
2888
|
-
|
|
4399
|
+
existing.inputTokens += data.message.usage.input_tokens ?? 0;
|
|
4400
|
+
existing.outputTokens += data.message.usage.output_tokens ?? 0;
|
|
4401
|
+
existing.cacheCreationTokens += data.message.usage.cache_creation_input_tokens ?? 0;
|
|
4402
|
+
existing.cacheReadTokens += data.message.usage.cache_read_input_tokens ?? 0;
|
|
4403
|
+
const cost = calculateCostForEntry(data, mode, modelPricing);
|
|
4404
|
+
existing.totalCost += cost;
|
|
2889
4405
|
if (data.timestamp > lastTimestamp) {
|
|
2890
4406
|
lastTimestamp = data.timestamp;
|
|
2891
4407
|
existing.lastActivity = formatDate(data.timestamp);
|
|
2892
4408
|
}
|
|
4409
|
+
if (data.version) existing.versionSet.add(data.version);
|
|
2893
4410
|
sessionMap.set(key, existing);
|
|
2894
4411
|
} catch (e) {}
|
|
2895
4412
|
}
|
|
2896
|
-
let results = Array.from(sessionMap.values())
|
|
4413
|
+
let results = Array.from(sessionMap.values()).map((session) => {
|
|
4414
|
+
const { versionSet,...sessionData } = session;
|
|
4415
|
+
return {
|
|
4416
|
+
...sessionData,
|
|
4417
|
+
versions: Array.from(versionSet).sort()
|
|
4418
|
+
};
|
|
4419
|
+
});
|
|
2897
4420
|
if (options?.since || options?.until) results = results.filter((session) => {
|
|
2898
4421
|
const dateStr = session.lastActivity.replace(/-/g, "");
|
|
2899
4422
|
if (options.since && dateStr < options.since) return false;
|
|
2900
4423
|
if (options.until && dateStr > options.until) return false;
|
|
2901
4424
|
return true;
|
|
2902
4425
|
});
|
|
2903
|
-
return sort(results).desc((item) => item.
|
|
4426
|
+
return sort(results).desc((item) => new Date(item.lastActivity).getTime());
|
|
2904
4427
|
}
|
|
2905
4428
|
|
|
2906
4429
|
//#endregion
|
|
2907
|
-
export { DailyUsageSchema, SessionUsageSchema, UsageDataSchema, __commonJS, __require, __toESM, formatDate, getDefaultClaudePath, loadSessionData, loadUsageData };
|
|
4430
|
+
export { DailyUsageSchema, SessionUsageSchema, UsageDataSchema, __commonJS, __require, __toESM, boolean, calculateCostForEntry, calculateCostFromTokens, description, fetchModelPricing, formatDate, getDefaultClaudePath, getModelPricing, glob, loadSessionData, loadUsageData, log, logger, name, number, object, optional, pipe, record, regex$1 as regex, safeParse, string, union, version };
|