@qihongmu/dsh-client-ui-scheduled-task 0.1.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/cordis.patch.yml +5 -0
- package/lib/client.js +1563 -0
- package/lib/types/client/ScheduleEditor.d.ts +40 -0
- package/lib/types/client/ScheduleEditor.js +114 -0
- package/lib/types/client/ScheduledTaskCreate.d.ts +26 -0
- package/lib/types/client/ScheduledTaskCreate.js +194 -0
- package/lib/types/client/ScheduledTasksList.d.ts +20 -0
- package/lib/types/client/ScheduledTasksList.js +45 -0
- package/lib/types/client/ScheduledTasksPanel.d.ts +13 -0
- package/lib/types/client/ScheduledTasksPanel.js +134 -0
- package/lib/types/client/format.d.ts +14 -0
- package/lib/types/client/format.js +46 -0
- package/lib/types/client/index.d.ts +30 -0
- package/lib/types/client/index.js +70 -0
- package/lib/types/client/locales.d.ts +294 -0
- package/lib/types/client/locales.js +290 -0
- package/lib/types/client/slots.d.ts +44 -0
- package/lib/types/client/slots.js +4 -0
- package/lib/types/index.d.ts +9 -0
- package/lib/types/index.js +8 -0
- package/lib/types/invariant.d.ts +16 -0
- package/lib/types/invariant.js +21 -0
- package/package.json +71 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/** Shared formatting helpers for the scheduled-tasks UI. */
|
|
2
|
+
/** Format a wire ISO timestamp in the browser's default zone. */
|
|
3
|
+
export function localizedDate(value) {
|
|
4
|
+
if (value === undefined)
|
|
5
|
+
return '';
|
|
6
|
+
return new Intl.DateTimeFormat(undefined, {
|
|
7
|
+
dateStyle: 'medium',
|
|
8
|
+
timeStyle: 'short',
|
|
9
|
+
}).format(new Date(value));
|
|
10
|
+
}
|
|
11
|
+
/** Humanize a whole-second duration through the duration dictionary keys. */
|
|
12
|
+
export function humanizeDuration(t, seconds) {
|
|
13
|
+
if (seconds % 86_400 === 0)
|
|
14
|
+
return t('duration.days', { count: seconds / 86_400 });
|
|
15
|
+
if (seconds % 3_600 === 0)
|
|
16
|
+
return t('duration.hours', { count: seconds / 3_600 });
|
|
17
|
+
if (seconds % 60 === 0)
|
|
18
|
+
return t('duration.minutes', { count: seconds / 60 });
|
|
19
|
+
return t('duration.seconds', { count: seconds });
|
|
20
|
+
}
|
|
21
|
+
/** Join localized weekday names with the locale's list separator. */
|
|
22
|
+
export function weekdaySummary(t, days) {
|
|
23
|
+
return days.map(day => t(`schedule.wd.${day}`)).join(t('schedule.wd.separator'));
|
|
24
|
+
}
|
|
25
|
+
/** Localize one schedule rule into a one-line summary (list rows, previews). */
|
|
26
|
+
export function ruleSummary(rule, t) {
|
|
27
|
+
switch (rule.kind) {
|
|
28
|
+
case 'every':
|
|
29
|
+
return t('row.schedule.every', { duration: humanizeDuration(t, rule.everySeconds) });
|
|
30
|
+
case 'after':
|
|
31
|
+
return t('row.schedule.after', { duration: humanizeDuration(t, rule.afterSeconds) });
|
|
32
|
+
case 'at':
|
|
33
|
+
return t('row.schedule.at', { time: localizedDate(rule.scheduledAt) });
|
|
34
|
+
case 'hourly':
|
|
35
|
+
return t('row.schedule.hourly', { minute: String(rule.minute).padStart(2, '0') });
|
|
36
|
+
case 'daily':
|
|
37
|
+
return t('row.schedule.daily', { time: rule.time });
|
|
38
|
+
case 'weekly':
|
|
39
|
+
return t('row.schedule.weekly', {
|
|
40
|
+
weekdays: weekdaySummary(t, rule.weekdays),
|
|
41
|
+
time: rule.time,
|
|
42
|
+
});
|
|
43
|
+
case 'monthly':
|
|
44
|
+
return t('row.schedule.monthly', { day: String(rule.dayOfMonth), time: rule.time });
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External scheduled-tasks sidebar panel (browser half): registers a
|
|
3
|
+
* `sidebar.footer.action` entry whose trigger opens a right-docked drawer with
|
|
4
|
+
* two views — the 已安排的任务 history list (search/filter/hover actions) and
|
|
5
|
+
* the 新建定时任务 create/edit form (schedule presets, instruction prompt,
|
|
6
|
+
* project workspace, confirm-before-change, model). The `scheduledTasks`
|
|
7
|
+
* Remote namespace is provided by the sibling remotes assembly entry
|
|
8
|
+
* (`@qihongmu/dsh-client-remotes-scheduled-task`), which activates first —
|
|
9
|
+
* this entry declares it plus `connection`/`sessions` (the project and model
|
|
10
|
+
* option catalogs) in its inject list so cordis grants the guarded reads.
|
|
11
|
+
* @module @qihongmu/dsh-client-ui-scheduled-task/client
|
|
12
|
+
*/
|
|
13
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
14
|
+
import type { ScheduledTaskKey } from './locales.ts';
|
|
15
|
+
declare module '@deepseek-ai/dsh-client-ui-slots' {
|
|
16
|
+
interface LocaleNamespaceMap {
|
|
17
|
+
'scheduled-tasks': ScheduledTaskKey;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export { ScheduledTasksPanel } from './ScheduledTasksPanel.tsx';
|
|
21
|
+
export type { ScheduledTaskModelOption, ScheduledTaskProjectOption, ScheduledTasksPanelFace, ScheduledTasksRemote, } from './slots.ts';
|
|
22
|
+
/**
|
|
23
|
+
* Required services: the slot system, locale, the Remote key, the
|
|
24
|
+
* `remote.scheduledTasks` namespace provided by the remotes assembly entry,
|
|
25
|
+
* and the connection/session runtimes backing the create form's option lists.
|
|
26
|
+
*/
|
|
27
|
+
export declare const inject: string[];
|
|
28
|
+
/** Register the scheduled-tasks sidebar panel over the mounted Remote namespace. */
|
|
29
|
+
export declare function apply(ctx: Context): void;
|
|
30
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External scheduled-tasks sidebar panel (browser half): registers a
|
|
3
|
+
* `sidebar.footer.action` entry whose trigger opens a right-docked drawer with
|
|
4
|
+
* two views — the 已安排的任务 history list (search/filter/hover actions) and
|
|
5
|
+
* the 新建定时任务 create/edit form (schedule presets, instruction prompt,
|
|
6
|
+
* project workspace, confirm-before-change, model). The `scheduledTasks`
|
|
7
|
+
* Remote namespace is provided by the sibling remotes assembly entry
|
|
8
|
+
* (`@qihongmu/dsh-client-remotes-scheduled-task`), which activates first —
|
|
9
|
+
* this entry declares it plus `connection`/`sessions` (the project and model
|
|
10
|
+
* option catalogs) in its inject list so cordis grants the guarded reads.
|
|
11
|
+
* @module @qihongmu/dsh-client-ui-scheduled-task/client
|
|
12
|
+
*/
|
|
13
|
+
import { en, NS, zh } from "./locales.js";
|
|
14
|
+
import { ScheduledTasksPanel } from "./ScheduledTasksPanel.js";
|
|
15
|
+
export { ScheduledTasksPanel } from "./ScheduledTasksPanel.js";
|
|
16
|
+
/**
|
|
17
|
+
* Required services: the slot system, locale, the Remote key, the
|
|
18
|
+
* `remote.scheduledTasks` namespace provided by the remotes assembly entry,
|
|
19
|
+
* and the connection/session runtimes backing the create form's option lists.
|
|
20
|
+
*/
|
|
21
|
+
export const inject = [
|
|
22
|
+
'slots', 'locale', 'remote', 'remote.scheduledTasks', 'connection', 'sessions',
|
|
23
|
+
];
|
|
24
|
+
/** Register the scheduled-tasks sidebar panel over the mounted Remote namespace. */
|
|
25
|
+
export function apply(ctx) {
|
|
26
|
+
ctx.effect(() => ctx.locale.register(NS, { zh, en }), 'ui-scheduled-task: dictionaries');
|
|
27
|
+
const sessions = ctx.get('sessions');
|
|
28
|
+
const connection = ctx.get('connection');
|
|
29
|
+
ctx.slots.inject('sidebar.footer.action', () => ctx.slots.register({
|
|
30
|
+
name: 'sidebar.footer.action',
|
|
31
|
+
id: 'scheduled-tasks',
|
|
32
|
+
locale: NS,
|
|
33
|
+
inject: () => ({
|
|
34
|
+
remote: ctx.remote.scheduledTasks,
|
|
35
|
+
listProjects: async () => {
|
|
36
|
+
const response = await connection.api.workspace.list({});
|
|
37
|
+
if (!response.result.ok) {
|
|
38
|
+
throw new Error(`${response.result.error.code}: ${response.result.error.message}`);
|
|
39
|
+
}
|
|
40
|
+
return response.result.value.items.map((item) => ({
|
|
41
|
+
workspaceId: String(item.workspaceId),
|
|
42
|
+
title: item.title,
|
|
43
|
+
path: item.path,
|
|
44
|
+
}));
|
|
45
|
+
},
|
|
46
|
+
listModels: async () => {
|
|
47
|
+
// The advisory catalog is session-scoped; borrow the open conversation's.
|
|
48
|
+
const sessionId = sessions.list.getSnapshot().current;
|
|
49
|
+
if (sessionId === undefined)
|
|
50
|
+
return [];
|
|
51
|
+
const response = await connection.api.sessions.models({ sessionId });
|
|
52
|
+
if (!response.result.ok) {
|
|
53
|
+
throw new Error(`${response.result.error.code}: ${response.result.error.message}`);
|
|
54
|
+
}
|
|
55
|
+
const rows = [];
|
|
56
|
+
for (const group of response.result.value.groups) {
|
|
57
|
+
for (const model of group.models) {
|
|
58
|
+
rows.push({
|
|
59
|
+
providerId: group.id,
|
|
60
|
+
providerName: group.name,
|
|
61
|
+
modelId: model.id,
|
|
62
|
+
modelName: model.name,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return rows;
|
|
67
|
+
},
|
|
68
|
+
}),
|
|
69
|
+
}, ScheduledTasksPanel));
|
|
70
|
+
}
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
/** Scheduled-tasks panel UI dictionaries. */
|
|
2
|
+
export declare const NS = "scheduled-tasks";
|
|
3
|
+
/** Every translation key owned by the scheduled-tasks UI namespace. */
|
|
4
|
+
declare const KEY_SET: {
|
|
5
|
+
readonly 'trigger.label': true;
|
|
6
|
+
readonly 'trigger.aria': true;
|
|
7
|
+
readonly 'panel.title': true;
|
|
8
|
+
readonly 'panel.subtitle': true;
|
|
9
|
+
readonly 'panel.empty': true;
|
|
10
|
+
readonly 'panel.loading': true;
|
|
11
|
+
readonly 'panel.readFailed': true;
|
|
12
|
+
readonly 'search.placeholder': true;
|
|
13
|
+
readonly 'filter.all': true;
|
|
14
|
+
readonly 'filter.active': true;
|
|
15
|
+
readonly 'filter.paused': true;
|
|
16
|
+
readonly 'drawer.close': true;
|
|
17
|
+
readonly 'row.schedule.every': true;
|
|
18
|
+
readonly 'row.schedule.after': true;
|
|
19
|
+
readonly 'row.schedule.at': true;
|
|
20
|
+
readonly 'row.schedule.hourly': true;
|
|
21
|
+
readonly 'row.schedule.daily': true;
|
|
22
|
+
readonly 'row.schedule.weekly': true;
|
|
23
|
+
readonly 'row.schedule.monthly': true;
|
|
24
|
+
readonly 'row.next': true;
|
|
25
|
+
readonly 'row.status.active': true;
|
|
26
|
+
readonly 'row.status.paused': true;
|
|
27
|
+
readonly 'row.status.completed': true;
|
|
28
|
+
readonly 'row.state.overdue': true;
|
|
29
|
+
readonly 'row.lastError': true;
|
|
30
|
+
readonly 'action.create': true;
|
|
31
|
+
readonly 'action.pause': true;
|
|
32
|
+
readonly 'action.resume': true;
|
|
33
|
+
readonly 'action.edit': true;
|
|
34
|
+
readonly 'action.delete': true;
|
|
35
|
+
readonly 'action.markRead': true;
|
|
36
|
+
readonly 'create.title': true;
|
|
37
|
+
readonly 'create.editTitle': true;
|
|
38
|
+
readonly 'create.subtitle': true;
|
|
39
|
+
readonly 'create.submit': true;
|
|
40
|
+
readonly 'create.save': true;
|
|
41
|
+
readonly 'form.title.label': true;
|
|
42
|
+
readonly 'form.title.placeholder': true;
|
|
43
|
+
readonly 'form.prompt.label': true;
|
|
44
|
+
readonly 'form.prompt.placeholder': true;
|
|
45
|
+
readonly 'form.prompt.required': true;
|
|
46
|
+
readonly 'form.schedule.label': true;
|
|
47
|
+
readonly 'form.schedule.required': true;
|
|
48
|
+
readonly 'form.schedule.invalid': true;
|
|
49
|
+
readonly 'form.schedule.add': true;
|
|
50
|
+
readonly 'schedule.hourly': true;
|
|
51
|
+
readonly 'schedule.daily': true;
|
|
52
|
+
readonly 'schedule.weekly': true;
|
|
53
|
+
readonly 'schedule.monthly': true;
|
|
54
|
+
readonly 'schedule.custom': true;
|
|
55
|
+
readonly 'schedule.hourlyAtMinute': true;
|
|
56
|
+
readonly 'schedule.minuteUnit': true;
|
|
57
|
+
readonly 'schedule.at': true;
|
|
58
|
+
readonly 'schedule.dayUnit': true;
|
|
59
|
+
readonly 'schedule.clear': true;
|
|
60
|
+
readonly 'schedule.pickWeekdays': true;
|
|
61
|
+
readonly 'schedule.wd.1': true;
|
|
62
|
+
readonly 'schedule.wd.2': true;
|
|
63
|
+
readonly 'schedule.wd.3': true;
|
|
64
|
+
readonly 'schedule.wd.4': true;
|
|
65
|
+
readonly 'schedule.wd.5': true;
|
|
66
|
+
readonly 'schedule.wd.6': true;
|
|
67
|
+
readonly 'schedule.wd.7': true;
|
|
68
|
+
readonly 'schedule.wd.separator': true;
|
|
69
|
+
readonly 'schedule.preview.hourly': true;
|
|
70
|
+
readonly 'schedule.preview.daily': true;
|
|
71
|
+
readonly 'schedule.preview.weekly': true;
|
|
72
|
+
readonly 'schedule.preview.monthly': true;
|
|
73
|
+
readonly 'form.kind.once': true;
|
|
74
|
+
readonly 'form.kind.delay': true;
|
|
75
|
+
readonly 'form.kind.interval': true;
|
|
76
|
+
readonly 'form.date': true;
|
|
77
|
+
readonly 'form.time': true;
|
|
78
|
+
readonly 'form.timeZone': true;
|
|
79
|
+
readonly 'form.afterSeconds': true;
|
|
80
|
+
readonly 'form.everySeconds': true;
|
|
81
|
+
readonly 'form.project.label': true;
|
|
82
|
+
readonly 'form.project.none': true;
|
|
83
|
+
readonly 'form.project.loading': true;
|
|
84
|
+
readonly 'form.project.failed': true;
|
|
85
|
+
readonly 'form.model.label': true;
|
|
86
|
+
readonly 'form.model.default': true;
|
|
87
|
+
readonly 'form.model.loading': true;
|
|
88
|
+
readonly 'form.model.empty': true;
|
|
89
|
+
readonly 'form.model.failed': true;
|
|
90
|
+
readonly 'form.confirm.label': true;
|
|
91
|
+
readonly 'form.confirm.hint': true;
|
|
92
|
+
readonly 'form.cancel': true;
|
|
93
|
+
readonly 'form.submitBusy': true;
|
|
94
|
+
readonly 'duration.seconds': true;
|
|
95
|
+
readonly 'duration.minutes': true;
|
|
96
|
+
readonly 'duration.hours': true;
|
|
97
|
+
readonly 'duration.days': true;
|
|
98
|
+
};
|
|
99
|
+
/** Translation keys owned by the scheduled-tasks UI namespace. */
|
|
100
|
+
export type ScheduledTaskKey = keyof typeof KEY_SET;
|
|
101
|
+
/** Simplified Chinese scheduled-tasks UI messages. */
|
|
102
|
+
export declare const zh: {
|
|
103
|
+
'trigger.label': string;
|
|
104
|
+
'trigger.aria': string;
|
|
105
|
+
'panel.title': string;
|
|
106
|
+
'panel.subtitle': string;
|
|
107
|
+
'panel.empty': string;
|
|
108
|
+
'panel.loading': string;
|
|
109
|
+
'panel.readFailed': string;
|
|
110
|
+
'search.placeholder': string;
|
|
111
|
+
'filter.all': string;
|
|
112
|
+
'filter.active': string;
|
|
113
|
+
'filter.paused': string;
|
|
114
|
+
'drawer.close': string;
|
|
115
|
+
'row.schedule.every': string;
|
|
116
|
+
'row.schedule.after': string;
|
|
117
|
+
'row.schedule.at': string;
|
|
118
|
+
'row.schedule.hourly': string;
|
|
119
|
+
'row.schedule.daily': string;
|
|
120
|
+
'row.schedule.weekly': string;
|
|
121
|
+
'row.schedule.monthly': string;
|
|
122
|
+
'row.next': string;
|
|
123
|
+
'row.status.active': string;
|
|
124
|
+
'row.status.paused': string;
|
|
125
|
+
'row.status.completed': string;
|
|
126
|
+
'row.state.overdue': string;
|
|
127
|
+
'row.lastError': string;
|
|
128
|
+
'action.create': string;
|
|
129
|
+
'action.pause': string;
|
|
130
|
+
'action.resume': string;
|
|
131
|
+
'action.edit': string;
|
|
132
|
+
'action.delete': string;
|
|
133
|
+
'action.markRead': string;
|
|
134
|
+
'create.title': string;
|
|
135
|
+
'create.editTitle': string;
|
|
136
|
+
'create.subtitle': string;
|
|
137
|
+
'create.submit': string;
|
|
138
|
+
'create.save': string;
|
|
139
|
+
'form.title.label': string;
|
|
140
|
+
'form.title.placeholder': string;
|
|
141
|
+
'form.prompt.label': string;
|
|
142
|
+
'form.prompt.placeholder': string;
|
|
143
|
+
'form.prompt.required': string;
|
|
144
|
+
'form.schedule.label': string;
|
|
145
|
+
'form.schedule.required': string;
|
|
146
|
+
'form.schedule.invalid': string;
|
|
147
|
+
'form.schedule.add': string;
|
|
148
|
+
'schedule.hourly': string;
|
|
149
|
+
'schedule.daily': string;
|
|
150
|
+
'schedule.weekly': string;
|
|
151
|
+
'schedule.monthly': string;
|
|
152
|
+
'schedule.custom': string;
|
|
153
|
+
'schedule.hourlyAtMinute': string;
|
|
154
|
+
'schedule.minuteUnit': string;
|
|
155
|
+
'schedule.at': string;
|
|
156
|
+
'schedule.dayUnit': string;
|
|
157
|
+
'schedule.clear': string;
|
|
158
|
+
'schedule.pickWeekdays': string;
|
|
159
|
+
'schedule.wd.1': string;
|
|
160
|
+
'schedule.wd.2': string;
|
|
161
|
+
'schedule.wd.3': string;
|
|
162
|
+
'schedule.wd.4': string;
|
|
163
|
+
'schedule.wd.5': string;
|
|
164
|
+
'schedule.wd.6': string;
|
|
165
|
+
'schedule.wd.7': string;
|
|
166
|
+
'schedule.wd.separator': string;
|
|
167
|
+
'schedule.preview.hourly': string;
|
|
168
|
+
'schedule.preview.daily': string;
|
|
169
|
+
'schedule.preview.weekly': string;
|
|
170
|
+
'schedule.preview.monthly': string;
|
|
171
|
+
'form.kind.once': string;
|
|
172
|
+
'form.kind.delay': string;
|
|
173
|
+
'form.kind.interval': string;
|
|
174
|
+
'form.date': string;
|
|
175
|
+
'form.time': string;
|
|
176
|
+
'form.timeZone': string;
|
|
177
|
+
'form.afterSeconds': string;
|
|
178
|
+
'form.everySeconds': string;
|
|
179
|
+
'form.project.label': string;
|
|
180
|
+
'form.project.none': string;
|
|
181
|
+
'form.project.loading': string;
|
|
182
|
+
'form.project.failed': string;
|
|
183
|
+
'form.model.label': string;
|
|
184
|
+
'form.model.default': string;
|
|
185
|
+
'form.model.loading': string;
|
|
186
|
+
'form.model.empty': string;
|
|
187
|
+
'form.model.failed': string;
|
|
188
|
+
'form.confirm.label': string;
|
|
189
|
+
'form.confirm.hint': string;
|
|
190
|
+
'form.cancel': string;
|
|
191
|
+
'form.submitBusy': string;
|
|
192
|
+
'duration.seconds': string;
|
|
193
|
+
'duration.minutes': string;
|
|
194
|
+
'duration.hours': string;
|
|
195
|
+
'duration.days': string;
|
|
196
|
+
};
|
|
197
|
+
/** English scheduled-tasks UI messages. */
|
|
198
|
+
export declare const en: {
|
|
199
|
+
'trigger.label': string;
|
|
200
|
+
'trigger.aria': string;
|
|
201
|
+
'panel.title': string;
|
|
202
|
+
'panel.subtitle': string;
|
|
203
|
+
'panel.empty': string;
|
|
204
|
+
'panel.loading': string;
|
|
205
|
+
'panel.readFailed': string;
|
|
206
|
+
'search.placeholder': string;
|
|
207
|
+
'filter.all': string;
|
|
208
|
+
'filter.active': string;
|
|
209
|
+
'filter.paused': string;
|
|
210
|
+
'drawer.close': string;
|
|
211
|
+
'row.schedule.every': string;
|
|
212
|
+
'row.schedule.after': string;
|
|
213
|
+
'row.schedule.at': string;
|
|
214
|
+
'row.schedule.hourly': string;
|
|
215
|
+
'row.schedule.daily': string;
|
|
216
|
+
'row.schedule.weekly': string;
|
|
217
|
+
'row.schedule.monthly': string;
|
|
218
|
+
'row.next': string;
|
|
219
|
+
'row.status.active': string;
|
|
220
|
+
'row.status.paused': string;
|
|
221
|
+
'row.status.completed': string;
|
|
222
|
+
'row.state.overdue': string;
|
|
223
|
+
'row.lastError': string;
|
|
224
|
+
'action.create': string;
|
|
225
|
+
'action.pause': string;
|
|
226
|
+
'action.resume': string;
|
|
227
|
+
'action.edit': string;
|
|
228
|
+
'action.delete': string;
|
|
229
|
+
'action.markRead': string;
|
|
230
|
+
'create.title': string;
|
|
231
|
+
'create.editTitle': string;
|
|
232
|
+
'create.subtitle': string;
|
|
233
|
+
'create.submit': string;
|
|
234
|
+
'create.save': string;
|
|
235
|
+
'form.title.label': string;
|
|
236
|
+
'form.title.placeholder': string;
|
|
237
|
+
'form.prompt.label': string;
|
|
238
|
+
'form.prompt.placeholder': string;
|
|
239
|
+
'form.prompt.required': string;
|
|
240
|
+
'form.schedule.label': string;
|
|
241
|
+
'form.schedule.required': string;
|
|
242
|
+
'form.schedule.invalid': string;
|
|
243
|
+
'form.schedule.add': string;
|
|
244
|
+
'schedule.hourly': string;
|
|
245
|
+
'schedule.daily': string;
|
|
246
|
+
'schedule.weekly': string;
|
|
247
|
+
'schedule.monthly': string;
|
|
248
|
+
'schedule.custom': string;
|
|
249
|
+
'schedule.hourlyAtMinute': string;
|
|
250
|
+
'schedule.minuteUnit': string;
|
|
251
|
+
'schedule.at': string;
|
|
252
|
+
'schedule.dayUnit': string;
|
|
253
|
+
'schedule.clear': string;
|
|
254
|
+
'schedule.pickWeekdays': string;
|
|
255
|
+
'schedule.wd.1': string;
|
|
256
|
+
'schedule.wd.2': string;
|
|
257
|
+
'schedule.wd.3': string;
|
|
258
|
+
'schedule.wd.4': string;
|
|
259
|
+
'schedule.wd.5': string;
|
|
260
|
+
'schedule.wd.6': string;
|
|
261
|
+
'schedule.wd.7': string;
|
|
262
|
+
'schedule.wd.separator': string;
|
|
263
|
+
'schedule.preview.hourly': string;
|
|
264
|
+
'schedule.preview.daily': string;
|
|
265
|
+
'schedule.preview.weekly': string;
|
|
266
|
+
'schedule.preview.monthly': string;
|
|
267
|
+
'form.kind.once': string;
|
|
268
|
+
'form.kind.delay': string;
|
|
269
|
+
'form.kind.interval': string;
|
|
270
|
+
'form.date': string;
|
|
271
|
+
'form.time': string;
|
|
272
|
+
'form.timeZone': string;
|
|
273
|
+
'form.afterSeconds': string;
|
|
274
|
+
'form.everySeconds': string;
|
|
275
|
+
'form.project.label': string;
|
|
276
|
+
'form.project.none': string;
|
|
277
|
+
'form.project.loading': string;
|
|
278
|
+
'form.project.failed': string;
|
|
279
|
+
'form.model.label': string;
|
|
280
|
+
'form.model.default': string;
|
|
281
|
+
'form.model.loading': string;
|
|
282
|
+
'form.model.empty': string;
|
|
283
|
+
'form.model.failed': string;
|
|
284
|
+
'form.confirm.label': string;
|
|
285
|
+
'form.confirm.hint': string;
|
|
286
|
+
'form.cancel': string;
|
|
287
|
+
'form.submitBusy': string;
|
|
288
|
+
'duration.seconds': string;
|
|
289
|
+
'duration.minutes': string;
|
|
290
|
+
'duration.hours': string;
|
|
291
|
+
'duration.days': string;
|
|
292
|
+
};
|
|
293
|
+
export {};
|
|
294
|
+
//# sourceMappingURL=locales.d.ts.map
|