{"version":3,"file":"utils.cjs","sources":["../../../../src/configuration/shared/utils.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport type { JSX } from 'react';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { Trans } from '@grafana/i18n';\nimport { FieldValidationMessage, TextLink } from '@grafana/ui';\n\n/**\n * Use this to return a url in a tooltip in a field. Don't forget to make the field interactive to be able to click on the tooltip\n * @param url\n * @returns\n */\nexport function docsTip(url?: string) {\n  const docsUrl = 'https://grafana.com/docs/grafana/latest/datasources/prometheus/configure/';\n\n  return (\n    <TextLink href={url ? url : docsUrl} external>\n      <Trans i18nKey=\"grafana-prometheus.configuration.docs-tip.visit-docs-for-more-details-here\">\n        Visit docs for more details here.\n      </Trans>\n    </TextLink>\n  );\n}\n\nexport const validateInput = (\n  input: string,\n  pattern: string | RegExp,\n  errorMessage?: string\n): boolean | JSX.Element => {\n  const defaultErrorMessage = 'Value is not valid';\n  const inputTooLongErrorMessage = 'Input is too long';\n  const validationTimeoutErrorMessage = 'Validation timeout - input too complex';\n  const invalidValidationPatternErrorMessage = 'Invalid validation pattern';\n  const MAX_INPUT_LENGTH = 1000; // Reasonable limit for most validation cases\n\n  // Early return if no input\n  if (!input) {\n    return true;\n  }\n\n  // Check input length\n  if (input.length > MAX_INPUT_LENGTH) {\n    return <FieldValidationMessage>{inputTooLongErrorMessage}</FieldValidationMessage>;\n  }\n\n  try {\n    // Convert string pattern to RegExp if needed\n    let regex = typeof pattern === 'string' ? new RegExp(pattern) : pattern;\n\n    // Ensure pattern is properly anchored to prevent catastrophic backtracking\n    if (typeof pattern === 'string' && !pattern.startsWith('^') && !pattern.endsWith('$')) {\n      regex = new RegExp(`^${pattern}$`);\n    }\n\n    // Add timeout to prevent ReDoS\n    const timeout = 100; // 100ms timeout\n    const startTime = Date.now();\n\n    const isValid = regex.test(input);\n\n    // Check if execution took too long\n    if (Date.now() - startTime > timeout) {\n      return <FieldValidationMessage>{validationTimeoutErrorMessage}</FieldValidationMessage>;\n    }\n\n    if (!isValid) {\n      return <FieldValidationMessage>{errorMessage || defaultErrorMessage}</FieldValidationMessage>;\n    }\n\n    return true;\n  } catch (error) {\n    return <FieldValidationMessage>{invalidValidationPatternErrorMessage}</FieldValidationMessage>;\n  }\n};\n\nexport function overhaulStyles(theme: GrafanaTheme2) {\n  return {\n    additionalSettings: css({\n      marginBottom: '25px',\n    }),\n    secondaryGrey: css({\n      color: theme.colors.secondary.text,\n      opacity: '65%',\n    }),\n    inlineError: css({\n      margin: '0px 0px 4px 245px',\n    }),\n    switchField: css({\n      alignItems: 'center',\n    }),\n    sectionHeaderPadding: css({\n      paddingTop: '32px',\n    }),\n    sectionBottomPadding: css({\n      paddingBottom: '28px',\n    }),\n    subsectionText: css({\n      fontSize: '12px',\n    }),\n    hrBottomSpace: css({\n      marginBottom: '56px',\n    }),\n    hrTopSpace: css({\n      marginTop: '50px',\n    }),\n    textUnderline: css({\n      textDecoration: 'underline',\n    }),\n    versionMargin: css({\n      marginBottom: '12px',\n    }),\n    advancedHTTPSettingsMargin: css({\n      margin: '24px 0 8px 0',\n    }),\n    advancedSettings: css({\n      paddingTop: '32px',\n    }),\n    alertingTop: css({\n      marginTop: '40px !important',\n    }),\n    overhaulPageHeading: css({\n      fontWeight: 400,\n    }),\n    container: css({\n      maxwidth: 578,\n    }),\n  };\n}\n"],"names":["jsx","TextLink","Trans","FieldValidationMessage","css"],"mappings":"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"}