mirror of
https://github.com/whyour/qinglong.git
synced 2026-02-12 14:05:38 +08:00
Fix frontend cron-parser imports to use named export
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
This commit is contained in:
parent
8de5bff700
commit
7d6dd3d42d
4
.gitignore
vendored
4
.gitignore
vendored
|
|
@ -28,3 +28,7 @@ __pycache__
|
|||
/shell/preload/notify.*
|
||||
/shell/preload/*-notify.json
|
||||
/shell/preload/__ql_notify__.*
|
||||
|
||||
# Test files
|
||||
test-*.cjs
|
||||
test-*.mjs
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import config from '@/utils/config';
|
|||
import { request } from '@/utils/http';
|
||||
import { MinusCircleOutlined, PlusOutlined } from '@ant-design/icons';
|
||||
import { Button, Form, Input, Modal, Select, Space, message } from 'antd';
|
||||
import CronExpressionParser from 'cron-parser';
|
||||
import { CronExpressionParser } from 'cron-parser';
|
||||
import { useEffect, useState } from 'react';
|
||||
import intl from 'react-intl-universal';
|
||||
import { getScheduleType, scheduleTypeMap } from './const';
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import {
|
|||
} from 'antd';
|
||||
import { request } from '@/utils/http';
|
||||
import config from '@/utils/config';
|
||||
import CronExpressionParser from 'cron-parser';
|
||||
import { CronExpressionParser } from 'cron-parser';
|
||||
import isNil from 'lodash/isNil';
|
||||
|
||||
const { Option } = Select;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import intl from 'react-intl-universal';
|
||||
import { LANG_MAP, LOG_END_SYMBOL } from './const';
|
||||
import CronExpressionParser from 'cron-parser';
|
||||
import { CronExpressionParser } from 'cron-parser';
|
||||
import { ICrontab } from '@/pages/crontab/type';
|
||||
|
||||
export default function browserType() {
|
||||
|
|
|
|||
|
|
@ -1,38 +0,0 @@
|
|||
// Simulating the built code
|
||||
const cron_parser_1 = require("cron-parser");
|
||||
|
||||
const validateSchedule = (value, helpers) => {
|
||||
const mockHelpers = {
|
||||
error: (msg) => ({ error: msg })
|
||||
};
|
||||
helpers = helpers || mockHelpers;
|
||||
|
||||
try {
|
||||
if (cron_parser_1.default.parse(value).hasNext()) {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
return helpers.error('any.invalid');
|
||||
}
|
||||
return helpers.error('any.invalid');
|
||||
};
|
||||
|
||||
// Test cases
|
||||
const testExpressions = [
|
||||
'*/8 * * * *', // 5 fields (every 8 minutes)
|
||||
'*/8 * * * * ?', // 6 fields with seconds (every 8 seconds) - FROM THE IMAGE
|
||||
'0 */8 * * * *', // 6 fields with seconds (every 8 minutes at 0 seconds)
|
||||
'*/5 * * * * *', // 6 fields (every 5 seconds)
|
||||
];
|
||||
|
||||
console.log('Testing built validation logic:\n');
|
||||
|
||||
testExpressions.forEach(expr => {
|
||||
const result = validateSchedule(expr);
|
||||
if (result === expr) {
|
||||
console.log(`✓ "${expr}" - VALID`);
|
||||
} else {
|
||||
console.log(`✗ "${expr}" - INVALID:`, result);
|
||||
}
|
||||
});
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
import * as parser from 'cron-parser';
|
||||
|
||||
console.log('Available exports:', Object.keys(parser));
|
||||
console.log('Default export:', parser.default);
|
||||
|
||||
// Try with the named export
|
||||
const testExpressions = [
|
||||
'*/8 * * * *', // 5 fields (every 8 minutes)
|
||||
'*/8 * * * * ?', // 6 fields with seconds (every 8 seconds)
|
||||
'0 */8 * * * *', // 6 fields with seconds (every 8 minutes at 0 seconds)
|
||||
'*/5 * * * * *', // 6 fields (every 5 seconds)
|
||||
];
|
||||
|
||||
console.log('\nTesting cron-parser with various expressions:\n');
|
||||
|
||||
testExpressions.forEach(expr => {
|
||||
try {
|
||||
const parsed = parser.CronExpressionParser.parse(expr);
|
||||
console.log(`✓ "${expr}" - VALID, hasNext: ${parsed.hasNext()}`);
|
||||
} catch (e) {
|
||||
console.log(`✗ "${expr}" - INVALID: ${e.message}`);
|
||||
}
|
||||
});
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
import CronExpressionParser from 'cron-parser';
|
||||
|
||||
// Test cases - same as the image shows
|
||||
const testExpressions = [
|
||||
'*/8 * * * *', // 5 fields (every 8 minutes)
|
||||
'*/8 * * * * ?', // 6 fields with seconds (every 8 seconds) - FROM THE IMAGE
|
||||
];
|
||||
|
||||
console.log('Testing with default import (like the validation code):\n');
|
||||
|
||||
testExpressions.forEach(expr => {
|
||||
try {
|
||||
const parsed = CronExpressionParser.parse(expr);
|
||||
if (parsed.hasNext()) {
|
||||
console.log(`✓ "${expr}" - VALID, hasNext: true`);
|
||||
} else {
|
||||
console.log(`? "${expr}" - parsed but hasNext is false`);
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(`✗ "${expr}" - INVALID: ${e.message}`);
|
||||
}
|
||||
});
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
import CronExpressionParser from 'cron-parser';
|
||||
|
||||
console.log('Default import type:', typeof CronExpressionParser);
|
||||
console.log('Default import:', CronExpressionParser);
|
||||
console.log('Is it a class?', CronExpressionParser.prototype);
|
||||
console.log('Available static methods:', Object.getOwnPropertyNames(CronExpressionParser));
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
import CronExpressionParser from 'cron-parser';
|
||||
|
||||
// Test both ways
|
||||
const testExpressions = [
|
||||
'*/8 * * * *', // 5 fields (every 8 minutes)
|
||||
'*/8 * * * * ?', // 6 fields with seconds (every 8 seconds)
|
||||
];
|
||||
|
||||
console.log('Testing CronExpressionParser.CronExpressionParser.parse:\n');
|
||||
|
||||
testExpressions.forEach(expr => {
|
||||
try {
|
||||
const parsed = CronExpressionParser.CronExpressionParser.parse(expr);
|
||||
if (parsed.hasNext()) {
|
||||
console.log(`✓ "${expr}" - VALID`);
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(`✗ "${expr}" - INVALID: ${e.message}`);
|
||||
}
|
||||
});
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
const cronParser = require('cron-parser');
|
||||
|
||||
console.log('Type:', typeof cronParser);
|
||||
console.log('Keys:', Object.keys(cronParser));
|
||||
console.log('\nCronExpressionParser:', cronParser.CronExpressionParser);
|
||||
console.log('Default:', cronParser.default);
|
||||
console.log('\nIs parse a method on default?', typeof cronParser.default?.parse);
|
||||
console.log('Is parse a method on CronExpressionParser?', typeof cronParser.CronExpressionParser?.parse);
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
const cronParser = require('cron-parser');
|
||||
const CronExpressionParser = cronParser.default || cronParser; // Simulating esModuleInterop
|
||||
|
||||
// Test cases
|
||||
const testExpressions = [
|
||||
'*/8 * * * *', // 5 fields (every 8 minutes)
|
||||
'*/8 * * * * ?', // 6 fields with seconds (every 8 seconds)
|
||||
'0 */8 * * * *', // 6 fields with seconds (every 8 minutes at 0 seconds)
|
||||
'*/5 * * * * *', // 6 fields (every 5 seconds)
|
||||
];
|
||||
|
||||
console.log('Testing with .default:\n');
|
||||
|
||||
testExpressions.forEach(expr => {
|
||||
try {
|
||||
const parsed = CronExpressionParser.parse(expr);
|
||||
if (parsed.hasNext()) {
|
||||
console.log(`✓ "${expr}" - VALID`);
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(`✗ "${expr}" - INVALID: ${e.message}`);
|
||||
}
|
||||
});
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
const CronExpressionParser = require('cron-parser');
|
||||
|
||||
// Replicate the validation logic
|
||||
const validateSchedule = (value) => {
|
||||
try {
|
||||
if (CronExpressionParser.parse(value).hasNext()) {
|
||||
return { valid: true };
|
||||
}
|
||||
} catch (e) {
|
||||
return { valid: false, error: e.message };
|
||||
}
|
||||
return { valid: false, error: 'hasNext() returned false' };
|
||||
};
|
||||
|
||||
// Test cases from the issue
|
||||
const testExpressions = [
|
||||
'*/8 * * * *', // 5 fields (every 8 minutes)
|
||||
'*/8 * * * * ?', // 6 fields with seconds (every 8 seconds) - FROM THE IMAGE
|
||||
'0 */8 * * * *', // 6 fields with seconds (every 8 minutes at 0 seconds)
|
||||
'*/5 * * * * *', // 6 fields (every 5 seconds)
|
||||
];
|
||||
|
||||
console.log('Testing validation logic with CommonJS:\n');
|
||||
|
||||
testExpressions.forEach(expr => {
|
||||
const result = validateSchedule(expr);
|
||||
if (result.valid) {
|
||||
console.log(`✓ "${expr}" - VALID`);
|
||||
} else {
|
||||
console.log(`✗ "${expr}" - INVALID: ${result.error}`);
|
||||
}
|
||||
});
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
import CronExpressionParser from 'cron-parser';
|
||||
|
||||
// Replicate the validation logic
|
||||
const validateSchedule = (value) => {
|
||||
try {
|
||||
if (CronExpressionParser.parse(value).hasNext()) {
|
||||
return { valid: true };
|
||||
}
|
||||
} catch (e) {
|
||||
return { valid: false, error: e.message };
|
||||
}
|
||||
return { valid: false, error: 'hasNext() returned false' };
|
||||
};
|
||||
|
||||
// Test cases from the issue
|
||||
const testExpressions = [
|
||||
'*/8 * * * *', // 5 fields (every 8 minutes)
|
||||
'*/8 * * * * ?', // 6 fields with seconds (every 8 seconds) - FROM THE IMAGE
|
||||
'0 */8 * * * *', // 6 fields with seconds (every 8 minutes at 0 seconds)
|
||||
'*/5 * * * * *', // 6 fields (every 5 seconds)
|
||||
];
|
||||
|
||||
console.log('Testing validation logic:\n');
|
||||
|
||||
testExpressions.forEach(expr => {
|
||||
const result = validateSchedule(expr);
|
||||
if (result.valid) {
|
||||
console.log(`✓ "${expr}" - VALID`);
|
||||
} else {
|
||||
console.log(`✗ "${expr}" - INVALID: ${result.error}`);
|
||||
}
|
||||
});
|
||||
Loading…
Reference in New Issue
Block a user