@epam/ai-dial-chat-hooks 1.2.0-dev.265 → 1.2.0-dev.266
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/index.d.ts
CHANGED
|
@@ -1264,6 +1264,8 @@ export declare const deriveFavoriteItems: (items: readonly CatalogItem[]) => Cat
|
|
|
1264
1264
|
* Unsupported constraints remain Custom, with the full source expression.
|
|
1265
1265
|
* Calendar-month shifts crossing month boundaries or days 29–31 remain
|
|
1266
1266
|
* Custom because a shifted monthly day is not equivalent around short months.
|
|
1267
|
+
* The one exception is `day: 'last'` one day behind local time, which is
|
|
1268
|
+
* exactly the local 1st.
|
|
1267
1269
|
*/
|
|
1268
1270
|
export declare const describeScheduledTaskTrigger: (trigger: ScheduleTriggerDto, { timeZone, referenceDate, }?: ScheduledTaskTriggerDescriptionOptions) => ScheduledTaskTriggerDescription;
|
|
1269
1271
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@epam/ai-dial-chat-hooks",
|
|
3
3
|
"description": "Framework-level React hooks extracted from AI DIAL Chat for building custom chat interfaces",
|
|
4
|
-
"version": "1.2.0-dev.
|
|
4
|
+
"version": "1.2.0-dev.266",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "./index.js",
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
}
|
|
112
112
|
},
|
|
113
113
|
"dependencies": {
|
|
114
|
-
"@epam/ai-dial-chat-api-client": "1.2.0-dev.
|
|
114
|
+
"@epam/ai-dial-chat-api-client": "1.2.0-dev.266",
|
|
115
115
|
"dompurify": "3.4.16",
|
|
116
116
|
"fflate": "^0.8.3",
|
|
117
117
|
"lru-cache": "^10.4.3",
|
|
@@ -120,21 +120,21 @@
|
|
|
120
120
|
},
|
|
121
121
|
"peerDependencies": {
|
|
122
122
|
"react": "^19.2.8",
|
|
123
|
-
"@epam/ai-dial-attachment-canvas": "1.2.0-dev.
|
|
124
|
-
"@epam/ai-dial-attachment-input": "1.2.0-dev.
|
|
125
|
-
"@epam/ai-dial-catalog": "1.2.0-dev.
|
|
126
|
-
"@epam/ai-dial-chat-overlay": "1.2.0-dev.
|
|
127
|
-
"@epam/ai-dial-chat-shared": "1.2.0-dev.
|
|
128
|
-
"@epam/ai-dial-mcp-apps": "1.2.0-dev.
|
|
129
|
-
"@epam/ai-dial-publish-panel": "1.2.0-dev.
|
|
130
|
-
"@epam/ai-dial-quotations": "1.2.0-dev.
|
|
123
|
+
"@epam/ai-dial-attachment-canvas": "1.2.0-dev.266",
|
|
124
|
+
"@epam/ai-dial-attachment-input": "1.2.0-dev.266",
|
|
125
|
+
"@epam/ai-dial-catalog": "1.2.0-dev.266",
|
|
126
|
+
"@epam/ai-dial-chat-overlay": "1.2.0-dev.266",
|
|
127
|
+
"@epam/ai-dial-chat-shared": "1.2.0-dev.266",
|
|
128
|
+
"@epam/ai-dial-mcp-apps": "1.2.0-dev.266",
|
|
129
|
+
"@epam/ai-dial-publish-panel": "1.2.0-dev.266",
|
|
130
|
+
"@epam/ai-dial-quotations": "1.2.0-dev.266",
|
|
131
131
|
"@epam/ai-dial-react-file-manager": "^0.3.0-dev.22",
|
|
132
|
-
"@epam/ai-dial-scheduled-tasks": "1.2.0-dev.
|
|
133
|
-
"@epam/ai-dial-share": "1.2.0-dev.
|
|
134
|
-
"@epam/ai-dial-skill-editor": "1.2.0-dev.
|
|
135
|
-
"@epam/ai-dial-source-panel": "1.2.0-dev.
|
|
132
|
+
"@epam/ai-dial-scheduled-tasks": "1.2.0-dev.266",
|
|
133
|
+
"@epam/ai-dial-share": "1.2.0-dev.266",
|
|
134
|
+
"@epam/ai-dial-skill-editor": "1.2.0-dev.266",
|
|
135
|
+
"@epam/ai-dial-source-panel": "1.2.0-dev.266",
|
|
136
136
|
"@epam/ai-dial-ui-kit": "^0.15.0-dev.36",
|
|
137
|
-
"@epam/ai-dial-usage-dashboard": "1.2.0-dev.
|
|
137
|
+
"@epam/ai-dial-usage-dashboard": "1.2.0-dev.266",
|
|
138
138
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
139
139
|
"@epam/pdf-highlighter-kit": "^0.0.19",
|
|
140
140
|
"@mcp-ui/client": "^7.1.1"
|
|
@@ -1,20 +1,21 @@
|
|
|
1
|
+
import { CRON_LAST_DAY_OF_MONTH as e } from "../shared/cron-day-of-month.js";
|
|
1
2
|
//#region src/scheduled-task/scheduled-task-description.ts
|
|
2
|
-
var
|
|
3
|
+
var t = /* @__PURE__ */ function(e) {
|
|
3
4
|
return e.OneTime = "oneTime", e.Hourly = "hourly", e.EveryNMinutes = "everyNMinutes", e.Daily = "daily", e.Weekly = "weekly", e.Monthly = "monthly", e.Custom = "custom", e.Invalid = "invalid", e;
|
|
4
|
-
}({}),
|
|
5
|
-
let
|
|
5
|
+
}({}), n = (t, { timeZone: n = "UTC", referenceDate: r = /* @__PURE__ */ new Date() } = {}) => {
|
|
6
|
+
let i = (e, t = {}) => ({
|
|
6
7
|
kind: e,
|
|
7
8
|
sourceTimezone: "utc",
|
|
8
9
|
...t
|
|
9
10
|
});
|
|
10
|
-
if (
|
|
11
|
-
if (
|
|
12
|
-
let
|
|
13
|
-
return Number.isNaN(
|
|
11
|
+
if (t.date && t.cron) return i("invalid");
|
|
12
|
+
if (t.date) {
|
|
13
|
+
let e = new Date(t.date);
|
|
14
|
+
return Number.isNaN(e.getTime()) ? i("invalid") : i("oneTime", { date: e });
|
|
14
15
|
}
|
|
15
|
-
let
|
|
16
|
-
if (!
|
|
17
|
-
let
|
|
16
|
+
let a = t.cron?.fields;
|
|
17
|
+
if (!a || Object.keys(a).length === 0) return i("invalid");
|
|
18
|
+
let o = () => i("custom", { expression: JSON.stringify(a) }), s = {
|
|
18
19
|
hour: [0, 23],
|
|
19
20
|
minute: [0, 59],
|
|
20
21
|
day: [1, 31],
|
|
@@ -22,19 +23,19 @@ var e = /* @__PURE__ */ function(e) {
|
|
|
22
23
|
month: [1, 12],
|
|
23
24
|
second: [0, 59]
|
|
24
25
|
};
|
|
25
|
-
for (let [e, t] of Object.entries(
|
|
26
|
+
for (let [e, t] of Object.entries(a)) {
|
|
26
27
|
if (t == null) continue;
|
|
27
|
-
if (!t.trim()) return
|
|
28
|
-
let n =
|
|
29
|
-
if (n && /^-?\d+$/.test(t) && (Number(t) < n[0] || Number(t) > n[1])) return
|
|
28
|
+
if (!t.trim()) return i("invalid");
|
|
29
|
+
let n = s[e];
|
|
30
|
+
if (n && /^-?\d+$/.test(t) && (Number(t) < n[0] || Number(t) > n[1])) return i("invalid");
|
|
30
31
|
if (e === "second" && t !== "0" || ![
|
|
31
32
|
"hour",
|
|
32
33
|
"minute",
|
|
33
34
|
"day",
|
|
34
35
|
"day_of_week"
|
|
35
|
-
].includes(e) && t !== "*" && !(e === "second" && t === "0")) return
|
|
36
|
+
].includes(e) && t !== "*" && !(e === "second" && t === "0")) return o();
|
|
36
37
|
}
|
|
37
|
-
let
|
|
38
|
+
let c = a.hour, l = a.minute, u = a.day === "*" ? void 0 : a.day, d = u === e, f = a.day_of_week === "*" ? void 0 : a.day_of_week, p = f ? [
|
|
38
39
|
"monday",
|
|
39
40
|
"tuesday",
|
|
40
41
|
"wednesday",
|
|
@@ -42,36 +43,39 @@ var e = /* @__PURE__ */ function(e) {
|
|
|
42
43
|
"friday",
|
|
43
44
|
"saturday",
|
|
44
45
|
"sunday"
|
|
45
|
-
].findIndex((e) => e ===
|
|
46
|
-
if (
|
|
47
|
-
let
|
|
48
|
-
if (
|
|
49
|
-
let e = Number(
|
|
50
|
-
return e > 0 && e <= 59 ?
|
|
46
|
+
].findIndex((e) => e === f.toLowerCase() || e.slice(0, 3) === f.toLowerCase()) : -1, m = p >= 0 ? String(p) : f;
|
|
47
|
+
if (u && m || u && !d && !/^\d+$/.test(u) || m && !/^\d+$/.test(m)) return o();
|
|
48
|
+
let h = c == null || c === "*", g = l?.match(/^\*\/(\d+)$/);
|
|
49
|
+
if (h && g && !u && !m) {
|
|
50
|
+
let e = Number(g[1]);
|
|
51
|
+
return e > 0 && e <= 59 ? i("everyNMinutes", { intervalMinutes: e }) : i("invalid");
|
|
51
52
|
}
|
|
52
|
-
if (!
|
|
53
|
-
let
|
|
54
|
-
if (Number.isNaN(
|
|
55
|
-
if (
|
|
56
|
-
let e = (Number(
|
|
57
|
-
|
|
53
|
+
if (!l || !/^\d+$/.test(l) || !h && !/^\d+$/.test(c) || h && (u || m)) return o();
|
|
54
|
+
let _ = new Date(r);
|
|
55
|
+
if (Number.isNaN(_.getTime())) return i("invalid");
|
|
56
|
+
if (_.setUTCHours(h ? 0 : Number(c), Number(l), 0, 0), m) {
|
|
57
|
+
let e = (Number(m) + 1) % 7;
|
|
58
|
+
_.setUTCDate(_.getUTCDate() + (e - _.getUTCDay() + 7) % 7);
|
|
58
59
|
}
|
|
59
|
-
let
|
|
60
|
-
timeZone:
|
|
60
|
+
let v = new Intl.DateTimeFormat("en-GB", {
|
|
61
|
+
timeZone: n,
|
|
61
62
|
hourCycle: "h23",
|
|
62
63
|
year: "numeric",
|
|
63
64
|
month: "2-digit",
|
|
64
65
|
day: "2-digit",
|
|
65
66
|
hour: "2-digit",
|
|
66
67
|
minute: "2-digit"
|
|
67
|
-
}).formatToParts(
|
|
68
|
-
return
|
|
69
|
-
time:
|
|
70
|
-
dayOfWeek: String((Number(
|
|
71
|
-
}) :
|
|
72
|
-
time:
|
|
73
|
-
dayOfMonth:
|
|
74
|
-
}) :
|
|
68
|
+
}).formatToParts(_), y = (e) => v.find((t) => t.type === e)?.value ?? "", b = new Date(Date.UTC(Number(y("year")), Number(y("month")) - 1, Number(y("day")))), x = Date.UTC(_.getUTCFullYear(), _.getUTCMonth(), _.getUTCDate()), S = Math.round((b.getTime() - x) / 864e5), C = y("hour") + ":" + y("minute");
|
|
69
|
+
return h ? i("hourly", { time: y("minute") }) : m ? i("weekly", {
|
|
70
|
+
time: C,
|
|
71
|
+
dayOfWeek: String((Number(m) + S + 7) % 7)
|
|
72
|
+
}) : d ? S === 1 ? i("monthly", {
|
|
73
|
+
time: C,
|
|
74
|
+
dayOfMonth: "1"
|
|
75
|
+
}) : o() : u ? S === 0 || Number(u) <= 28 && Number(u) + S >= 1 && Number(u) + S <= 28 ? i("monthly", {
|
|
76
|
+
time: C,
|
|
77
|
+
dayOfMonth: String(Number(u) + S)
|
|
78
|
+
}) : o() : i("daily", { time: C });
|
|
75
79
|
};
|
|
76
80
|
//#endregion
|
|
77
|
-
export {
|
|
81
|
+
export { t as ScheduledTaskTriggerDescriptionKind, n as describeScheduledTaskTrigger };
|
|
@@ -1,41 +1,42 @@
|
|
|
1
1
|
import { padTwoDigits as e } from "../shared/formatting.js";
|
|
2
2
|
import { UnsupportedTriggerReason as t } from "./scheduled-task-mapping.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { getUtcDayShift as n, toLocalDayOfMonth as r, toUtcCronDayOfMonth as i } from "../shared/cron-day-of-month.js";
|
|
4
|
+
import { apSchedulerDayToJsDay as a, jsDayToApSchedulerDay as o } from "../shared/cron-weekday.js";
|
|
5
|
+
import { ScheduledTaskRepeat as s } from "@epam/ai-dial-scheduled-tasks";
|
|
5
6
|
//#region src/scheduled-task/scheduled-task-trigger.ts
|
|
6
|
-
var
|
|
7
|
+
var c = new Set([
|
|
7
8
|
"hour",
|
|
8
9
|
"minute",
|
|
9
10
|
"day_of_week",
|
|
10
11
|
"day"
|
|
11
|
-
]),
|
|
12
|
-
if (e.repeat ===
|
|
12
|
+
]), l = "09:00", u = (e) => {
|
|
13
|
+
if (e.repeat === s.Hourly) {
|
|
13
14
|
let t = /* @__PURE__ */ new Date();
|
|
14
15
|
return t.setHours(0, Number(e.minute), 0, 0), {
|
|
15
16
|
hour: "*",
|
|
16
17
|
minute: String(t.getUTCMinutes())
|
|
17
18
|
};
|
|
18
19
|
}
|
|
19
|
-
let [t,
|
|
20
|
-
|
|
21
|
-
let
|
|
22
|
-
if (
|
|
23
|
-
let t = (
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
let
|
|
27
|
-
hour: String(
|
|
28
|
-
minute: String(
|
|
20
|
+
let [t, r] = e.time.split(":"), c = Number(t), l = Number(r), u = /* @__PURE__ */ new Date();
|
|
21
|
+
u.setHours(c, l, 0, 0);
|
|
22
|
+
let d = e.repeat === s.Weekly && !!e.dayOfWeek, f = e.repeat === s.Monthly && !!e.dayOfMonth;
|
|
23
|
+
if (d) {
|
|
24
|
+
let t = (a(Number(e.dayOfWeek)) - u.getDay() + 7) % 7;
|
|
25
|
+
u.setDate(u.getDate() + t);
|
|
26
|
+
}
|
|
27
|
+
let p = {
|
|
28
|
+
hour: String(u.getUTCHours()),
|
|
29
|
+
minute: String(u.getUTCMinutes())
|
|
29
30
|
};
|
|
30
|
-
return
|
|
31
|
-
},
|
|
31
|
+
return d && (p.day_of_week = String(o(u.getUTCDay()))), f && (p.day = i(Number(e.dayOfMonth), n(u))), p;
|
|
32
|
+
}, d = (e, t) => {
|
|
32
33
|
let [n, r, i] = e.split("-").map(Number), a = new Date(n, r - 1, i);
|
|
33
34
|
return t === "start" ? a.setHours(0, 0, 0, 0) : a.setHours(23, 59, 59, 999), a.toISOString();
|
|
34
|
-
},
|
|
35
|
-
let t = e.repeat ===
|
|
36
|
-
fields:
|
|
37
|
-
...e.startDate ? { startDate:
|
|
38
|
-
...e.endDate ? { endDate:
|
|
35
|
+
}, f = (e) => {
|
|
36
|
+
let t = e.repeat === s.OneTime ? { date: new Date(e.runAt ?? "").toISOString() } : { cron: {
|
|
37
|
+
fields: u(e),
|
|
38
|
+
...e.startDate ? { startDate: d(e.startDate, "start") } : {},
|
|
39
|
+
...e.endDate ? { endDate: d(e.endDate, "end") } : {}
|
|
39
40
|
} }, n = e.description?.trim();
|
|
40
41
|
return {
|
|
41
42
|
displayName: e.displayName.trim(),
|
|
@@ -45,19 +46,19 @@ var a = new Set([
|
|
|
45
46
|
...e.skillUrl ? { skillUrl: e.skillUrl } : {},
|
|
46
47
|
...n ? { description: n } : {}
|
|
47
48
|
};
|
|
48
|
-
},
|
|
49
|
-
...
|
|
49
|
+
}, p = (e) => ({
|
|
50
|
+
...f(e),
|
|
50
51
|
skillUrl: e.skillUrl || null
|
|
51
|
-
}),
|
|
52
|
+
}), m = (t) => {
|
|
52
53
|
let n = new Date(t);
|
|
53
54
|
return `${n.getFullYear()}-${e(n.getMonth() + 1)}-${e(n.getDate())}T${e(n.getHours())}:${e(n.getMinutes())}`;
|
|
54
|
-
},
|
|
55
|
+
}, h = (t) => {
|
|
55
56
|
let n = new Date(t);
|
|
56
57
|
return `${n.getFullYear()}-${e(n.getMonth() + 1)}-${e(n.getDate())}`;
|
|
57
|
-
},
|
|
58
|
-
let i = new Set(Object.entries(t).filter(([, e]) => e != null).map(([e]) => e)),
|
|
59
|
-
if (
|
|
60
|
-
if (t.hour === "*" && /^\d+$/.test(String(t.minute)) && !
|
|
58
|
+
}, g = (t) => {
|
|
59
|
+
let i = new Set(Object.entries(t).filter(([, e]) => e != null).map(([e]) => e)), s = [...i].filter((e) => !c.has(e)), l = i.has("day_of_week"), u = i.has("day");
|
|
60
|
+
if (s.length > 0 || l && u || !i.has("hour") || !i.has("minute")) return { ok: !1 };
|
|
61
|
+
if (t.hour === "*" && /^\d+$/.test(String(t.minute)) && !l && !u) {
|
|
61
62
|
let e = /* @__PURE__ */ new Date();
|
|
62
63
|
return e.setUTCHours(0, Number(t.minute), 0, 0), {
|
|
63
64
|
ok: !0,
|
|
@@ -65,85 +66,82 @@ var a = new Set([
|
|
|
65
66
|
minute: String(e.getMinutes())
|
|
66
67
|
};
|
|
67
68
|
}
|
|
68
|
-
let
|
|
69
|
-
if (Number.isNaN(
|
|
70
|
-
let
|
|
71
|
-
if (
|
|
69
|
+
let d = Number(t.hour), f = Number(t.minute);
|
|
70
|
+
if (Number.isNaN(d) || Number.isNaN(f)) return { ok: !1 };
|
|
71
|
+
let p = /* @__PURE__ */ new Date();
|
|
72
|
+
if (p.setUTCHours(d, f, 0, 0), l) {
|
|
72
73
|
let e = Number(t.day_of_week);
|
|
73
74
|
if (Number.isNaN(e)) return { ok: !1 };
|
|
74
|
-
let
|
|
75
|
-
|
|
76
|
-
} else if (c) {
|
|
77
|
-
let e = Number(t.day);
|
|
78
|
-
if (Number.isNaN(e)) return { ok: !1 };
|
|
79
|
-
d.setUTCDate(e);
|
|
75
|
+
let n = (a(e) - p.getUTCDay() + 7) % 7;
|
|
76
|
+
p.setUTCDate(p.getUTCDate() + n);
|
|
80
77
|
}
|
|
81
|
-
|
|
78
|
+
let m = u ? r(String(t.day), n(p)) : void 0;
|
|
79
|
+
return u && !m ? { ok: !1 } : {
|
|
82
80
|
ok: !0,
|
|
83
81
|
isHourly: !1,
|
|
84
|
-
time: `${e(
|
|
85
|
-
...
|
|
86
|
-
...
|
|
82
|
+
time: `${e(p.getHours())}:${e(p.getMinutes())}`,
|
|
83
|
+
...l ? { dayOfWeek: String(o(p.getDay())) } : {},
|
|
84
|
+
...m ? { dayOfMonth: m } : {}
|
|
87
85
|
};
|
|
88
|
-
},
|
|
86
|
+
}, _ = (e) => {
|
|
89
87
|
if (!e.model || typeof e.prompt != "string" || !e.prompt.trim() && !e.skillUrl) return {
|
|
90
88
|
ok: !1,
|
|
91
89
|
reason: t.MissingRequiredFields
|
|
92
90
|
};
|
|
93
|
-
let { date: n, cron: r } = e.trigger,
|
|
94
|
-
if (
|
|
91
|
+
let { date: n, cron: r } = e.trigger, i = !!n;
|
|
92
|
+
if (i === !!r) return {
|
|
95
93
|
ok: !1,
|
|
96
94
|
reason: t.UnsupportedTriggerType
|
|
97
95
|
};
|
|
98
|
-
let
|
|
96
|
+
let a = {
|
|
99
97
|
displayName: e.displayName,
|
|
100
98
|
modelId: e.model,
|
|
101
99
|
prompt: e.prompt,
|
|
102
100
|
...e.skillUrl ? { skillUrl: e.skillUrl } : {},
|
|
103
101
|
...e.description ? { description: e.description } : {}
|
|
104
102
|
};
|
|
105
|
-
if (
|
|
103
|
+
if (i) return {
|
|
106
104
|
ok: !0,
|
|
107
105
|
values: {
|
|
108
|
-
...
|
|
109
|
-
repeat:
|
|
110
|
-
runAt:
|
|
111
|
-
time:
|
|
106
|
+
...a,
|
|
107
|
+
repeat: s.OneTime,
|
|
108
|
+
runAt: m(n),
|
|
109
|
+
time: l
|
|
112
110
|
}
|
|
113
111
|
};
|
|
114
112
|
if (!r) return {
|
|
115
113
|
ok: !1,
|
|
116
114
|
reason: t.UnsupportedTriggerType
|
|
117
115
|
};
|
|
118
|
-
let
|
|
119
|
-
if (!
|
|
116
|
+
let o = g(r.fields);
|
|
117
|
+
if (!o.ok) return {
|
|
120
118
|
ok: !1,
|
|
121
119
|
reason: t.UnsupportedCronShape
|
|
122
120
|
};
|
|
123
|
-
if (
|
|
121
|
+
if (o.isHourly) return {
|
|
124
122
|
ok: !0,
|
|
125
123
|
values: {
|
|
126
|
-
...
|
|
127
|
-
repeat:
|
|
128
|
-
time:
|
|
129
|
-
minute:
|
|
130
|
-
...r.startDate ? { startDate:
|
|
131
|
-
...r.endDate ? { endDate:
|
|
124
|
+
...a,
|
|
125
|
+
repeat: s.Hourly,
|
|
126
|
+
time: l,
|
|
127
|
+
minute: o.minute,
|
|
128
|
+
...r.startDate ? { startDate: h(r.startDate) } : {},
|
|
129
|
+
...r.endDate ? { endDate: h(r.endDate) } : {}
|
|
132
130
|
}
|
|
133
131
|
};
|
|
134
|
-
let
|
|
135
|
-
return
|
|
132
|
+
let c = s.Daily;
|
|
133
|
+
return o.dayOfWeek ? c = s.Weekly : o.dayOfMonth && (c = s.Monthly), {
|
|
136
134
|
ok: !0,
|
|
137
135
|
values: {
|
|
138
|
-
...
|
|
139
|
-
repeat:
|
|
140
|
-
time:
|
|
141
|
-
...
|
|
142
|
-
...
|
|
143
|
-
...r.startDate ? { startDate:
|
|
144
|
-
...r.endDate ? { endDate:
|
|
136
|
+
...a,
|
|
137
|
+
repeat: c,
|
|
138
|
+
time: o.time,
|
|
139
|
+
...o.dayOfWeek ? { dayOfWeek: o.dayOfWeek } : {},
|
|
140
|
+
...o.dayOfMonth ? { dayOfMonth: o.dayOfMonth } : {},
|
|
141
|
+
...r.startDate ? { startDate: h(r.startDate) } : {},
|
|
142
|
+
...r.endDate ? { endDate: h(r.endDate) } : {}
|
|
145
143
|
}
|
|
146
144
|
};
|
|
147
145
|
};
|
|
148
146
|
//#endregion
|
|
149
|
-
export {
|
|
147
|
+
export { f as mapFormValuesToCreateBody, p as mapFormValuesToUpdateBody, _ as mapScheduledTaskDtoToFormValues };
|
package/scheduled-tasks.d.ts
CHANGED
|
@@ -25,6 +25,8 @@ export declare const createScheduledTasksApiClient: (client: ScheduledTasksConfi
|
|
|
25
25
|
* Unsupported constraints remain Custom, with the full source expression.
|
|
26
26
|
* Calendar-month shifts crossing month boundaries or days 29–31 remain
|
|
27
27
|
* Custom because a shifted monthly day is not equivalent around short months.
|
|
28
|
+
* The one exception is `day: 'last'` one day behind local time, which is
|
|
29
|
+
* exactly the local 1st.
|
|
28
30
|
*/
|
|
29
31
|
export declare const describeScheduledTaskTrigger: (trigger: ScheduleTriggerDto, { timeZone, referenceDate, }?: ScheduledTaskTriggerDescriptionOptions) => ScheduledTaskTriggerDescription;
|
|
30
32
|
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//#region src/shared/cron-day-of-month.ts
|
|
2
|
+
var e = "last", t = 31, n = 864e5, r = (e) => Math.round((Date.UTC(e.getUTCFullYear(), e.getUTCMonth(), e.getUTCDate()) - Date.UTC(e.getFullYear(), e.getMonth(), e.getDate())) / n), i = (n, r) => {
|
|
3
|
+
let i = n + r;
|
|
4
|
+
return i < 1 ? e : i > t ? "1" : String(i);
|
|
5
|
+
}, a = (e, n) => {
|
|
6
|
+
if (e === "last") return n === -1 ? "1" : void 0;
|
|
7
|
+
let r = Number(e);
|
|
8
|
+
if (!/^\d+$/.test(e) || r < 1 || r > t) return;
|
|
9
|
+
let i = r - n;
|
|
10
|
+
return i < 1 ? String(t) : i > t ? "1" : String(i);
|
|
11
|
+
};
|
|
12
|
+
//#endregion
|
|
13
|
+
export { e as CRON_LAST_DAY_OF_MONTH, r as getUtcDayShift, a as toLocalDayOfMonth, i as toUtcCronDayOfMonth };
|