ccusage 0.2.2 → 0.2.3
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 +3 -0
- package/dist/index.js +104 -9
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
> **ccusage(claude-code-usage)**
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/ccusage)
|
|
6
|
+
[](https://www.npmjs.com/package/ccusage)
|
|
7
|
+
[](https://deepwiki.com/ryoppippi/ccusage)
|
|
8
|
+
<!-- DeepWiki badge generated by https://deepwiki.ryoppippi.com/ -->
|
|
6
9
|
|
|
7
10
|
<div align="center">
|
|
8
11
|
<img src="https://github.com/ryoppippi/ccusage/blob/main/docs/screenshot.png?raw=true">
|
package/dist/index.js
CHANGED
|
@@ -2932,6 +2932,107 @@ function createTotalsObject(totals) {
|
|
|
2932
2932
|
};
|
|
2933
2933
|
}
|
|
2934
2934
|
|
|
2935
|
+
//#endregion
|
|
2936
|
+
//#region node_modules/fast-sort/dist/sort.mjs
|
|
2937
|
+
var castComparer = function(comparer) {
|
|
2938
|
+
return function(a$1, b$1, order) {
|
|
2939
|
+
return comparer(a$1, b$1, order) * order;
|
|
2940
|
+
};
|
|
2941
|
+
};
|
|
2942
|
+
var throwInvalidConfigErrorIfTrue = function(condition, context) {
|
|
2943
|
+
if (condition) throw Error("Invalid sort config: " + context);
|
|
2944
|
+
};
|
|
2945
|
+
var unpackObjectSorter = function(sortByObj) {
|
|
2946
|
+
var _a = sortByObj || {}, asc = _a.asc, desc = _a.desc;
|
|
2947
|
+
var order = asc ? 1 : -1;
|
|
2948
|
+
var sortBy = asc || desc;
|
|
2949
|
+
throwInvalidConfigErrorIfTrue(!sortBy, "Expected `asc` or `desc` property");
|
|
2950
|
+
throwInvalidConfigErrorIfTrue(asc && desc, "Ambiguous object with `asc` and `desc` config properties");
|
|
2951
|
+
var comparer = sortByObj.comparer && castComparer(sortByObj.comparer);
|
|
2952
|
+
return {
|
|
2953
|
+
order,
|
|
2954
|
+
sortBy,
|
|
2955
|
+
comparer
|
|
2956
|
+
};
|
|
2957
|
+
};
|
|
2958
|
+
var multiPropertySorterProvider = function(defaultComparer$1) {
|
|
2959
|
+
return function multiPropertySorter(sortBy, sortByArr, depth$1, order, comparer, a$1, b$1) {
|
|
2960
|
+
var valA;
|
|
2961
|
+
var valB;
|
|
2962
|
+
if (typeof sortBy === "string") {
|
|
2963
|
+
valA = a$1[sortBy];
|
|
2964
|
+
valB = b$1[sortBy];
|
|
2965
|
+
} else if (typeof sortBy === "function") {
|
|
2966
|
+
valA = sortBy(a$1);
|
|
2967
|
+
valB = sortBy(b$1);
|
|
2968
|
+
} else {
|
|
2969
|
+
var objectSorterConfig = unpackObjectSorter(sortBy);
|
|
2970
|
+
return multiPropertySorter(objectSorterConfig.sortBy, sortByArr, depth$1, objectSorterConfig.order, objectSorterConfig.comparer || defaultComparer$1, a$1, b$1);
|
|
2971
|
+
}
|
|
2972
|
+
var equality = comparer(valA, valB, order);
|
|
2973
|
+
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);
|
|
2974
|
+
return equality;
|
|
2975
|
+
};
|
|
2976
|
+
};
|
|
2977
|
+
function getSortStrategy(sortBy, comparer, order) {
|
|
2978
|
+
if (sortBy === void 0 || sortBy === true) return function(a$1, b$1) {
|
|
2979
|
+
return comparer(a$1, b$1, order);
|
|
2980
|
+
};
|
|
2981
|
+
if (typeof sortBy === "string") {
|
|
2982
|
+
throwInvalidConfigErrorIfTrue(sortBy.includes("."), "String syntax not allowed for nested properties.");
|
|
2983
|
+
return function(a$1, b$1) {
|
|
2984
|
+
return comparer(a$1[sortBy], b$1[sortBy], order);
|
|
2985
|
+
};
|
|
2986
|
+
}
|
|
2987
|
+
if (typeof sortBy === "function") return function(a$1, b$1) {
|
|
2988
|
+
return comparer(sortBy(a$1), sortBy(b$1), order);
|
|
2989
|
+
};
|
|
2990
|
+
if (Array.isArray(sortBy)) {
|
|
2991
|
+
var multiPropSorter_1 = multiPropertySorterProvider(comparer);
|
|
2992
|
+
return function(a$1, b$1) {
|
|
2993
|
+
return multiPropSorter_1(sortBy[0], sortBy, 1, order, comparer, a$1, b$1);
|
|
2994
|
+
};
|
|
2995
|
+
}
|
|
2996
|
+
var objectSorterConfig = unpackObjectSorter(sortBy);
|
|
2997
|
+
return getSortStrategy(objectSorterConfig.sortBy, objectSorterConfig.comparer || comparer, objectSorterConfig.order);
|
|
2998
|
+
}
|
|
2999
|
+
var sortArray = function(order, ctx, sortBy, comparer) {
|
|
3000
|
+
var _a;
|
|
3001
|
+
if (!Array.isArray(ctx)) return ctx;
|
|
3002
|
+
if (Array.isArray(sortBy) && sortBy.length < 2) _a = sortBy, sortBy = _a[0];
|
|
3003
|
+
return ctx.sort(getSortStrategy(sortBy, comparer, order));
|
|
3004
|
+
};
|
|
3005
|
+
function createNewSortInstance(opts) {
|
|
3006
|
+
var comparer = castComparer(opts.comparer);
|
|
3007
|
+
return function(arrayToSort) {
|
|
3008
|
+
var ctx = Array.isArray(arrayToSort) && !opts.inPlaceSorting ? arrayToSort.slice() : arrayToSort;
|
|
3009
|
+
return {
|
|
3010
|
+
asc: function(sortBy) {
|
|
3011
|
+
return sortArray(1, ctx, sortBy, comparer);
|
|
3012
|
+
},
|
|
3013
|
+
desc: function(sortBy) {
|
|
3014
|
+
return sortArray(-1, ctx, sortBy, comparer);
|
|
3015
|
+
},
|
|
3016
|
+
by: function(sortBy) {
|
|
3017
|
+
return sortArray(1, ctx, sortBy, comparer);
|
|
3018
|
+
}
|
|
3019
|
+
};
|
|
3020
|
+
};
|
|
3021
|
+
}
|
|
3022
|
+
var defaultComparer = function(a$1, b$1, order) {
|
|
3023
|
+
if (a$1 == null) return order;
|
|
3024
|
+
if (b$1 == null) return -order;
|
|
3025
|
+
if (typeof a$1 !== typeof b$1) return typeof a$1 < typeof b$1 ? -1 : 1;
|
|
3026
|
+
if (a$1 < b$1) return -1;
|
|
3027
|
+
if (a$1 > b$1) return 1;
|
|
3028
|
+
return 0;
|
|
3029
|
+
};
|
|
3030
|
+
var sort = createNewSortInstance({ comparer: defaultComparer });
|
|
3031
|
+
var inPlaceSort = createNewSortInstance({
|
|
3032
|
+
comparer: defaultComparer,
|
|
3033
|
+
inPlaceSorting: true
|
|
3034
|
+
});
|
|
3035
|
+
|
|
2935
3036
|
//#endregion
|
|
2936
3037
|
//#region node_modules/fdir/dist/utils.js
|
|
2937
3038
|
var require_utils$1 = __commonJS({ "node_modules/fdir/dist/utils.js"(exports) {
|
|
@@ -6042,11 +6143,7 @@ async function loadUsageData(options) {
|
|
|
6042
6143
|
if (options.until && dateStr > options.until) return false;
|
|
6043
6144
|
return true;
|
|
6044
6145
|
});
|
|
6045
|
-
return results.
|
|
6046
|
-
const dateA = new Date(a$1.date);
|
|
6047
|
-
const dateB = new Date(b$1.date);
|
|
6048
|
-
return dateB.getTime() - dateA.getTime();
|
|
6049
|
-
});
|
|
6146
|
+
return sort(results).desc((item) => new Date(item.date).getTime());
|
|
6050
6147
|
}
|
|
6051
6148
|
async function loadSessionData(options) {
|
|
6052
6149
|
const claudePath = options?.claudePath ?? getDefaultClaudePath();
|
|
@@ -6100,9 +6197,7 @@ async function loadSessionData(options) {
|
|
|
6100
6197
|
if (options.until && dateStr > options.until) return false;
|
|
6101
6198
|
return true;
|
|
6102
6199
|
});
|
|
6103
|
-
return results.
|
|
6104
|
-
return b$1.totalCost - a$1.totalCost;
|
|
6105
|
-
});
|
|
6200
|
+
return sort(results).desc((item) => item.totalCost);
|
|
6106
6201
|
}
|
|
6107
6202
|
|
|
6108
6203
|
//#endregion
|
|
@@ -7068,7 +7163,7 @@ const consola = createConsola();
|
|
|
7068
7163
|
//#endregion
|
|
7069
7164
|
//#region package.json
|
|
7070
7165
|
var name = "ccusage";
|
|
7071
|
-
var version = "0.2.
|
|
7166
|
+
var version = "0.2.3";
|
|
7072
7167
|
var description = "Usage analysis tool for Claude Code";
|
|
7073
7168
|
|
|
7074
7169
|
//#endregion
|