UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

63 lines 8.38 kB
import { Pipe, isDevMode } from '@angular/core'; import parser from 'cron-parser'; import dayjs from 'dayjs'; import { TimeService } from '../services/time.service'; import { isErrorMessage } from '../types/helpers'; import { isCronWeekDayCorrect, isCronFieldCountCorrect, } from '../utils/cron-util'; import * as i0 from "@angular/core"; import * as i1 from "../services/time.service"; export class CrontabNextPipe { constructor(time) { this.time = time; } transform(rule, step = 1, { utc, showUtc = true, format, tz = this.time.currTz, formatTz = this.time.currTz, showLocalTz = true, parseInCurrentTz = false, } = {}) { let dateString = 'N/A'; if (!rule || !isCronFieldCountCorrect(rule) || !isCronWeekDayCorrect(rule)) { return dateString; } try { // 后端解析 crontab 表达式一定是 UTC 时间 // const interval = parser.parseExpression(rule, { utc: false, tz }); // underlord 的网络检测目前后端未按 UTC 时间解析,增加对本地时区的处理 // 预计 3.13 去除对网络检测的兼容 // Usage: apps\underlord\src\app\manage-platform\features\network-manage\trace const interval = parser.parseExpression(rule, { utc: !parseInCurrentTz, tz, }); let timestamp; for (let i = 0; i < step; i++) { timestamp = interval.next().getTime(); } const nextDate = dayjs.utc(timestamp); const tzDisplay = utc ? showUtc ? ` (UTC)` : '' : showLocalTz ? ` (${tz})` : ''; dateString = this.time.format(utc ? nextDate : nextDate.tz(formatTz), format) + tzDisplay; } catch (err) { if (isDevMode() && isErrorMessage(err) && !/invalid/i.test(err.message)) { console.error(err); } } return dateString; } static { this.ɵfac = function CrontabNextPipe_Factory(t) { return new (t || CrontabNextPipe)(i0.ɵɵdirectiveInject(i1.TimeService, 16)); }; } static { this.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "aclCrontabNext", type: CrontabNextPipe, pure: true, standalone: true }); } } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CrontabNextPipe, [{ type: Pipe, args: [{ standalone: true, name: 'aclCrontabNext', }] }], () => [{ type: i1.TimeService }], null); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JvbnRhYi1uZXh0LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvY29yZS9waXBlcy9jcm9udGFiLW5leHQucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsdUJBQXVCLEdBQ3hCLE1BQU0sb0JBQW9CLENBQUM7OztBQU01QixNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUE2QixJQUFpQjtRQUFqQixTQUFJLEdBQUosSUFBSSxDQUFhO0lBQUcsQ0FBQztJQUVsRCxTQUFTLENBQ1AsSUFBWSxFQUNaLElBQUksR0FBRyxDQUFDLEVBQ1IsRUFDRSxHQUFHLEVBQ0gsT0FBTyxHQUFHLElBQUksRUFDZCxNQUFNLEVBQ04sRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUNyQixRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQzNCLFdBQVcsR0FBRyxJQUFJLEVBQ2xCLGdCQUFnQixHQUFHLEtBQUssTUFTdEIsRUFBRTtRQUVOLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUNFLENBQUMsSUFBSTtZQUNMLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDO1lBQzlCLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQzNCLENBQUM7WUFDRCxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDO1FBQ0QsSUFBSSxDQUFDO1lBQ0gsNkJBQTZCO1lBQzdCLHFFQUFxRTtZQUVyRSw0Q0FBNEM7WUFDNUMscUJBQXFCO1lBQ3JCLDhFQUE4RTtZQUM5RSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRTtnQkFDNUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCO2dCQUN0QixFQUFFO2FBQ0gsQ0FBQyxDQUFDO1lBRUgsSUFBSSxTQUFpQixDQUFDO1lBQ3RCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDOUIsU0FBUyxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN4QyxDQUFDO1lBQ0QsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUV0QyxNQUFNLFNBQVMsR0FBRyxHQUFHO2dCQUNuQixDQUFDLENBQUMsT0FBTztvQkFDUCxDQUFDLENBQUMsUUFBUTtvQkFDVixDQUFDLENBQUMsRUFBRTtnQkFDTixDQUFDLENBQUMsV0FBVztvQkFDWCxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUc7b0JBQ1osQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNULFVBQVU7Z0JBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDO29CQUNoRSxTQUFTLENBQUM7UUFDZCxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLElBQUksU0FBUyxFQUFFLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDeEUsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNyQixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7Z0ZBbEVVLGVBQWU7d0ZBQWYsZUFBZTs7aUZBQWYsZUFBZTtjQUozQixJQUFJO2VBQUM7Z0JBQ0osVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLElBQUksRUFBRSxnQkFBZ0I7YUFDdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtLCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBwYXJzZXIgZnJvbSAnY3Jvbi1wYXJzZXInO1xuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcblxuaW1wb3J0IHsgVGltZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90aW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgaXNFcnJvck1lc3NhZ2UgfSBmcm9tICcuLi90eXBlcy9oZWxwZXJzJztcbmltcG9ydCB7XG4gIGlzQ3JvbldlZWtEYXlDb3JyZWN0LFxuICBpc0Nyb25GaWVsZENvdW50Q29ycmVjdCxcbn0gZnJvbSAnLi4vdXRpbHMvY3Jvbi11dGlsJztcblxuQFBpcGUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBuYW1lOiAnYWNsQ3JvbnRhYk5leHQnLFxufSlcbmV4cG9ydCBjbGFzcyBDcm9udGFiTmV4dFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB0aW1lOiBUaW1lU2VydmljZSkge31cblxuICB0cmFuc2Zvcm0oXG4gICAgcnVsZTogc3RyaW5nLFxuICAgIHN0ZXAgPSAxLFxuICAgIHtcbiAgICAgIHV0YyxcbiAgICAgIHNob3dVdGMgPSB0cnVlLFxuICAgICAgZm9ybWF0LFxuICAgICAgdHogPSB0aGlzLnRpbWUuY3VyclR6LFxuICAgICAgZm9ybWF0VHogPSB0aGlzLnRpbWUuY3VyclR6LFxuICAgICAgc2hvd0xvY2FsVHogPSB0cnVlLFxuICAgICAgcGFyc2VJbkN1cnJlbnRUeiA9IGZhbHNlLFxuICAgIH06IHtcbiAgICAgIHV0Yz86IGJvb2xlYW47XG4gICAgICBzaG93VXRjPzogYm9vbGVhbjtcbiAgICAgIGZvcm1hdD86IHN0cmluZztcbiAgICAgIHR6Pzogc3RyaW5nO1xuICAgICAgZm9ybWF0VHo/OiBzdHJpbmc7XG4gICAgICBzaG93TG9jYWxUej86IGJvb2xlYW47XG4gICAgICBwYXJzZUluQ3VycmVudFR6PzogYm9vbGVhbjtcbiAgICB9ID0ge30sXG4gICkge1xuICAgIGxldCBkYXRlU3RyaW5nID0gJ04vQSc7XG4gICAgaWYgKFxuICAgICAgIXJ1bGUgfHxcbiAgICAgICFpc0Nyb25GaWVsZENvdW50Q29ycmVjdChydWxlKSB8fFxuICAgICAgIWlzQ3JvbldlZWtEYXlDb3JyZWN0KHJ1bGUpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZGF0ZVN0cmluZztcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIC8vIOWQjuerr+ino+aekCBjcm9udGFiIOihqOi+vuW8j+S4gOWumuaYryBVVEMg5pe26Ze0XG4gICAgICAvLyBjb25zdCBpbnRlcnZhbCA9IHBhcnNlci5wYXJzZUV4cHJlc3Npb24ocnVsZSwgeyB1dGM6IGZhbHNlLCB0eiB9KTtcblxuICAgICAgLy8gdW5kZXJsb3JkIOeahOe9kee7nOajgOa1i+ebruWJjeWQjuerr+acquaMiSBVVEMg5pe26Ze06Kej5p6Q77yM5aKe5Yqg5a+55pys5Zyw5pe25Yy655qE5aSE55CGXG4gICAgICAvLyDpooTorqEgMy4xMyDljrvpmaTlr7nnvZHnu5zmo4DmtYvnmoTlhbzlrrlcbiAgICAgIC8vIFVzYWdlOiBhcHBzXFx1bmRlcmxvcmRcXHNyY1xcYXBwXFxtYW5hZ2UtcGxhdGZvcm1cXGZlYXR1cmVzXFxuZXR3b3JrLW1hbmFnZVxcdHJhY2VcbiAgICAgIGNvbnN0IGludGVydmFsID0gcGFyc2VyLnBhcnNlRXhwcmVzc2lvbihydWxlLCB7XG4gICAgICAgIHV0YzogIXBhcnNlSW5DdXJyZW50VHosXG4gICAgICAgIHR6LFxuICAgICAgfSk7XG5cbiAgICAgIGxldCB0aW1lc3RhbXA6IG51bWJlcjtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RlcDsgaSsrKSB7XG4gICAgICAgIHRpbWVzdGFtcCA9IGludGVydmFsLm5leHQoKS5nZXRUaW1lKCk7XG4gICAgICB9XG4gICAgICBjb25zdCBuZXh0RGF0ZSA9IGRheWpzLnV0Yyh0aW1lc3RhbXApO1xuXG4gICAgICBjb25zdCB0ekRpc3BsYXkgPSB1dGNcbiAgICAgICAgPyBzaG93VXRjXG4gICAgICAgICAgPyBgIChVVEMpYFxuICAgICAgICAgIDogJydcbiAgICAgICAgOiBzaG93TG9jYWxUelxuICAgICAgICAgID8gYCAoJHt0en0pYFxuICAgICAgICAgIDogJyc7XG4gICAgICBkYXRlU3RyaW5nID1cbiAgICAgICAgdGhpcy50aW1lLmZvcm1hdCh1dGMgPyBuZXh0RGF0ZSA6IG5leHREYXRlLnR6KGZvcm1hdFR6KSwgZm9ybWF0KSArXG4gICAgICAgIHR6RGlzcGxheTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChpc0Rldk1vZGUoKSAmJiBpc0Vycm9yTWVzc2FnZShlcnIpICYmICEvaW52YWxpZC9pLnRlc3QoZXJyLm1lc3NhZ2UpKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGVTdHJpbmc7XG4gIH1cbn1cbiJdfQ==