@aalis/util-cron 0.1.2 → 0.2.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/dist/index.d.ts +16 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -12
- package/dist/index.js.map +1 -1
- package/dist/locales/en.d.ts +9 -0
- package/dist/locales/en.d.ts.map +1 -0
- package/dist/locales/en.js +9 -0
- package/dist/locales/en.js.map +1 -0
- package/dist/texts.d.ts +17 -0
- package/dist/texts.d.ts.map +1 -0
- package/dist/texts.js +12 -0
- package/dist/texts.js.map +1 -0
- package/package.json +5 -5
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TextRef } from '@aalis/schema-i18n';
|
|
1
2
|
/**
|
|
2
3
|
* 把 cron 表达式标准化:
|
|
3
4
|
* - 5 字段 cron 原样返回
|
|
@@ -37,7 +38,21 @@ export declare function matchesCron(expr: string, date: Date, timeZone?: string)
|
|
|
37
38
|
* 解析 `@every 30s` / `@every 5m` / `@every 2h` 为秒数;不识别返回 0。
|
|
38
39
|
*/
|
|
39
40
|
export declare function parseEverySeconds(input: string): number;
|
|
41
|
+
/**
|
|
42
|
+
* 间隔的上限(秒):`@every` 与上层的固定间隔都交给 setInterval,延时超过 32 位有符号毫秒(2^31-1,约 24.8 天)时 Node
|
|
43
|
+
* 按 1 毫秒处理,任务变成每毫秒触发一次。取整秒,乘回毫秒不越界
|
|
44
|
+
*/
|
|
45
|
+
export declare const MAX_INTERVAL_SECONDS: number;
|
|
46
|
+
/**
|
|
47
|
+
* 校验间隔秒数(`@every` 与上层的固定间隔同一条):要是大于 0、不超过 {@link MAX_INTERVAL_SECONDS} 的数。
|
|
48
|
+
* 不通过时给原因:本包字典里的文字对象
|
|
49
|
+
*/
|
|
50
|
+
export declare function validateIntervalSeconds(seconds: unknown): TextRef | null;
|
|
40
51
|
export type CronExprKind = 'cron' | 'interval';
|
|
52
|
+
/**
|
|
53
|
+
* 校验结果。不通过时 text 是给人看的原因:字符串或文字对象(@aalis/schema-i18n),本包的实现给本包字典里的文字对象;
|
|
54
|
+
* 交给模型与写日志的取 toSource,抛给人看的字符串用 Error、文字对象用 TextError
|
|
55
|
+
*/
|
|
41
56
|
export type ValidateResult = {
|
|
42
57
|
ok: true;
|
|
43
58
|
kind: CronExprKind;
|
|
@@ -45,7 +60,7 @@ export type ValidateResult = {
|
|
|
45
60
|
intervalSeconds?: number;
|
|
46
61
|
} | {
|
|
47
62
|
ok: false;
|
|
48
|
-
|
|
63
|
+
text: string | TextRef;
|
|
49
64
|
};
|
|
50
65
|
/**
|
|
51
66
|
* 校验表达式:cron(5 字段或别名)或 interval(`@every Ns/Nm/Nh`)。
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAiBlD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ9D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CA4BnF;AAeD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,IAAI,EACV,QAAQ,CAAC,EAAE,MAAM,GAChB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAoC/E;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAYhF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAWvD;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAAmC,CAAC;AAErE;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAIxE;AAID,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,UAAU,CAAC;AAE/C;;;GAGG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9E;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAE1C;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CA0B9D"}
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
// ===== Cron
|
|
1
|
+
// ===== Cron 表达式解析与匹配(纯函数) =====
|
|
2
2
|
//
|
|
3
3
|
// POSIX 5 字段 cron + `@hourly`/`@daily`/... 别名 + `@every Ns` 间隔语法。
|
|
4
|
-
//
|
|
4
|
+
// 不 import core、不碰 node:,可在任何 JS 运行时调用;只依赖 @aalis/schema-i18n(校验不通过的原因是文字对象)。
|
|
5
5
|
//
|
|
6
6
|
// 订阅协议(CronEngine 服务契约)在 @aalis/api-cron-engine,
|
|
7
7
|
// 实现在 @aalis/plugin-cron-engine。
|
|
8
|
+
import { t } from './texts.js';
|
|
8
9
|
// 别名表用 Map 而非对象字面量:字面量 + `aliases[s]` 真值查找会命中 Object.prototype
|
|
9
10
|
// 成员('toString' / 'constructor' / '__proto__' …),把函数/对象当表达式返回,
|
|
10
11
|
// 破掉 `string | null` 契约 —— 下游 validateCronExpr/matchesCron 随即 TypeError,
|
|
@@ -145,10 +146,7 @@ export function matchesCron(expr, date, timeZone) {
|
|
|
145
146
|
const normalized = normalizeCronExpr(expr);
|
|
146
147
|
if (!normalized || normalized.startsWith('@every'))
|
|
147
148
|
return false;
|
|
148
|
-
const
|
|
149
|
-
if (parts.length !== 5)
|
|
150
|
-
return false;
|
|
151
|
-
const [minute, hour, day, month, weekday] = parts;
|
|
149
|
+
const [minute, hour, day, month, weekday] = normalized.split(/\s+/);
|
|
152
150
|
const f = dateFieldsInTimeZone(date, timeZone);
|
|
153
151
|
return (parseCronField(minute, 0, 59).has(f.minute) &&
|
|
154
152
|
parseCronField(hour, 0, 23).has(f.hour) &&
|
|
@@ -174,25 +172,39 @@ export function parseEverySeconds(input) {
|
|
|
174
172
|
return n * 60;
|
|
175
173
|
return n;
|
|
176
174
|
}
|
|
175
|
+
/**
|
|
176
|
+
* 间隔的上限(秒):`@every` 与上层的固定间隔都交给 setInterval,延时超过 32 位有符号毫秒(2^31-1,约 24.8 天)时 Node
|
|
177
|
+
* 按 1 毫秒处理,任务变成每毫秒触发一次。取整秒,乘回毫秒不越界
|
|
178
|
+
*/
|
|
179
|
+
export const MAX_INTERVAL_SECONDS = Math.floor((2 ** 31 - 1) / 1000);
|
|
180
|
+
/**
|
|
181
|
+
* 校验间隔秒数(`@every` 与上层的固定间隔同一条):要是大于 0、不超过 {@link MAX_INTERVAL_SECONDS} 的数。
|
|
182
|
+
* 不通过时给原因:本包字典里的文字对象
|
|
183
|
+
*/
|
|
184
|
+
export function validateIntervalSeconds(seconds) {
|
|
185
|
+
return typeof seconds === 'number' && seconds > 0 && seconds <= MAX_INTERVAL_SECONDS
|
|
186
|
+
? null
|
|
187
|
+
: t('interval', { value: String(seconds), max: MAX_INTERVAL_SECONDS });
|
|
188
|
+
}
|
|
177
189
|
/**
|
|
178
190
|
* 校验表达式:cron(5 字段或别名)或 interval(`@every Ns/Nm/Nh`)。
|
|
179
191
|
*/
|
|
180
192
|
export function validateCronExpr(input) {
|
|
181
193
|
const s = input.trim();
|
|
182
194
|
if (!s)
|
|
183
|
-
return { ok: false,
|
|
195
|
+
return { ok: false, text: t('empty') };
|
|
184
196
|
if (s.startsWith('@every')) {
|
|
185
197
|
const sec = parseEverySeconds(s);
|
|
186
198
|
if (sec <= 0)
|
|
187
|
-
return { ok: false,
|
|
199
|
+
return { ok: false, text: t('every', { expr: s }) };
|
|
200
|
+
if (sec > MAX_INTERVAL_SECONDS)
|
|
201
|
+
return { ok: false, text: t('interval', { value: s, max: MAX_INTERVAL_SECONDS }) };
|
|
188
202
|
return { ok: true, kind: 'interval', normalized: s, intervalSeconds: sec };
|
|
189
203
|
}
|
|
190
204
|
const normalized = normalizeCronExpr(s);
|
|
191
205
|
if (!normalized)
|
|
192
|
-
return { ok: false,
|
|
206
|
+
return { ok: false, text: t('syntax', { expr: s }) };
|
|
193
207
|
const fields = normalized.split(/\s+/);
|
|
194
|
-
if (fields.length !== 5)
|
|
195
|
-
return { ok: false, reason: `cron 必须为 5 字段: ${normalized}` };
|
|
196
208
|
// 逐字段校验:任一字段解析为空集(如 `abc`、`5-`、超界单值)即拒绝,避免静默生成永不触发的死任务。
|
|
197
209
|
const ranges = [
|
|
198
210
|
[0, 59],
|
|
@@ -203,7 +215,7 @@ export function validateCronExpr(input) {
|
|
|
203
215
|
];
|
|
204
216
|
for (let i = 0; i < 5; i++) {
|
|
205
217
|
if (parseCronField(fields[i], ranges[i][0], ranges[i][1]).size === 0) {
|
|
206
|
-
return { ok: false,
|
|
218
|
+
return { ok: false, text: t('field', { field: i + 1, value: fields[i] }) };
|
|
207
219
|
}
|
|
208
220
|
}
|
|
209
221
|
return { ok: true, kind: 'cron', normalized };
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
readonly empty: "The expression is empty";
|
|
3
|
+
readonly every: "Unrecognized @every expression: {expr}";
|
|
4
|
+
readonly interval: "The interval must be greater than 0 and at most {max, number} seconds (about 24.8 days): {value}";
|
|
5
|
+
readonly syntax: "Invalid cron expression (needs 5 fields or an alias): {expr}";
|
|
6
|
+
readonly field: "Cron field {field, number} is invalid (parses to nothing): “{value}”";
|
|
7
|
+
};
|
|
8
|
+
export default _default;
|
|
9
|
+
//# sourceMappingURL=en.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/locales/en.ts"],"names":[],"mappings":";;;;;;;AAGA,wBAMG"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { defineLocale } from '@aalis/schema-i18n';
|
|
2
|
+
export default defineLocale()({
|
|
3
|
+
empty: 'The expression is empty',
|
|
4
|
+
every: 'Unrecognized @every expression: {expr}',
|
|
5
|
+
interval: 'The interval must be greater than 0 and at most {max, number} seconds (about 24.8 days): {value}',
|
|
6
|
+
syntax: 'Invalid cron expression (needs 5 fields or an alias): {expr}',
|
|
7
|
+
field: 'Cron field {field, number} is invalid (parses to nothing): “{value}”',
|
|
8
|
+
});
|
|
9
|
+
//# sourceMappingURL=en.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/locales/en.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,eAAe,YAAY,EAAU,CAAC;IACpC,KAAK,EAAE,yBAAyB;IAChC,KAAK,EAAE,wCAAwC;IAC/C,QAAQ,EAAE,kGAAkG;IAC5G,MAAM,EAAE,8DAA8D;IACtE,KAAK,EAAE,sEAAsE;CAC9E,CAAC,CAAC"}
|
package/dist/texts.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
declare const SOURCE: {
|
|
2
|
+
readonly empty: "表达式为空";
|
|
3
|
+
readonly every: "无法识别的 @every 表达式:{expr}";
|
|
4
|
+
readonly interval: "间隔须大于 0 且不超过 {max, number} 秒(约 24.8 天):{value}";
|
|
5
|
+
readonly syntax: "非法 cron 表达式(需 5 字段或别名):{expr}";
|
|
6
|
+
readonly field: "cron 第 {field, number} 字段非法(解析为空):\"{value}\"";
|
|
7
|
+
};
|
|
8
|
+
export type Source = typeof SOURCE;
|
|
9
|
+
export declare const t: import("@aalis/schema-i18n").TextFactory<{
|
|
10
|
+
readonly empty: "表达式为空";
|
|
11
|
+
readonly every: "无法识别的 @every 表达式:{expr}";
|
|
12
|
+
readonly interval: "间隔须大于 0 且不超过 {max, number} 秒(约 24.8 天):{value}";
|
|
13
|
+
readonly syntax: "非法 cron 表达式(需 5 字段或别名):{expr}";
|
|
14
|
+
readonly field: "cron 第 {field, number} 字段非法(解析为空):\"{value}\"";
|
|
15
|
+
}>;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=texts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texts.d.ts","sourceRoot":"","sources":["../src/texts.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,MAAM;;;;;;CAMF,CAAC;AACX,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC;AAEnC,eAAO,MAAM,CAAC;;;;;;EAA8F,CAAC"}
|
package/dist/texts.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// 本包自己的原文字典:表达式与间隔校验不通过的原因
|
|
2
|
+
import { defineTexts } from '@aalis/schema-i18n';
|
|
3
|
+
import en from './locales/en.js';
|
|
4
|
+
const SOURCE = {
|
|
5
|
+
empty: '表达式为空',
|
|
6
|
+
every: '无法识别的 @every 表达式:{expr}',
|
|
7
|
+
interval: '间隔须大于 0 且不超过 {max, number} 秒(约 24.8 天):{value}',
|
|
8
|
+
syntax: '非法 cron 表达式(需 5 字段或别名):{expr}',
|
|
9
|
+
field: 'cron 第 {field, number} 字段非法(解析为空):"{value}"',
|
|
10
|
+
};
|
|
11
|
+
export const t = defineTexts({ ns: '@aalis/util-cron', language: 'zh-CN', source: SOURCE, locales: { en } });
|
|
12
|
+
//# sourceMappingURL=texts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texts.js","sourceRoot":"","sources":["../src/texts.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEjC,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,yBAAyB;IAChC,QAAQ,EAAE,gDAAgD;IAC1D,MAAM,EAAE,+BAA+B;IACvC,KAAK,EAAE,6CAA6C;CAC5C,CAAC;AAGX,MAAM,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aalis/util-cron",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -18,6 +18,9 @@
|
|
|
18
18
|
"files": [
|
|
19
19
|
"dist"
|
|
20
20
|
],
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"@aalis/schema-i18n": ">=0.1.0 <1.0.0"
|
|
23
|
+
},
|
|
21
24
|
"devDependencies": {
|
|
22
25
|
"typescript": "^5.7.0"
|
|
23
26
|
},
|
|
@@ -25,10 +28,7 @@
|
|
|
25
28
|
"aalis",
|
|
26
29
|
"aalis-util"
|
|
27
30
|
],
|
|
28
|
-
"
|
|
29
|
-
"util": true
|
|
30
|
-
},
|
|
31
|
-
"description": "Cron 表达式解析与匹配(POSIX 5 字段 + @别名 + @every 间隔),零依赖纯函数",
|
|
31
|
+
"description": "Cron 表达式解析与匹配(POSIX 5 字段 + @别名 + @every 间隔),纯函数",
|
|
32
32
|
"scripts": {
|
|
33
33
|
"build": "tsc",
|
|
34
34
|
"dev": "tsc --watch"
|