import { EdgeFunctions, RESTApi, SqlEditor } from 'icons' import { ScrollText } from 'lucide-react' const cronField = /(\*|(\d+|\*\/\d+)|\d+\/\d+|\d+-\d+|\d+(,\d+)*)/ const cronDayOfMonth = /(\*|\$|(\d+|\*\/\d+)|\d+\/\d+|\d+-\d+|\d+(,\d+)*)/ export const cronPattern = new RegExp( `^${cronField.source}\\s+${cronField.source}\\s+${cronDayOfMonth.source}\\s+${cronField.source}\\s+${cronField.source}$` ) // detect seconds like "10 seconds" or normal cron syntax like "*/5 * * * *" export const secondsPattern = /^\d+\s+seconds*$/ export const CRONJOB_TYPES = [ 'http_request', 'edge_function', 'sql_function', 'sql_snippet', ] as const export const CRONJOB_DEFINITIONS = [ { value: 'sql_snippet', icon: , label: 'SQL Snippet', description: 'Write a SQL snippet to run.', }, { value: 'sql_function', icon: , label: 'Database function', description: 'Choose a database function to run.', }, { value: 'http_request', icon: , label: 'HTTP Request', description: 'Send an HTTP request to any URL.', }, { value: 'edge_function', icon: , label: 'Briven Edge Function', description: 'Choose a Briven edge function to run.', }, ] export type HTTPHeader = { name: string; value: string } export type HTTPParameter = { name: string; value: string } type CronTableColumn = { id: string name: string width?: number minWidth?: number maxWidth?: number resizable?: boolean } export const CRON_TABLE_COLUMNS: CronTableColumn[] = [ { id: 'jobname', name: 'Name', minWidth: 160, width: 200, resizable: true }, { id: 'schedule', name: 'Schedule', width: 100, resizable: true }, { id: 'latest_run', name: 'Last run', width: 265, resizable: true }, { id: 'next_run', name: 'Next run', minWidth: 180, resizable: true }, { id: 'command', name: 'Command', minWidth: 320, resizable: true }, { id: 'active', name: 'Active', width: 70, minWidth: 70, maxWidth: 70, resizable: false }, { id: 'actions', name: '', minWidth: 75, width: 75, resizable: false }, ]