mirror of
https://github.com/whyour/qinglong.git
synced 2026-02-12 14:05:38 +08:00
Update plan - Fix frontend imports for cron-parser
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
This commit is contained in:
parent
bcf1cffb88
commit
8de5bff700
38
test-built-validation.cjs
Normal file
38
test-built-validation.cjs
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
// 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);
|
||||||
|
}
|
||||||
|
});
|
||||||
23
test-cron.mjs
Normal file
23
test-cron.mjs
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
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}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
22
test-cron2.mjs
Normal file
22
test-cron2.mjs
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
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}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
6
test-cron3.mjs
Normal file
6
test-cron3.mjs
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
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));
|
||||||
20
test-cron4.mjs
Normal file
20
test-cron4.mjs
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
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}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
8
test-import.cjs
Normal file
8
test-import.cjs
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
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);
|
||||||
23
test-import2.cjs
Normal file
23
test-import2.cjs
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
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}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
32
test-validation.cjs
Normal file
32
test-validation.cjs
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
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}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
32
test-validation.mjs
Normal file
32
test-validation.mjs
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
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