@absmartly/cli 1.4.0 → 1.6.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 -17
- package/dist/api-client/api-client.d.ts +8 -0
- package/dist/api-client/api-client.d.ts.map +1 -1
- package/dist/api-client/api-client.js +23 -0
- package/dist/api-client/api-client.js.map +1 -1
- package/dist/commands/actiondialogfields/index.js +4 -4
- package/dist/commands/actiondialogfields/index.js.map +1 -1
- package/dist/commands/datasources/index.d.ts.map +1 -1
- package/dist/commands/datasources/index.js +60 -13
- package/dist/commands/datasources/index.js.map +1 -1
- package/dist/commands/events/index.d.ts.map +1 -1
- package/dist/commands/events/index.js +13 -2
- package/dist/commands/events/index.js.map +1 -1
- package/dist/commands/events/summary.d.ts +13 -0
- package/dist/commands/events/summary.d.ts.map +1 -0
- package/dist/commands/events/summary.js +271 -0
- package/dist/commands/events/summary.js.map +1 -0
- package/dist/commands/experiments/get.d.ts.map +1 -1
- package/dist/commands/experiments/get.js +20 -1
- package/dist/commands/experiments/get.js.map +1 -1
- package/dist/commands/experiments/list.js +2 -3
- package/dist/commands/experiments/list.js.map +1 -1
- package/dist/commands/exportconfigs/index.js +4 -4
- package/dist/commands/exportconfigs/index.js.map +1 -1
- package/dist/commands/statistics/index.js +6 -6
- package/dist/commands/statistics/index.js.map +1 -1
- package/dist/commands/storageconfigs/index.js +6 -6
- package/dist/commands/storageconfigs/index.js.map +1 -1
- package/dist/commands/updateschedules/index.js +4 -4
- package/dist/commands/updateschedules/index.js.map +1 -1
- package/dist/core/datasources/datasources.d.ts +16 -0
- package/dist/core/datasources/datasources.d.ts.map +1 -1
- package/dist/core/datasources/datasources.js +16 -0
- package/dist/core/datasources/datasources.js.map +1 -1
- package/dist/core/events/events.d.ts +1 -1
- package/dist/core/events/events.d.ts.map +1 -1
- package/dist/core/events/events.js +2 -2
- package/dist/core/events/events.js.map +1 -1
- package/dist/core/events/summary.d.ts +43 -0
- package/dist/core/events/summary.d.ts.map +1 -0
- package/dist/core/events/summary.js +110 -0
- package/dist/core/events/summary.js.map +1 -0
- package/dist/lib/utils/api-helper.d.ts +2 -0
- package/dist/lib/utils/api-helper.d.ts.map +1 -1
- package/dist/lib/utils/api-helper.js +10 -0
- package/dist/lib/utils/api-helper.js.map +1 -1
- package/dist/lib/utils/date-parser.d.ts.map +1 -1
- package/dist/lib/utils/date-parser.js +54 -21
- package/dist/lib/utils/date-parser.js.map +1 -1
- package/dist/lib/utils/list-command.js +2 -3
- package/dist/lib/utils/list-command.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,9 +1,4 @@
|
|
|
1
1
|
const RELATIVE_PATTERN = /^(\d+)\s*(m|min|minutes?|h|hours?|d|days?|w|weeks?|mo|months?|y|years?)\s*(ago)?$/i;
|
|
2
|
-
const RELATIVE_KEYWORDS = {
|
|
3
|
-
now: 0,
|
|
4
|
-
today: 0,
|
|
5
|
-
yesterday: 24 * 60 * 60 * 1000,
|
|
6
|
-
};
|
|
7
2
|
const UNIT_MS = {
|
|
8
3
|
m: 60 * 1000,
|
|
9
4
|
min: 60 * 1000,
|
|
@@ -25,10 +20,36 @@ const UNIT_MS = {
|
|
|
25
20
|
year: 365 * 24 * 60 * 60 * 1000,
|
|
26
21
|
years: 365 * 24 * 60 * 60 * 1000,
|
|
27
22
|
};
|
|
23
|
+
function parseCalendarKeyword(input) {
|
|
24
|
+
const lower = input.trim().toLowerCase();
|
|
25
|
+
const now = new Date();
|
|
26
|
+
const year = now.getFullYear();
|
|
27
|
+
const month = now.getMonth();
|
|
28
|
+
switch (lower) {
|
|
29
|
+
case 'month-start':
|
|
30
|
+
return new Date(year, month, 1).getTime();
|
|
31
|
+
case 'last-month-start':
|
|
32
|
+
return new Date(year, month - 1, 1).getTime();
|
|
33
|
+
case 'last-month-end':
|
|
34
|
+
return new Date(year, month, 1).getTime() - 1;
|
|
35
|
+
case 'year-start':
|
|
36
|
+
return new Date(year, 0, 1).getTime();
|
|
37
|
+
case 'last-year-start':
|
|
38
|
+
return new Date(year - 1, 0, 1).getTime();
|
|
39
|
+
case 'last-year-end':
|
|
40
|
+
return new Date(year, 0, 1).getTime() - 1;
|
|
41
|
+
default:
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
28
45
|
function parseRelativeDate(input) {
|
|
29
46
|
const lower = input.trim().toLowerCase();
|
|
30
|
-
if (lower
|
|
31
|
-
return Date.now()
|
|
47
|
+
if (lower === 'now')
|
|
48
|
+
return Date.now();
|
|
49
|
+
if (lower === 'today' || lower === 'yesterday') {
|
|
50
|
+
const now = new Date();
|
|
51
|
+
const day = lower === 'today' ? now.getDate() : now.getDate() - 1;
|
|
52
|
+
return new Date(now.getFullYear(), now.getMonth(), day).getTime();
|
|
32
53
|
}
|
|
33
54
|
const match = RELATIVE_PATTERN.exec(lower);
|
|
34
55
|
if (!match)
|
|
@@ -47,25 +68,37 @@ export function parseDateFlag(dateStr) {
|
|
|
47
68
|
if (!isNaN(asNumber) && asNumber > 0 && dateStr === asNumber.toString()) {
|
|
48
69
|
return asNumber;
|
|
49
70
|
}
|
|
71
|
+
const calendar = parseCalendarKeyword(dateStr);
|
|
72
|
+
if (calendar !== null)
|
|
73
|
+
return calendar;
|
|
50
74
|
const relative = parseRelativeDate(dateStr);
|
|
51
75
|
if (relative !== null)
|
|
52
76
|
return relative;
|
|
53
|
-
const
|
|
54
|
-
if (
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
`Relative units: m (minutes), h (hours), d (days), w (weeks), mo (months), y (years)`);
|
|
77
|
+
const isoDateMatch = /^(\d{4})-(\d{2})-(\d{2})$/.exec(dateStr);
|
|
78
|
+
if (isoDateMatch) {
|
|
79
|
+
const y = parseInt(isoDateMatch[1], 10);
|
|
80
|
+
const mo = parseInt(isoDateMatch[2], 10) - 1;
|
|
81
|
+
const d = parseInt(isoDateMatch[3], 10);
|
|
82
|
+
const t = new Date(y, mo, d).getTime();
|
|
83
|
+
if (isNaN(t))
|
|
84
|
+
throw new Error(`Invalid date: "${dateStr}" could not be parsed`);
|
|
85
|
+
return t;
|
|
63
86
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
87
|
+
if (/^\d{4}-\d{2}-\d{2}T[\d:.-]+Z$/.test(dateStr)) {
|
|
88
|
+
const t = new Date(dateStr).getTime();
|
|
89
|
+
if (isNaN(t))
|
|
90
|
+
throw new Error(`Invalid date: "${dateStr}" could not be parsed`);
|
|
91
|
+
return t;
|
|
67
92
|
}
|
|
68
|
-
|
|
93
|
+
throw new Error(`Invalid date format: "${dateStr}"\n` +
|
|
94
|
+
`Expected formats:\n` +
|
|
95
|
+
` - Relative: 7d, 2w, 30d ago, yesterday, today\n` +
|
|
96
|
+
` - Calendar: month-start, last-month-start, last-month-end, year-start, last-year-start, last-year-end\n` +
|
|
97
|
+
` - ISO 8601 date: 2024-01-01\n` +
|
|
98
|
+
` - ISO 8601 datetime: 2024-01-01T00:00:00Z\n` +
|
|
99
|
+
` - Milliseconds since epoch: 1704067200000\n` +
|
|
100
|
+
`\n` +
|
|
101
|
+
`Relative units: m (minutes), h (hours), d (days), w (weeks), mo (months), y (years)`);
|
|
69
102
|
}
|
|
70
103
|
export function parseDateFlagOrUndefined(dateStr) {
|
|
71
104
|
if (!dateStr)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-parser.js","sourceRoot":"","sources":["../../../src/lib/utils/date-parser.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GACpB,oFAAoF,CAAC;AAEvF,MAAM,
|
|
1
|
+
{"version":3,"file":"date-parser.js","sourceRoot":"","sources":["../../../src/lib/utils/date-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
-
import { getAPIClientFromOptions, getGlobalOptions, printFormatted, withErrorHandling, } from './api-helper.js';
|
|
3
|
-
import { isStdoutPiped } from './stdin.js';
|
|
2
|
+
import { getAPIClientFromOptions, getGlobalOptions, printFormatted, shouldOutputIdsOnly, withErrorHandling, } from './api-helper.js';
|
|
4
3
|
import { addPaginationOptions, printPaginationFooter } from './pagination.js';
|
|
5
4
|
import { applyShowExclude } from '../../api-client/entity-summary.js';
|
|
6
5
|
export function createListCommand(opts) {
|
|
@@ -22,7 +21,7 @@ export function createListCommand(opts) {
|
|
|
22
21
|
const show = options.show ?? [];
|
|
23
22
|
const exclude = options.exclude ?? [];
|
|
24
23
|
const items = await opts.fetch(client, options);
|
|
25
|
-
if (globalOptions
|
|
24
|
+
if (shouldOutputIdsOnly(globalOptions)) {
|
|
26
25
|
for (const item of items)
|
|
27
26
|
console.log(item.id);
|
|
28
27
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-command.js","sourceRoot":"","sources":["../../../src/lib/utils/list-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"list-command.js","sourceRoot":"","sources":["../../../src/lib/utils/list-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAWtE,MAAM,UAAU,iBAAiB,CAAC,IAAwB;IACxD,IAAI,GAAG,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE5D,IAAI,IAAI,CAAC,YAAY;QAAE,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAEpD,GAAG,GAAG,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;SACrD,MAAM,CAAC,kBAAkB,EAAE,+BAA+B,CAAC;SAC3D,MAAM,CAAC,gBAAgB,EAAE,uCAAuC,CAAC;SACjE,MAAM,CAAC,OAAO,EAAE,yBAAyB,CAAC;SAC1C,MAAM,CAAC,QAAQ,EAAE,0BAA0B,CAAC;SAC5C,MAAM,CAAC,YAAY,EAAE,wBAAwB,CAAC;SAC9C,MAAM,CAAC,aAAa,EAAE,iCAAiC,CAAC;SACxD,MAAM,CAAC,oBAAoB,EAAE,6CAA6C,CAAC;SAC3E,MAAM,CAAC,uBAAuB,EAAE,0BAA0B,CAAC,CAAC;IAE/D,GAAG,CAAC,MAAM,CACR,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAClC,MAAM,aAAa,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,aAAa,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAI,OAAO,CAAC,IAA6B,IAAI,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAI,OAAO,CAAC,OAAgC,IAAI,EAAE,CAAC;QAEhE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEhD,IAAI,mBAAmB,CAAC,aAAa,CAAC,EAAE,CAAC;YACvC,KAAK,MAAM,IAAI,IAAI,KAAK;gBAAE,OAAO,CAAC,GAAG,CAAE,IAAgC,CAAC,EAAE,CAAC,CAAC;YAC5E,OAAO;QACT,CAAC;QAED,IAAI,IAAa,CAAC;QAClB,IAAI,aAAa,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5C,IAAI,GAAG,KAAK,CAAC;QACf,CAAC;aAAM,CAAC;YACN,IAAI,GAAI,KAAwC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAC5D,gBAAgB,CAAC,IAAI,CAAC,YAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAChE,CAAC;QACJ,CAAC;QAED,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QACpC,qBAAqB,CACnB,KAAK,CAAC,MAAM,EACZ,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,IAAI,EACZ,aAAa,CAAC,MAAgB,CAC/B,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,GAAG,CAAC;AACb,CAAC"}
|