{"version":3,"file":"index.cjs","sources":["../../src/components/QueryEditor/QueryEditorRow.tsx","../../src/hooks/useDebounce.ts","../../src/components/DebounceInput/DebounceInput.tsx","../../src/components/Segment/Segment.tsx","../../src/components/DatePicker/styles.ts","../../src/components/DatePicker/DatePicker.tsx","../../src/components/DatePickerWithInput/styles.ts","../../src/components/DatePickerWithInput/DatePickerWithInput.tsx","../../src/components/Plugins/PluginSignatureBadge.tsx","../../src/components/DataSourcePicker/DataSourcePicker.tsx","../../src/components/DataLinks/DataLink.tsx","../../src/components/DataLinks/DataLinks.tsx","../../src/components/QueryEditor/expressions.ts","../../src/components/SQLEditor/utils/tokenType.ts","../../src/components/SQLEditor/utils/LinkedToken.ts","../../src/components/SQLEditor/types.ts","../../src/components/SQLEditor/standardSql/getStatementPosition.ts","../../src/components/SQLEditor/utils/toCompletionItem.ts","../../src/components/SQLEditor/standardSql/getStandardSuggestions.ts","../../src/components/SQLEditor/standardSql/suggestionsKindRegistry.ts","../../src/components/SQLEditor/utils/getSuggestionKind.ts","../../src/components/SQLEditor/utils/linkedTokenBuilder.ts","../../src/components/SQLEditor/standardSql/language.ts","../../src/components/SQLEditor/utils/tokenUtils.ts","../../src/components/SQLEditor/utils/commands.ts","../../src/components/SQLEditor/standardSql/standardSuggestionsRegistry.ts","../../src/components/SQLEditor/standardSql/statementPositionResolversRegistry.ts","../../src/components/SQLEditor/utils/debugger.ts","../../src/components/SQLEditor/standardSql/macros.ts","../../src/components/SQLEditor/standardSql/standardSQLCompletionItemProvider.ts","../../src/components/SQLEditor/standardSql/definition.ts","../../src/components/SQLEditor/hooks/useLatestCallback.ts","../../src/components/SQLEditor/components/SQLEditor.tsx","../../src/components/SQLEditor/mocks/queries/singleLineFullQuery.ts","../../src/components/SQLEditor/mocks/queries/singleLineFullQueryWithAggregation.ts","../../src/components/SQLEditor/mocks/queries/multiLineFullQuery.ts","../../src/components/SQLEditor/mocks/queries/multiLineFullQueryWithAggregation.ts","../../src/components/SQLEditor/mocks/queries/singleLineEmptyQuery.ts","../../src/components/SQLEditor/mocks/queries/singleLineTwoQueries.ts","../../src/components/SQLEditor/mocks/queries/singleLineTwoQueriesWithAggregation.ts","../../src/components/SQLEditor/mocks/queries/singleLineMultipleColumns.ts","../../src/components/SQLEditor/mocks/queries/multiLineMultipleColumns.ts","../../src/components/SQLEditor/mocks/Monaco.ts","../../src/components/SQLEditor/mocks/TextModel.ts","../../src/components/SQLEditor/test-utils/statementPosition.ts","../../src/components/SQLEditor/test-utils/index.ts","../../src/components/QueryEditor/types.ts","../../src/components/QueryEditor/utils/sql.utils.ts","../../src/components/QueryEditor/EditorStack.tsx","../../src/components/QueryEditor/EditorList.tsx","../../src/components/QueryEditor/AccessoryButton.tsx","../../src/components/QueryEditor/InputGroup.tsx","../../src/components/QueryEditor/visual-query-builder/GroupByRow.tsx","../../src/components/QueryEditor/EditorFieldGroup.tsx","../../src/components/QueryEditor/EditorHeader.tsx","../../src/components/QueryEditor/EditorField.tsx","../../src/components/QueryEditor/EditorRow.tsx","../../src/components/QueryEditor/EditorRows.tsx","../../src/components/QueryEditor/EditorSwitch.tsx","../../src/components/QueryEditor/FlexItem.tsx","../../src/components/QueryEditor/InlineSelect.tsx","../../src/components/QueryEditor/Space.tsx","../../src/components/QueryEditor/defaults.ts","../../src/components/QueryEditor/ConfirmModal.tsx","../../src/components/QueryEditor/DatasetSelector.tsx","../../src/components/QueryEditor/CatalogSelector.tsx","../../src/components/QueryEditor/TableSelector.tsx","../../src/components/QueryEditor/RunQueryButton.tsx","../../src/components/QueryEditor/QueryHeader.tsx","../../src/components/QueryEditor/utils/formatSQL.ts","../../src/components/QueryEditor/query-editor-raw/QueryEditorRaw.tsx","../../src/components/QueryEditor/query-editor-raw/QueryValidator.tsx","../../src/components/QueryEditor/query-editor-raw/QueryToolbox.tsx","../../src/components/QueryEditor/query-editor-raw/RawEditor.tsx","../../src/components/QueryEditor/visual-query-builder/Preview.tsx","../../src/components/QueryEditor/utils/useSqlChange.ts","../../src/components/QueryEditor/visual-query-builder/SQLGroupByRow.tsx","../../src/components/QueryEditor/visual-query-builder/OrderByRow.tsx","../../src/components/QueryEditor/visual-query-builder/SQLOrderByRow.tsx","../../src/components/QueryEditor/visual-query-builder/SelectRow.tsx","../../src/components/QueryEditor/visual-query-builder/SQLSelectRow.tsx","../../node_modules/immutable/dist/immutable.es.js","../../src/components/QueryEditor/visual-query-builder/AwesomeQueryBuilder.tsx","../../src/components/QueryEditor/visual-query-builder/WhereRow.tsx","../../src/components/QueryEditor/visual-query-builder/SQLWhereRow.tsx","../../src/components/QueryEditor/visual-query-builder/EditorRow.tsx","../../src/components/QueryEditor/visual-query-builder/EditorField.tsx","../../src/components/QueryEditor/visual-query-builder/EditorRows.tsx","../../src/components/QueryEditor/visual-query-builder/VisualEditor.tsx","../../node_modules/tslib/tslib.es6.mjs","../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js","../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","../../node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","../../node_modules/rxjs/dist/esm5/internal/Subscription.js","../../node_modules/rxjs/dist/esm5/internal/config.js","../../node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","../../node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","../../node_modules/rxjs/dist/esm5/internal/util/noop.js","../../node_modules/rxjs/dist/esm5/internal/util/errorContext.js","../../node_modules/rxjs/dist/esm5/internal/Subscriber.js","../../node_modules/rxjs/dist/esm5/internal/symbol/observable.js","../../node_modules/rxjs/dist/esm5/internal/util/identity.js","../../node_modules/rxjs/dist/esm5/internal/util/pipe.js","../../node_modules/rxjs/dist/esm5/internal/Observable.js","../../node_modules/rxjs/dist/esm5/internal/util/lift.js","../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","../../node_modules/rxjs/dist/esm5/internal/observable/empty.js","../../node_modules/rxjs/dist/esm5/internal/util/isScheduler.js","../../node_modules/rxjs/dist/esm5/internal/util/args.js","../../node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js","../../node_modules/rxjs/dist/esm5/internal/util/isPromise.js","../../node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js","../../node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js","../../node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js","../../node_modules/rxjs/dist/esm5/internal/symbol/iterator.js","../../node_modules/rxjs/dist/esm5/internal/util/isIterable.js","../../node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js","../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js","../../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js","../../node_modules/rxjs/dist/esm5/internal/operators/observeOn.js","../../node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js","../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js","../../node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js","../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js","../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js","../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js","../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js","../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js","../../node_modules/rxjs/dist/esm5/internal/observable/from.js","../../node_modules/rxjs/dist/esm5/internal/observable/of.js","../../node_modules/rxjs/dist/esm5/internal/util/EmptyError.js","../../node_modules/rxjs/dist/esm5/internal/lastValueFrom.js","../../node_modules/rxjs/dist/esm5/internal/operators/map.js","../../node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js","../../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js","../../node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js","../../node_modules/rxjs/dist/esm5/internal/observable/merge.js","../../node_modules/rxjs/dist/esm5/internal/operators/catchError.js","../../src/datasource/constants.ts","../../src/datasource/SqlDatasource.ts","../../src/components/QueryEditor/QueryEditor.tsx","../../src/components/ConfigEditor/SecureSocksProxyToggle.tsx","../../src/components/ConfigEditor/DataSourceDescription.tsx","../../src/components/ConfigEditor/ConfigSection/GenericConfigSection.tsx","../../src/components/ConfigEditor/ConfigSection/ConfigSection.tsx","../../src/components/ConfigEditor/ConfigSection/ConfigSubSection.tsx","../../src/components/ConfigEditor/ConfigSection/ConfigDescriptionLink.tsx","../../src/components/ConfigEditor/Auth/types.ts","../../src/components/ConfigEditor/Auth/styles.ts","../../src/components/ConfigEditor/Auth/auth-method/BasicAuth.tsx","../../src/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.tsx","../../src/components/ConfigEditor/Auth/tls/TLSSettingsSection.tsx","../../src/components/ConfigEditor/Auth/tls/SelfSignedCertificate.tsx","../../src/components/ConfigEditor/Auth/tls/TLSClientAuth.tsx","../../src/components/ConfigEditor/Auth/tls/SkipTLSVerification.tsx","../../src/components/ConfigEditor/Auth/tls/TLSSettings.tsx","../../src/components/ConfigEditor/Auth/custom-headers/CustomHeader.tsx","../../src/components/ConfigEditor/Auth/custom-headers/CustomHeaders.tsx","../../src/components/ConfigEditor/Auth/Auth.tsx","../../src/components/ConfigEditor/Auth/utils.ts","../../src/components/ConfigEditor/Connection/ConnectionSettings.tsx","../../src/components/ConfigEditor/AdvancedSettings/AdvancedHttpSettings.tsx","../../src/components/ConfigEditor/DatasourceConfigWizard/cel.ts","../../src/components/ConfigEditor/DatasourceConfigWizard/config.ts","../../node_modules/react-hook-form/dist/index.esm.mjs","../../src/components/ConfigEditor/DatasourceConfigWizard/datasource.ts","../../src/components/ConfigEditor/DatasourceConfigWizard/inputs/fieldUtils.ts","../../src/components/ConfigEditor/DatasourceConfigWizard/inputs/PrimitiveInputs.tsx","../../src/components/ConfigEditor/DatasourceConfigWizard/inputs/SecureFieldInput.tsx","../../src/components/ConfigEditor/DatasourceConfigWizard/inputs/StringArrayInput.tsx","../../src/components/ConfigEditor/DatasourceConfigWizard/inputs/IndexedPairEditor.tsx","../../src/components/ConfigEditor/DatasourceConfigWizard/inputs/FileUploadField.tsx","../../src/components/ConfigEditor/DatasourceConfigWizard/inputs/ObjectArrayEditor.tsx","../../src/components/ConfigEditor/DatasourceConfigWizard/inputs/ComplexFieldNote.tsx","../../src/schema/utils/llm.ts","../../node_modules/js-yaml/dist/js-yaml.mjs","../../src/schema/utils/provisioning.ts","../../src/schema/utils/dsconfig.ts","../../src/schema/utils/registry.ts","../../src/components/ConfigEditor/DatasourceConfigWizard/inputs/FieldInput.tsx","../../src/components/ConfigEditor/DatasourceConfigWizard/styles.ts","../../src/components/ConfigEditor/DatasourceConfigWizard/SchemaField.tsx","../../src/components/ConfigEditor/DatasourceConfigWizard/inputs/AuthorizationHeaderField.tsx","../../src/components/ConfigEditor/DatasourceConfigWizard/layoutParts.tsx","../../src/components/ConfigEditor/DatasourceConfigWizard/hooks/formInterpreter.ts","../../src/components/ConfigEditor/DatasourceConfigWizard/tracking.ts","../../src/components/ConfigEditor/DatasourceConfigWizard/hooks/useDatasourceConfigForm.ts","../../src/components/ConfigEditor/DatasourceConfigWizard/WizardLayout.tsx","../../src/components/ConfigEditor/DatasourceConfigWizard/DatasourceConfigWizard.tsx","../../src/components/ConfigEditor/DatasourceConfigWizard/DatasourceErrorBoundary.tsx","../../src/components/ConfigEditor/DatasourceConfigWizard/hooks/useHealthChecks.ts","../../src/components/ConfigEditor/DatasourceConfigWizard/resolvePluginName.ts","../../src/components/ConfigEditor/DatasourceConfigWizard/hooks/useDatasourceSchema.ts","../../src/components/CustomHeadersSettings/CustomHeadersSettings.tsx","../../src/components/VisualQueryBuilder/types.ts","../../src/components/VisualQueryBuilder/QueryModellerBase.ts","../../src/components/VisualQueryBuilder/components/LabelFilterItem.tsx","../../src/components/VisualQueryBuilder/components/LabelFilters.tsx","../../src/components/VisualQueryBuilder/components/OperationExplainedBox.tsx","../../src/components/VisualQueryBuilder/components/OperationInfoButton.tsx","../../src/components/VisualQueryBuilder/components/OperationHeader.tsx","../../src/components/VisualQueryBuilder/components/OperationParamEditor.tsx","../../src/components/VisualQueryBuilder/components/OperationEditorBody.tsx","../../src/components/VisualQueryBuilder/components/OperationEditor.tsx","../../src/components/VisualQueryBuilder/components/OperationList.tsx","../../src/components/VisualQueryBuilder/components/RawQuery.tsx","../../src/components/VisualQueryBuilder/components/OperationListExplained.tsx","../../src/components/VisualQueryBuilder/components/OperationsEditorRow.tsx","../../src/components/VisualQueryBuilder/components/QueryBuilderHints.tsx","../../src/components/VisualQueryBuilder/components/QueryEditorModeToggle.tsx","../../src/components/VisualQueryBuilder/components/QueryHeaderSwitch.tsx","../../src/components/VisualQueryBuilder/components/QueryOptionGroup.tsx","../../node_modules/semver/internal/constants.js","../../node_modules/semver/internal/debug.js","../../node_modules/semver/internal/re.js","../../node_modules/semver/internal/parse-options.js","../../node_modules/semver/internal/identifiers.js","../../node_modules/semver/classes/semver.js","../../node_modules/semver/functions/parse.js","../../node_modules/semver/functions/valid.js","../../node_modules/semver/functions/clean.js","../../node_modules/semver/functions/inc.js","../../node_modules/semver/functions/diff.js","../../node_modules/semver/functions/major.js","../../node_modules/semver/functions/minor.js","../../node_modules/semver/functions/patch.js","../../node_modules/semver/functions/prerelease.js","../../node_modules/semver/functions/compare.js","../../node_modules/semver/functions/rcompare.js","../../node_modules/semver/functions/compare-loose.js","../../node_modules/semver/functions/compare-build.js","../../node_modules/semver/functions/sort.js","../../node_modules/semver/functions/rsort.js","../../node_modules/semver/functions/gt.js","../../node_modules/semver/functions/lt.js","../../node_modules/semver/functions/eq.js","../../node_modules/semver/functions/neq.js","../../node_modules/semver/functions/gte.js","../../node_modules/semver/functions/lte.js","../../node_modules/semver/functions/cmp.js","../../node_modules/semver/functions/coerce.js","../../node_modules/semver/functions/truncate.js","../../node_modules/semver/internal/lrucache.js","../../node_modules/semver/classes/range.js","../../node_modules/semver/classes/comparator.js","../../node_modules/semver/functions/satisfies.js","../../node_modules/semver/ranges/to-comparators.js","../../node_modules/semver/ranges/max-satisfying.js","../../node_modules/semver/ranges/min-satisfying.js","../../node_modules/semver/ranges/min-version.js","../../node_modules/semver/ranges/valid.js","../../node_modules/semver/ranges/outside.js","../../node_modules/semver/ranges/gtr.js","../../node_modules/semver/ranges/ltr.js","../../node_modules/semver/ranges/intersects.js","../../node_modules/semver/ranges/simplify.js","../../node_modules/semver/ranges/subset.js","../../node_modules/semver/index.js","../../src/async-query-data/requestLooper.ts","../../src/async-query-data/DatasourceWithAsyncBackend.ts","../../src/async-query-data/RunQueryButtons.tsx"],"sourcesContent":["import React from 'react';\nexport interface QueryEditorRowProps {\n  label?: string;\n  className?: string;\n  noFillEnd?: boolean;\n  children?: React.ReactNode;\n}\n\nexport const QueryEditorRow = (props: QueryEditorRowProps) => {\n  const className: string = props.className ?? 'width-8';\n  const noFillEnd: boolean = props.noFillEnd ?? false;\n\n  return (\n    <div className=\"gf-form\">\n      {props.label && <label className={`gf-form-label query-keyword ${className}`}>{props.label}</label>}\n      {props.children}\n\n      <div className={'gf-form--grow'}>{noFillEnd || <div className={'gf-form-label gf-form-label--grow'}></div>}</div>\n    </div>\n  );\n};\n","import { useState, useEffect } from 'react';\n\nexport const DEFAULT_DELAY = 275;\n\nexport const useDebounce = <T>(value: T, delay: number = DEFAULT_DELAY) => {\n  const [debouncedValue, setDebouncedValue] = useState(value);\n\n  useEffect(() => {\n    const handler = setTimeout(() => {\n      setDebouncedValue(value);\n    }, delay);\n\n    return () => {\n      clearTimeout(handler);\n    };\n    // TODO: We should fix this\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [value]);\n\n  return debouncedValue;\n};\n","import React, { type ComponentProps, useState, useEffect } from 'react';\nimport { Input } from '@grafana/ui';\nimport { useDebounce } from '../../hooks/useDebounce';\n\nexport interface DebounceInputProps extends Omit<ComponentProps<typeof Input>, 'ref'> {\n  value: string;\n  onDebounce: (debouncedInput?: string) => void;\n  delay?: number;\n}\n\nexport const DebounceInput = (props: DebounceInputProps) => {\n  const { delay, onDebounce, value, ...rest } = props;\n  const [input, setInput] = useState(value);\n\n  const debouncedInput = useDebounce(input, delay);\n\n  // TODO: We should fix this\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  useEffect(() => onDebounce(debouncedInput), [debouncedInput]);\n  useEffect(() => setInput(value), [value]);\n\n  return <Input onChange={(ev) => setInput(ev.currentTarget.value)} value={input} {...rest} />;\n};\n","import React, { useEffect, type ComponentProps, useState } from 'react';\nimport { Segment as GrafanaSegment } from '@grafana/ui';\nimport { type SelectableValue } from '@grafana/data';\nimport { useDebounce } from '../../hooks/useDebounce';\n\nexport interface SegmentProps<T> extends Omit<ComponentProps<typeof GrafanaSegment<T>>, 'onChange'> {\n  value: T;\n  onDebounce: (debouncedSegment?: T) => void;\n  delay?: number;\n}\n\nexport function Segment<T>(props: SegmentProps<T>) {\n  const { delay, onDebounce, value, options, ...rest } = props;\n  const [input, setInput] = useState(value);\n\n  const debouncedSegment = useDebounce(input, delay);\n\n  // TODO: We should fix the exhaustive-deps rule\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  useEffect(() => onDebounce(debouncedSegment), [debouncedSegment]);\n  useEffect(() => setInput(value), [value]);\n\n  return (\n    <GrafanaSegment\n      options={options}\n      onChange={(ev: SelectableValue<T>) => setInput(ev.value!)}\n      value={input}\n      {...rest}\n    />\n  );\n}\n","import { type GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\n\nexport const getStyles = (theme: GrafanaTheme2) => {\n  const containerBorder = theme.isDark ? theme.v1.palette.dark9 : theme.v1.palette.gray5;\n\n  return {\n    container: css`\n      top: -1px;\n      position: absolute;\n      right: 544px;\n      box-shadow: 0px 0px 20px ${theme.v1.colors.dropdownShadow};\n      background-color: ${theme.v1.colors.bodyBg};\n      z-index: -1;\n      border: 1px solid ${containerBorder};\n      border-radius: 2px 0 0 2px;\n\n      &:after {\n        display: block;\n        background-color: ${theme.v1.colors.bodyBg};\n        width: 19px;\n        height: 100%;\n        content: '';\n        position: absolute;\n        top: 0;\n        right: -19px;\n        border-left: 1px solid ${theme.v1.colors.border1};\n      }\n    `,\n    modal: css`\n      z-index: ${theme.v1.zIndex.modal};\n    `,\n    content: css`\n      margin: 0 auto;\n      width: 268px;\n    `,\n    backdrop: css`\n      position: fixed;\n      top: 0;\n      right: 0;\n      bottom: 0;\n      left: 0;\n      background: #202226;\n      opacity: 0.7;\n      z-index: ${theme.v1.zIndex.modalBackdrop};\n      text-align: center;\n    `,\n  };\n};\n\nexport const getBodyStyles = (theme: GrafanaTheme2) => {\n  const containerBorder = theme.isDark ? theme.v1.palette.dark9 : theme.v1.palette.gray5;\n\n  return {\n    title: css`\n      color: ${theme.colors.text};\n      background-color: ${theme.v1.colors.bodyBg};\n      font-size: ${theme.v1.typography.size.md};\n      border: 1px solid transparent;\n\n      &:hover {\n        position: relative;\n      }\n    `,\n    body: css`\n      z-index: ${theme.zIndex.modal};\n      position: fixed;\n      background-color: ${theme.v1.colors.bodyBg};\n      width: 268px;\n\n      box-shadow: 0px 0px 20px ${theme.v1.colors.dropdownShadow};\n      border: 1px solid ${containerBorder};\n      border-radius: 2px 0 0 2px;\n\n      .react-calendar__navigation__label,\n      .react-calendar__navigation__arrow,\n      .react-calendar__navigation {\n        padding-top: 4px;\n        background-color: inherit;\n        color: ${theme.colors.text};\n        border: 0;\n        font-weight: ${theme.v1.typography.weight.semibold};\n      }\n\n      .react-calendar__month-view__weekdays {\n        background-color: inherit;\n        text-align: center;\n        color: ${theme.v1.palette.blue77};\n\n        abbr {\n          border: 0;\n          text-decoration: none;\n          cursor: default;\n          display: block;\n          padding: 4px 0 4px 0;\n        }\n      }\n\n      .react-calendar__month-view__days {\n        background-color: inherit;\n      }\n\n      .react-calendar__tile,\n      .react-calendar__tile--now {\n        margin-bottom: 4px;\n        background-color: inherit;\n        height: 26px;\n      }\n\n      .react-calendar__navigation__label,\n      .react-calendar__navigation > button:focus,\n      .time-picker-calendar-tile:focus {\n        outline: 0;\n      }\n\n      .react-calendar__tile--active,\n      .react-calendar__tile--active:hover {\n        color: ${theme.v1.palette.white};\n        font-weight: ${theme.v1.typography.weight.semibold};\n        background: ${theme.v1.palette.blue95};\n        box-shadow: none;\n        border: 0px;\n      }\n\n      .react-calendar__tile--rangeEnd,\n      .react-calendar__tile--rangeStart {\n        padding: 0;\n        border: 0px;\n        color: ${theme.v1.palette.white};\n        font-weight: ${theme.v1.typography.weight.semibold};\n        background: ${theme.v1.palette.blue95};\n\n        abbr {\n          background-color: ${theme.v1.palette.blue77};\n          border-radius: 100px;\n          display: block;\n          padding-top: 2px;\n          height: 26px;\n        }\n      }\n\n      .react-calendar__tile--rangeStart {\n        border-top-left-radius: 20px;\n        border-bottom-left-radius: 20px;\n      }\n\n      .react-calendar__tile--rangeEnd {\n        border-top-right-radius: 20px;\n        border-bottom-right-radius: 20px;\n      }\n    `,\n  };\n};\n","import React, { memo } from 'react';\nimport Calendar from 'react-calendar';\nimport { useTheme2, ClickOutsideWrapper, Icon } from '@grafana/ui';\nimport { getStyles, getBodyStyles } from './styles';\n\nexport interface DatePickerProps {\n  isOpen?: boolean;\n  onClose: () => void;\n  onChange: (value: Date) => void;\n  value?: Date;\n}\n\nexport const DatePicker = memo<DatePickerProps>((props) => {\n  const theme = useTheme2();\n  const styles = getStyles(theme);\n  const { isOpen, onClose } = props;\n\n  if (!isOpen) {\n    return null;\n  }\n\n  return (\n    <ClickOutsideWrapper useCapture={true} includeButtonPress={false} onClick={onClose}>\n      <div className={styles.modal} data-testid=\"date-picker\">\n        <Body {...props} />\n      </div>\n    </ClickOutsideWrapper>\n  );\n});\n\nDatePicker.displayName = 'DatePicker';\n\nconst Body = memo<DatePickerProps>(({ value, onChange }) => {\n  const theme = useTheme2();\n  const styles = getBodyStyles(theme);\n\n  return (\n    <Calendar\n      className={styles.body}\n      tileClassName={styles.title}\n      value={value || new Date()}\n      nextLabel={<Icon name=\"angle-right\" />}\n      prevLabel={<Icon name=\"angle-left\" />}\n      onChange={(ev: any) => {\n        if (!Array.isArray(ev)) {\n          onChange(ev);\n        }\n      }}\n      locale=\"en\"\n    />\n  );\n});\n\nBody.displayName = 'Body';\n","import { css } from '@emotion/css';\n\nexport function getStyles() {\n  return {\n    input: css({\n      /* hides the native Calendar picker icon given when using type=date */\n      \"input[type='date']::-webkit-inner-spin-button, input[type='date']::-webkit-calendar-picker-indicator\": {\n        display: 'none',\n        WebkitAppearance: 'none',\n      },\n    }),\n  };\n}\n","import React, { type ComponentProps, useState } from 'react';\nimport { Input } from '@grafana/ui';\nimport { DatePicker } from '../DatePicker/DatePicker';\nimport { getStyles } from './styles';\nimport { cx } from '@emotion/css';\n\nexport const formatDate = (date: Date) => date.toISOString().split('T')[0];\n\nexport interface DatePickerWithInputProps extends Omit<ComponentProps<typeof Input>, 'ref' | 'value' | 'onChange'> {\n  value?: Date;\n  onChange: (value: Date) => void;\n}\n\nexport const DatePickerWithInput = (props: DatePickerWithInputProps) => {\n  const { value, onChange, className, ...rest } = props;\n  const [open, setOpen] = useState(false);\n  const styles = getStyles();\n\n  return (\n    <>\n      <Input\n        type=\"date\"\n        placeholder=\"Date\"\n        value={formatDate(value || new Date())}\n        onClick={() => setOpen(true)}\n        onChange={() => {}}\n        className={cx(styles.input, className)}\n        {...rest}\n      />\n      <DatePicker isOpen={open} value={value} onChange={(ev: any) => onChange(ev)} onClose={() => setOpen(false)} />\n    </>\n  );\n};\n","import React, { type HTMLAttributes } from 'react';\nimport { Badge, type BadgeProps } from '@grafana/ui';\nimport { PluginErrorCode, PluginSignatureStatus } from '@grafana/data';\n\ninterface Props extends HTMLAttributes<HTMLDivElement> {\n  status?: PluginSignatureStatus;\n}\n\nexport const PluginSignatureBadge = ({ status, ...otherProps }: Props) => {\n  const display = getSignatureDisplayModel(status);\n  return (\n    <Badge\n      text={display.text}\n      color={display.color as any}\n      icon={display.icon}\n      tooltip={display.tooltip}\n      {...otherProps}\n    />\n  );\n};\n\nexport function isUnsignedPluginSignature(signature?: PluginSignatureStatus) {\n  return signature && signature !== PluginSignatureStatus.valid && signature !== PluginSignatureStatus.internal;\n}\n\nexport function mapPluginErrorCodeToSignatureStatus(code: PluginErrorCode) {\n  switch (code) {\n    case PluginErrorCode.invalidSignature:\n      return PluginSignatureStatus.invalid;\n    case PluginErrorCode.missingSignature:\n      return PluginSignatureStatus.missing;\n    case PluginErrorCode.modifiedSignature:\n      return PluginSignatureStatus.modified;\n    default:\n      return PluginSignatureStatus.missing;\n  }\n}\n\nfunction getSignatureDisplayModel(signature?: PluginSignatureStatus): BadgeProps {\n  if (!signature) {\n    signature = PluginSignatureStatus.invalid;\n  }\n\n  switch (signature) {\n    case PluginSignatureStatus.internal:\n      return { text: 'Core', icon: 'cube', color: 'blue', tooltip: 'Core plugin that is bundled with Grafana' };\n    case PluginSignatureStatus.valid:\n      return { text: 'Signed', icon: 'lock', color: 'green', tooltip: 'Signed and verified plugin' };\n    case PluginSignatureStatus.invalid:\n      return {\n        text: 'Invalid signature',\n        icon: 'exclamation-triangle',\n        color: 'red',\n        tooltip: 'Invalid plugin signature',\n      };\n    case PluginSignatureStatus.modified:\n      return {\n        text: 'Modified signature',\n        icon: 'exclamation-triangle',\n        color: 'red',\n        tooltip: 'Valid signature but content has been modified',\n      };\n    case PluginSignatureStatus.missing:\n      return {\n        text: 'Missing signature',\n        icon: 'exclamation-triangle',\n        color: 'red',\n        tooltip: 'Missing plugin signature',\n      };\n  }\n\n  return { text: 'Unsigned', icon: 'exclamation-triangle', color: 'red', tooltip: 'Unsigned external plugin' };\n}\n\nPluginSignatureBadge.displayName = 'PluginSignatureBadge';\n","import React, { PureComponent } from 'react';\nimport { Stack, Select } from '@grafana/ui';\nimport { type DataSourceInstanceSettings, type SelectableValue } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { isUnsignedPluginSignature, PluginSignatureBadge } from '../Plugins/PluginSignatureBadge';\nimport { getDataSourceSrv, type DataSourceSrv } from '@grafana/runtime';\n\nexport interface Props {\n  onChange: (ds: DataSourceInstanceSettings) => void;\n  current: string | null;\n  hideTextValue?: boolean;\n  onBlur?: () => void;\n  autoFocus?: boolean;\n  openMenuOnFocus?: boolean;\n  placeholder?: string;\n  tracing?: boolean;\n  mixed?: boolean;\n  dashboard?: boolean;\n  metrics?: boolean;\n  annotations?: boolean;\n  variables?: boolean;\n  pluginId?: string;\n  noDefault?: boolean;\n}\n\nexport interface State {\n  error?: string;\n}\n\nexport class DataSourcePicker extends PureComponent<Props, State> {\n  dataSourceSrv: DataSourceSrv = getDataSourceSrv();\n\n  static defaultProps: Partial<Props> = {\n    autoFocus: false,\n    openMenuOnFocus: false,\n    placeholder: 'Select datasource',\n  };\n\n  state: State = {};\n\n  constructor(props: Props) {\n    super(props);\n  }\n\n  componentDidMount() {\n    const { current } = this.props;\n    const dsSettings = this.dataSourceSrv.getInstanceSettings(current!);\n    if (!dsSettings) {\n      this.setState({ error: 'Could not find data source ' + current });\n    }\n  }\n\n  onChange = (item: SelectableValue<string>) => {\n    const dsSettings = this.dataSourceSrv.getInstanceSettings(item.value!);\n\n    if (dsSettings) {\n      this.props.onChange(dsSettings);\n      this.setState({ error: undefined });\n    }\n  };\n\n  private getCurrentValue(): SelectableValue<string> {\n    const { current, hideTextValue, noDefault } = this.props;\n\n    if (!current && noDefault) {\n      return {\n        label: 'No datasources found',\n      };\n    }\n\n    const ds = this.dataSourceSrv.getInstanceSettings(current!);\n\n    if (ds) {\n      return {\n        label: ds.name.substr(0, 37),\n        value: ds.name,\n        imgUrl: ds.meta.info.logos.small,\n        hideText: hideTextValue,\n        meta: ds.meta,\n      };\n    }\n\n    return {\n      label: (current ?? 'no name') + ' - not found',\n      value: (current ?? 'no name') + ' - not found',\n      imgUrl: '',\n      hideText: hideTextValue,\n    };\n  }\n\n  getDataSourceOptions(): Array<SelectableValue<string>> {\n    const options: Array<SelectableValue<string>> = this.dataSourceSrv.getList().map((ds) => ({\n      value: ds.uid,\n      label: ds.name,\n      imgUrl: ds.meta.info.logos.small,\n      meta: ds.meta,\n    }));\n\n    return options;\n  }\n\n  render() {\n    const { autoFocus, onBlur, openMenuOnFocus, placeholder } = this.props;\n    const { error } = this.state;\n    const options = this.getDataSourceOptions();\n    const value = this.getCurrentValue();\n\n    return (\n      <div aria-label={selectors.components.DataSourcePicker.container}>\n        <Select\n          className=\"ds-picker select-container\"\n          isMulti={false}\n          isClearable={false}\n          backspaceRemovesValue={false}\n          onChange={this.onChange}\n          options={options}\n          autoFocus={autoFocus}\n          onBlur={onBlur}\n          openMenuOnFocus={openMenuOnFocus}\n          maxMenuHeight={500}\n          placeholder={placeholder}\n          noOptionsMessage=\"No datasources found\"\n          value={value}\n          invalid={!!error}\n          getOptionLabel={(o) => {\n            if (o.meta && isUnsignedPluginSignature(o.meta.signature) && o !== value) {\n              return (\n                <Stack alignItems=\"center\" justifyContent=\"space-between\">\n                  <span>{o.label}</span> <PluginSignatureBadge status={o.meta.signature} />\n                </Stack>\n              );\n            }\n            return o.label || '';\n          }}\n        />\n      </div>\n    );\n  }\n}\n","import React, { type Dispatch, type SetStateAction, useEffect, useState } from 'react';\nimport { css } from '@emotion/css';\nimport { type VariableSuggestion, type DataSourceInstanceSettings, type DataSourceJsonData } from '@grafana/data';\nimport { Button, LegacyForms, DataLinkInput, stylesFactory } from '@grafana/ui';\nconst { FormField, Switch } = LegacyForms;\nimport { type DataLinkConfig } from './types';\nimport { usePrevious } from 'react-use';\nimport { DataSourcePicker } from '../DataSourcePicker/DataSourcePicker';\n\nconst getStyles = stylesFactory(() => ({\n  firstRow: css`\n    display: flex;\n  `,\n  nameField: css`\n    flex: 2;\n  `,\n  regexField: css`\n    flex: 3;\n  `,\n  row: css`\n    display: flex;\n    align-items: baseline;\n  `,\n}));\n\ntype Props = {\n  value: DataLinkConfig;\n  datasources?: Array<DataSourceInstanceSettings<DataSourceJsonData>>;\n  onChange: (value: DataLinkConfig) => void;\n  onDelete: () => void;\n  suggestions: VariableSuggestion[];\n  className?: string;\n};\nexport const DataLink = (props: Props) => {\n  const { value, onChange, onDelete, suggestions, className } = props;\n  const styles = getStyles();\n  const [showInternalLink, setShowInternalLink] = useInternalLink(value.datasourceUid);\n\n  const handleChange = (field: keyof typeof value) => (event: React.ChangeEvent<HTMLInputElement>) => {\n    onChange({\n      ...value,\n      [field]: event.currentTarget.value,\n    });\n  };\n\n  return (\n    <div className={className}>\n      <div className={styles.firstRow + ' gf-form'}>\n        <FormField\n          className={styles.nameField}\n          labelWidth={6}\n          // A bit of a hack to prevent using default value for the width from FormField\n          inputWidth={null}\n          label=\"Field\"\n          type=\"text\"\n          value={value.field}\n          tooltip={'Can be exact field name or a regex pattern that will match on the field name.'}\n          onChange={handleChange('field')}\n        />\n        <Button\n          variant={'destructive'}\n          title=\"Remove field\"\n          aria-label=\"Remove field\"\n          icon=\"times\"\n          onClick={(event) => {\n            event.preventDefault();\n            onDelete();\n          }}\n        />\n      </div>\n      <div className=\"gf-form\">\n        <FormField\n          className={styles.nameField}\n          inputWidth={null}\n          label=\"Label\"\n          type=\"text\"\n          value={value.label}\n          onChange={handleChange('label')}\n          tooltip={'Use to provide a meaningful label to the data matched in the regex'}\n        />\n        <FormField\n          className={styles.regexField}\n          inputWidth={null}\n          label=\"Regex\"\n          type=\"text\"\n          value={value.matcherRegex}\n          onChange={handleChange('matcherRegex')}\n          tooltip={\n            'Use to parse and capture some part of the log message. You can use the captured groups in the template.'\n          }\n        />\n      </div>\n      <div className=\"gf-form\">\n        <FormField\n          label={showInternalLink ? 'Query' : 'URL'}\n          labelWidth={6}\n          inputEl={\n            <DataLinkInput\n              placeholder={showInternalLink ? '${__value.raw}' : 'http://example.com/${__value.raw}'}\n              value={value.url || ''}\n              onChange={(newValue) =>\n                onChange({\n                  ...value,\n                  url: newValue,\n                })\n              }\n              suggestions={suggestions}\n            />\n          }\n          className={css`\n            width: 100%;\n          `}\n        />\n      </div>\n\n      <div className={styles.row}>\n        <Switch\n          labelClass={'width-6'}\n          label=\"Internal link\"\n          checked={showInternalLink}\n          onChange={() => {\n            if (showInternalLink) {\n              onChange({\n                ...value,\n                datasourceUid: undefined,\n              });\n            }\n            setShowInternalLink(!showInternalLink);\n          }}\n        />\n        {showInternalLink && (\n          <DataSourcePicker\n            // Uid and value should be always set in the db and so in the items.\n            onChange={(ds) => {\n              onChange({\n                ...value,\n                datasourceUid: ds.uid,\n              });\n            }}\n            current={value.datasourceUid}\n          />\n        )}\n      </div>\n    </div>\n  );\n};\n\nfunction useInternalLink(datasourceUid?: string): [boolean, Dispatch<SetStateAction<boolean>>] {\n  const [showInternalLink, setShowInternalLink] = useState<boolean>(!!datasourceUid);\n  const previousUid = usePrevious(datasourceUid);\n\n  // Force internal link visibility change if uid changed outside of this component.\n  useEffect(() => {\n    if (!previousUid && datasourceUid && !showInternalLink) {\n      setShowInternalLink(true);\n    }\n    if (previousUid && !datasourceUid && showInternalLink) {\n      setShowInternalLink(false);\n    }\n  }, [previousUid, datasourceUid, showInternalLink]);\n\n  return [showInternalLink, setShowInternalLink];\n}\n","import React from 'react';\nimport { css } from '@emotion/css';\nimport { Button, useTheme2 } from '@grafana/ui';\nimport { type GrafanaTheme2, VariableOrigin, DataLinkBuiltInVars } from '@grafana/data';\nimport { type DataLinkConfig } from './types';\nimport { DataLink } from './DataLink';\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  infoText: css`\n    padding-bottom: ${theme.v1.spacing.md};\n    color: ${theme.v1.colors.textWeak};\n  `,\n  dataLink: css`\n    margin-bottom: ${theme.v1.spacing.sm};\n  `,\n});\n\ntype Props = {\n  value?: DataLinkConfig[];\n  onChange: (value: DataLinkConfig[]) => void;\n};\nexport const DataLinks = (props: Props) => {\n  const { value, onChange } = props;\n  const theme = useTheme2();\n  const styles = getStyles(theme);\n\n  return (\n    <>\n      <h3 className=\"page-heading\">Data links</h3>\n\n      <div className={styles.infoText}>\n        Add links to existing fields. Links will be shown in log row details next to the field value.\n      </div>\n\n      <div className=\"gf-form-group\">\n        {value &&\n          value.map((field, index) => {\n            return (\n              <DataLink\n                className={styles.dataLink}\n                key={index}\n                value={field}\n                onChange={(newField) => {\n                  const newDataLinks = [...value];\n                  newDataLinks.splice(index, 1, newField);\n                  onChange(newDataLinks);\n                }}\n                onDelete={() => {\n                  const newDataLinks = [...value];\n                  newDataLinks.splice(index, 1);\n                  onChange(newDataLinks);\n                }}\n                suggestions={[\n                  {\n                    value: DataLinkBuiltInVars.valueRaw,\n                    label: 'Raw value',\n                    documentation: 'Raw value of the field',\n                    origin: VariableOrigin.Value,\n                  },\n                ]}\n              />\n            );\n          })}\n        <div>\n          <Button\n            variant={'secondary'}\n            className={css`\n              margin-right: 10px;\n            `}\n            icon=\"plus\"\n            onClick={(event) => {\n              event.preventDefault();\n              const newDataLinks = [...(value || []), { field: '', label: '', matcherRegex: '', url: '' }];\n              onChange(newDataLinks);\n            }}\n          >\n            Add\n          </Button>\n        </div>\n      </div>\n    </>\n  );\n};\n","export enum QueryEditorPropertyType {\n  String = 'string',\n}\n\nexport interface QueryEditorProperty {\n  type: QueryEditorPropertyType;\n  name?: string;\n}\n\nexport type QueryEditorOperatorType = string | boolean | number;\ntype QueryEditorOperatorValueType = QueryEditorOperatorType | QueryEditorOperatorType[];\n\nexport interface QueryEditorOperator<T extends QueryEditorOperatorValueType> {\n  name?: string;\n  value?: T;\n}\n\nexport interface QueryEditorOperatorExpression {\n  type: QueryEditorExpressionType.Operator;\n  property: QueryEditorProperty;\n  operator: QueryEditorOperator<QueryEditorOperatorValueType>;\n}\n\nexport interface QueryEditorArrayExpression {\n  type: QueryEditorExpressionType.And | QueryEditorExpressionType.Or;\n  expressions: QueryEditorExpression[] | QueryEditorArrayExpression[];\n}\n\nexport interface QueryEditorPropertyExpression {\n  type: QueryEditorExpressionType.Property;\n  property: QueryEditorProperty;\n}\n\nexport enum QueryEditorExpressionType {\n  Property = 'property',\n  Operator = 'operator',\n  Or = 'or',\n  And = 'and',\n  GroupBy = 'groupBy',\n  Function = 'function',\n  FunctionParameter = 'functionParameter',\n}\n\nexport type QueryEditorExpression =\n  | QueryEditorArrayExpression\n  | QueryEditorPropertyExpression\n  | QueryEditorGroupByExpression\n  | QueryEditorFunctionExpression\n  | QueryEditorFunctionParameterExpression\n  | QueryEditorOperatorExpression;\n\nexport interface QueryEditorGroupByExpression {\n  type: QueryEditorExpressionType.GroupBy;\n  property: QueryEditorProperty;\n}\n\nexport interface QueryEditorFunctionExpression {\n  type: QueryEditorExpressionType.Function;\n  name?: string;\n  parameters?: QueryEditorFunctionParameterExpression[];\n}\n\nexport interface QueryEditorFunctionParameterExpression {\n  type: QueryEditorExpressionType.FunctionParameter;\n  name?: string;\n}\n","export enum TokenType {\n  Parenthesis = 'delimiter.parenthesis.sql',\n  Whitespace = 'white.sql',\n  Keyword = 'keyword.sql',\n  Delimiter = 'delimiter.sql',\n  Operator = 'operator.sql',\n  Identifier = 'identifier.sql',\n  IdentifierQuote = 'identifier.quote.sql',\n  Type = 'type.sql',\n  Function = 'predefined.sql',\n  Number = 'number.sql',\n  String = 'string.sql',\n  Variable = 'variable.sql',\n}\n","import { type monacoTypes } from '@grafana/ui';\nimport { TokenType } from './tokenType';\n\nexport class LinkedToken {\n  constructor(\n    public type: string,\n    public value: string,\n    public range: monacoTypes.IRange,\n    public previous: LinkedToken | null,\n    public next: LinkedToken | null\n  ) {}\n\n  isKeyword(): boolean {\n    return this.type === TokenType.Keyword;\n  }\n\n  isWhiteSpace(): boolean {\n    return this.type === TokenType.Whitespace;\n  }\n\n  isParenthesis(): boolean {\n    return this.type === TokenType.Parenthesis;\n  }\n\n  isIdentifier(): boolean {\n    return this.type === TokenType.Identifier;\n  }\n\n  isString(): boolean {\n    return this.type === TokenType.String;\n  }\n\n  isNumber(): boolean {\n    return this.type === TokenType.Number;\n  }\n\n  isDoubleQuotedString(): boolean {\n    return this.type === TokenType.Type;\n  }\n\n  isVariable(): boolean {\n    return this.type === TokenType.Variable;\n  }\n\n  isFunction(): boolean {\n    return this.type === TokenType.Function;\n  }\n\n  isOperator(): boolean {\n    return this.type === TokenType.Operator;\n  }\n\n  isTemplateVariable(): boolean {\n    return this.type === TokenType.Variable;\n  }\n\n  is(type: TokenType, value?: string | number | boolean): boolean {\n    const isType = this.type === type;\n\n    return value !== undefined ? isType && compareTokenWithValue(type, this, value) : isType;\n  }\n\n  getPreviousNonWhiteSpaceToken(): LinkedToken | null {\n    let curr = this.previous;\n    while (curr != null) {\n      if (!curr.isWhiteSpace()) {\n        return curr;\n      }\n      curr = curr.previous;\n    }\n    return null;\n  }\n\n  getPreviousOfType(type: TokenType, value?: string): LinkedToken | null {\n    let curr = this.previous;\n    while (curr != null) {\n      const isType = curr.type === type;\n\n      if (value !== undefined ? isType && compareTokenWithValue(type, curr, value) : isType) {\n        return curr;\n      }\n      curr = curr.previous;\n    }\n    return null;\n  }\n\n  getPreviousUntil(type: TokenType, ignoreTypes: TokenType[], value?: string): LinkedToken[] | null {\n    let tokens: LinkedToken[] = [];\n    let curr = this.previous;\n    while (curr != null) {\n      if (ignoreTypes.some((t) => t === curr?.type)) {\n        curr = curr.previous;\n        continue;\n      }\n\n      const isType = curr.type === type;\n\n      if (value !== undefined ? isType && compareTokenWithValue(type, curr, value) : isType) {\n        return tokens;\n      }\n      if (!curr.isWhiteSpace()) {\n        tokens.push(curr);\n      }\n      curr = curr.previous;\n    }\n\n    return tokens;\n  }\n\n  getNextUntil(type: TokenType, ignoreTypes: TokenType[], value?: string): LinkedToken[] | null {\n    let tokens: LinkedToken[] = [];\n    let curr = this.next;\n    while (curr != null) {\n      if (ignoreTypes.some((t) => t === curr?.type)) {\n        curr = curr.next;\n        continue;\n      }\n\n      const isType = curr.type === type;\n\n      if (value !== undefined ? isType && compareTokenWithValue(type, curr, value) : isType) {\n        return tokens;\n      }\n      if (!curr.isWhiteSpace()) {\n        tokens.push(curr);\n      }\n      curr = curr.next;\n    }\n\n    return tokens;\n  }\n\n  getPreviousKeyword(): LinkedToken | null {\n    let curr = this.previous;\n    while (curr != null) {\n      if (curr.isKeyword()) {\n        return curr;\n      }\n      curr = curr.previous;\n    }\n    return null;\n  }\n\n  getNextNonWhiteSpaceToken(): LinkedToken | null {\n    let curr = this.next;\n    while (curr != null) {\n      if (!curr.isWhiteSpace()) {\n        return curr;\n      }\n      curr = curr.next;\n    }\n    return null;\n  }\n\n  getNextOfType(type: TokenType, value?: string): LinkedToken | null {\n    let curr = this.next;\n    while (curr != null) {\n      const isType = curr.type === type;\n\n      if (value !== undefined ? isType && compareTokenWithValue(type, curr, value) : isType) {\n        return curr;\n      }\n      curr = curr.next;\n    }\n    return null;\n  }\n}\n\nfunction compareTokenWithValue(type: TokenType, token: LinkedToken, value: string | number | boolean) {\n  return type === TokenType.Keyword || type === TokenType.Operator\n    ? token.value.toLowerCase() === value.toString().toLowerCase()\n    : token.value === value;\n}\n","import { type Monaco, type monacoTypes } from '@grafana/ui';\nimport { type LinkedToken } from './utils/LinkedToken';\n\n/**\n * Provides a context for suggestions resolver\n * @alpha\n */\nexport interface PositionContext {\n  position: monacoTypes.IPosition;\n  kind: SuggestionKind[];\n  statementPosition: StatementPosition[];\n  currentToken: LinkedToken | null;\n  range: monacoTypes.IRange;\n}\n\nexport type CustomSuggestion = Partial<monacoTypes.languages.CompletionItem> & { label: string };\n\nexport interface CustomSuggestionKind {\n  id: string;\n  suggestionsResolver: SuggestionsResolver;\n  applyTo?: Array<StatementPosition | string>;\n  overrideDefault?: boolean;\n}\n\nexport interface CustomStatementPlacement {\n  id: string;\n  name?: string;\n  resolve: StatementPositionResolver;\n  overrideDefault?: boolean;\n}\nexport type StatementPlacementProvider = () => CustomStatementPlacement[];\nexport type SuggestionKindProvider = () => CustomSuggestionKind[];\n\nexport interface ColumnDefinition {\n  name: string;\n  type?: string;\n  description?: string;\n  // Text used for autocomplete. If not provided name is used.\n  completion?: string;\n}\n\nexport interface SchemaDefinition {\n  name: string;\n  // Text used for autocomplete. If not provided name is used.\n  completion?: string;\n}\n\nexport interface TableDefinition {\n  name: string;\n  // Text used for autocomplete. If not provided name is used.\n  completion?: string;\n}\n\nexport interface Operator {\n  id: string;\n  operator: string;\n  type: OperatorType;\n  description?: string;\n}\n\nexport interface TableIdentifier {\n  table?: string;\n  schema?: string;\n  catalog?: string;\n}\n\nexport interface SQLCompletionItemProvider\n  extends Omit<monacoTypes.languages.CompletionItemProvider, 'provideCompletionItems'> {\n  /**\n   * Allows dialect specific functions to be added to the completion list.\n   * @alpha\n   */\n  supportedFunctions?: () => Array<{\n    id: string;\n    name: string;\n    description?: string;\n  }>;\n\n  /**\n   * Allows dialect specific operators to be added to the completion list.\n   * @alpha\n   */\n  supportedOperators?: () => Array<{\n    id: string;\n    operator: string;\n    type: OperatorType;\n    description?: string;\n  }>;\n\n  supportedMacros?: () => Array<{\n    id: string;\n    text: string;\n    type: MacroType;\n    args: string[];\n    description?: string;\n  }>;\n\n  /**\n   * Allows custom suggestion kinds to be defined and correlate them with <Custom>StatementPosition.\n   * @alpha\n   */\n  customSuggestionKinds?: SuggestionKindProvider;\n\n  /**\n   * Allows custom statement placement definition.\n   * @alpha\n   */\n  customStatementPlacement?: StatementPlacementProvider;\n\n  /**\n   * Allows providing a custom function for resolving schemas.\n   * It's up to the consumer to decide whether the schemas are resolved via API calls or preloaded in the query editor(i.e. full db schema is preloaded).\n   * @alpha\n   */\n  schemas?: {\n    resolve: () => Promise<SchemaDefinition[]>;\n  };\n\n  /**\n   * Allows providing a custom function for resolving db tables.\n   * It's up to the consumer to decide whether the columns are resolved via API calls or preloaded in the query editor(i.e. full db schema is preloaded).\n   * @alpha\n   */\n  tables?: {\n    resolve: (TableIdentifier: TableIdentifier | null) => Promise<TableDefinition[]>;\n    // Allows providing a custom function for calculating the table name from the query. If not specified a default implementation is used.\n    parseName?: (token: LinkedToken | null | undefined) => TableIdentifier;\n  };\n  /**\n   * Allows providing a custom function for resolving table.\n   * It's up to the consumer to decide whether the columns are resolved via API calls or preloaded in the query editor(i.e. full db schema is preloaded).\n   * @alpha\n   */\n  columns?: {\n    resolve: (identifier?: TableIdentifier) => Promise<ColumnDefinition[]>;\n  };\n\n  /**\n   * TODO: Not sure whether or not we need this. Would like to avoid this kind of flexibility.\n   * @alpha\n   */\n  provideCompletionItems?: (\n    model: monacoTypes.editor.ITextModel,\n    position: monacoTypes.Position,\n    context: monacoTypes.languages.CompletionContext,\n    token: monacoTypes.CancellationToken,\n    positionContext: PositionContext // Decorates original provideCompletionItems function with our custom statement position context\n  ) => monacoTypes.languages.CompletionList;\n}\n\nexport interface SQLMonarchLanguage extends monacoTypes.languages.IMonarchLanguage {\n  keywords?: string[];\n  builtinFunctions?: string[];\n\n  /* Example: AND, OR, LIKE */\n  logicalOperators?: string[];\n  /* Example: >, <>, = */\n  comparisonOperators?: string[];\n\n  /** Used by basic languages in the monaco registry **/\n  operators?: string[];\n}\n\nexport type StatementPositionResolver = (\n  currentToken: LinkedToken | null,\n  previousKeyword: LinkedToken | null,\n  previousNonWhiteSpace: LinkedToken | null,\n  previousIsSlash: Boolean\n) => Boolean;\n\nexport type SuggestionsResolver = <T extends PositionContext = PositionContext>(\n  positionContext: T\n) => Promise<CustomSuggestion[]>;\n\nexport type LanguageCompletionProvider = (m: Monaco, l?: SQLMonarchLanguage) => SQLCompletionItemProvider;\n\nexport interface LanguageDefinition extends monacoTypes.languages.ILanguageExtensionPoint {\n  loader?: (module: any) => Promise<{\n    language: SQLMonarchLanguage;\n    conf: monacoTypes.languages.LanguageConfiguration;\n  }>;\n  // Provides API for customizing the autocomplete\n  completionProvider?: (m: Monaco, language: SQLMonarchLanguage) => SQLCompletionItemProvider;\n  // Function that returns a formatted query\n  formatter?: (q: string) => string;\n}\n\nexport enum OperatorType {\n  Comparison,\n  Logical,\n}\n\nexport enum MacroType {\n  Value,\n  Filter,\n  Group,\n  Column,\n  Table,\n}\n\nexport { TokenType } from './utils/tokenType';\n\nexport enum StatementPosition {\n  Unknown = 'unknown',\n  SelectKeyword = 'selectKeyword',\n  WithKeyword = 'withKeyword',\n  AfterSelectKeyword = 'afterSelectKeyword',\n  AfterSelectArguments = 'afterSelectArguments',\n  AfterSelectFuncFirstArgument = 'afterSelectFuncFirstArgument',\n  SelectAlias = 'selectAlias',\n  AfterFromKeyword = 'afterFromKeyword',\n  AfterTable = 'afterTable',\n  SchemaFuncFirstArgument = 'schemaFuncFirstArgument',\n  SchemaFuncExtraArgument = 'schemaFuncExtraArgument',\n  FromKeyword = 'fromKeyword',\n  AfterFrom = 'afterFrom',\n  WhereKeyword = 'whereKeyword',\n  WhereComparisonOperator = 'whereComparisonOperator',\n  WhereValue = 'whereValue',\n  AfterWhereFunctionArgument = 'afterWhereFunctionArgument',\n  AfterGroupByFunctionArgument = 'afterGroupByFunctionArgument',\n  AfterWhereValue = 'afterWhereValue',\n  AfterGroupByKeywords = 'afterGroupByKeywords',\n  AfterGroupBy = 'afterGroupBy',\n  AfterOrderByKeywords = 'afterOrderByKeywords',\n  AfterOrderByFunction = 'afterOrderByFunction',\n  AfterOrderByDirection = 'afterOrderByDirection',\n  AfterIsOperator = 'afterIsOperator',\n  AfterIsNotOperator = 'afterIsNotOperator',\n  AfterSchema = 'afterSchema',\n}\n\nexport enum SuggestionKind {\n  Schemas = 'schemas',\n  Tables = 'tables',\n  Columns = 'columns',\n  SelectKeyword = 'selectKeyword',\n  WithKeyword = 'withKeyword',\n  FunctionsWithArguments = 'functionsWithArguments',\n  FromKeyword = 'fromKeyword',\n  WhereKeyword = 'whereKeyword',\n  GroupByKeywords = 'groupByKeywords',\n  OrderByKeywords = 'orderByKeywords',\n  FunctionsWithoutArguments = 'functionsWithoutArguments',\n  LimitKeyword = 'limitKeyword',\n  SortOrderDirectionKeyword = 'sortOrderDirectionKeyword',\n  ComparisonOperators = 'comparisonOperators',\n  LogicalOperators = 'logicalOperators',\n  SelectMacro = 'selectMacro',\n  TableMacro = 'tableMacro',\n  FilterMacro = 'filterMacro',\n  GroupMacro = 'groupMacro',\n  BoolValues = 'boolValues',\n  NullValue = 'nullValue',\n  NotKeyword = 'notKeyword',\n  TemplateVariables = 'templateVariables',\n  StarWildCard = 'starWildCard',\n}\n\n// TODO: export from grafana/ui\nexport enum CompletionItemPriority {\n  High = 'a',\n  MediumHigh = 'd',\n  Medium = 'g',\n  MediumLow = 'k',\n  Low = 'q',\n}\n\nexport enum CompletionItemKind {\n  Method = 0,\n  Function = 1,\n  Constructor = 2,\n  Field = 3,\n  Variable = 4,\n  Class = 5,\n  Struct = 6,\n  Interface = 7,\n  Module = 8,\n  Property = 9,\n  Event = 10,\n  Operator = 11,\n  Unit = 12,\n  Value = 13,\n  Constant = 14,\n  Enum = 15,\n  EnumMember = 16,\n  Keyword = 17,\n  Text = 18,\n  Color = 19,\n  File = 20,\n  Reference = 21,\n  Customcolor = 22,\n  Folder = 23,\n  TypeParameter = 24,\n  User = 25,\n  Issue = 26,\n  Snippet = 27,\n}\n\nexport enum CompletionItemInsertTextRule {\n  KeepWhitespace = 1,\n  InsertAsSnippet = 4,\n}\n\nexport enum SQLEditorMode {\n  Builder = 'builder',\n  Code = 'code',\n}\n","import { StatementPosition, TokenType } from '../types';\nimport { type LinkedToken } from '../utils/LinkedToken';\nimport { type StatementPositionResolversRegistryItem } from './types';\nimport { type Registry } from '@grafana/data';\n\n// Given current cursor position in the SQL editor, returns the statement position.\nexport function getStatementPosition(\n  currentToken: LinkedToken | null,\n  statementPositionResolversRegistry: Registry<StatementPositionResolversRegistryItem>\n): StatementPosition[] {\n  const previousNonWhiteSpace = currentToken?.getPreviousNonWhiteSpaceToken();\n  const previousKeyword = currentToken?.getPreviousKeyword();\n  const previousIsSlash = currentToken?.getPreviousNonWhiteSpaceToken()?.is(TokenType.Operator, '/');\n  const resolvers = statementPositionResolversRegistry.list();\n  const positions = [];\n\n  for (const resolver of resolvers) {\n    if (\n      resolver.resolve(currentToken, previousKeyword ?? null, previousNonWhiteSpace ?? null, Boolean(previousIsSlash))\n    ) {\n      positions.push(resolver.id);\n    }\n  }\n\n  if (positions.length === 0) {\n    return [StatementPosition.Unknown];\n  }\n  return positions;\n}\n","import { type monacoTypes } from '@grafana/ui';\nimport { CompletionItemKind, CompletionItemPriority } from '../types';\n\nexport const toCompletionItem = (\n  value: string,\n  range: monacoTypes.IRange,\n  rest: Partial<monacoTypes.languages.CompletionItem> = {}\n) => {\n  const item: monacoTypes.languages.CompletionItem = {\n    label: value,\n    insertText: value,\n    kind: CompletionItemKind.Field,\n    sortText: CompletionItemPriority.Medium,\n    range,\n    ...rest,\n  };\n  return item;\n};\n","import { type Registry } from '@grafana/data';\nimport { type Monaco, type monacoTypes } from '@grafana/ui';\nimport { type PositionContext, type SuggestionKind } from '../types';\nimport { type LinkedToken } from '../utils/LinkedToken';\nimport { toCompletionItem } from '../utils/toCompletionItem';\nimport { type SuggestionsRegistryItem } from './types';\n\n// Given standard and custom registered suggestions and kinds of suggestion expected, return a list of completion items\nexport const getStandardSuggestions = async (\n  monaco: Monaco,\n  currentToken: LinkedToken | null,\n  suggestionKinds: SuggestionKind[],\n  positionContext: PositionContext,\n  suggestionsRegistry: Registry<SuggestionsRegistryItem>\n): Promise<monacoTypes.languages.CompletionItem[]> => {\n  let suggestions: monacoTypes.languages.CompletionItem[] = [];\n  const invalidRangeToken =\n    currentToken?.isWhiteSpace() ||\n    currentToken?.isParenthesis() ||\n    (currentToken?.isIdentifier() && currentToken.value.endsWith('.'));\n  const range =\n    invalidRangeToken || !currentToken?.range\n      ? monaco.Range.fromPositions(positionContext.position)\n      : currentToken?.range;\n\n  // iterating over Set to deduplicate\n  for (const suggestion of [...new Set(suggestionKinds)]) {\n    const registeredSuggestions = suggestionsRegistry.getIfExists(suggestion);\n    if (registeredSuggestions) {\n      const su = await registeredSuggestions.suggestions({ ...positionContext, range }, monaco);\n      suggestions = [...suggestions, ...su.map((s) => toCompletionItem(s.label, range, { kind: s.kind, ...s }))];\n    }\n  }\n  return Promise.resolve(suggestions);\n};\n","import { type RegistryItem } from '@grafana/data';\nimport { StatementPosition, SuggestionKind } from '../types';\n\nexport interface SuggestionKindRegistryItem extends RegistryItem {\n  id: StatementPosition;\n  kind: SuggestionKind[];\n}\n\n// Registry of possible suggestions for the given statement position\nexport const initSuggestionsKindRegistry = (): SuggestionKindRegistryItem[] => {\n  return [\n    {\n      id: StatementPosition.SelectKeyword,\n      name: StatementPosition.SelectKeyword,\n      kind: [SuggestionKind.SelectKeyword],\n    },\n    {\n      id: StatementPosition.WithKeyword,\n      name: StatementPosition.WithKeyword,\n      kind: [SuggestionKind.WithKeyword],\n    },\n    {\n      id: StatementPosition.AfterSelectKeyword,\n      name: StatementPosition.AfterSelectKeyword,\n      kind: [\n        SuggestionKind.StarWildCard,\n        SuggestionKind.FunctionsWithArguments,\n        SuggestionKind.Columns,\n        SuggestionKind.SelectMacro,\n      ],\n    },\n    {\n      id: StatementPosition.AfterSelectFuncFirstArgument,\n      name: StatementPosition.AfterSelectFuncFirstArgument,\n      kind: [SuggestionKind.Columns],\n    },\n    {\n      id: StatementPosition.AfterGroupByFunctionArgument,\n      name: StatementPosition.AfterGroupByFunctionArgument,\n      kind: [SuggestionKind.Columns],\n    },\n    {\n      id: StatementPosition.AfterWhereFunctionArgument,\n      name: StatementPosition.AfterWhereFunctionArgument,\n      kind: [SuggestionKind.Columns],\n    },\n    {\n      id: StatementPosition.AfterSelectArguments,\n      name: StatementPosition.AfterSelectArguments,\n      kind: [SuggestionKind.Columns],\n    },\n    {\n      id: StatementPosition.AfterFromKeyword,\n      name: StatementPosition.AfterFromKeyword,\n      kind: [SuggestionKind.Schemas, SuggestionKind.Tables, SuggestionKind.TableMacro],\n    },\n    {\n      id: StatementPosition.AfterSchema,\n      name: StatementPosition.AfterSchema,\n      kind: [SuggestionKind.Tables, SuggestionKind.TableMacro],\n    },\n    {\n      id: StatementPosition.SelectAlias,\n      name: StatementPosition.SelectAlias,\n      kind: [SuggestionKind.Columns, SuggestionKind.FunctionsWithArguments],\n    },\n    {\n      id: StatementPosition.FromKeyword,\n      name: StatementPosition.FromKeyword,\n      kind: [SuggestionKind.FromKeyword],\n    },\n    {\n      id: StatementPosition.AfterFrom,\n      name: StatementPosition.AfterFrom,\n      kind: [\n        SuggestionKind.WhereKeyword,\n        SuggestionKind.GroupByKeywords,\n        SuggestionKind.OrderByKeywords,\n        SuggestionKind.LimitKeyword,\n      ],\n    },\n    {\n      id: StatementPosition.AfterTable,\n      name: StatementPosition.AfterTable,\n      kind: [\n        SuggestionKind.WhereKeyword,\n        SuggestionKind.GroupByKeywords,\n        SuggestionKind.OrderByKeywords,\n        SuggestionKind.LimitKeyword,\n      ],\n    },\n    {\n      id: StatementPosition.WhereKeyword,\n      name: StatementPosition.WhereKeyword,\n      kind: [SuggestionKind.Columns, SuggestionKind.FilterMacro, SuggestionKind.TemplateVariables],\n    },\n    {\n      id: StatementPosition.WhereComparisonOperator,\n      name: StatementPosition.WhereComparisonOperator,\n      kind: [SuggestionKind.ComparisonOperators],\n    },\n    {\n      id: StatementPosition.WhereValue,\n      name: StatementPosition.WhereValue,\n      kind: [SuggestionKind.FilterMacro, SuggestionKind.TemplateVariables],\n    },\n    {\n      id: StatementPosition.AfterWhereValue,\n      name: StatementPosition.AfterWhereValue,\n      kind: [\n        SuggestionKind.LogicalOperators,\n        SuggestionKind.GroupByKeywords,\n        SuggestionKind.OrderByKeywords,\n        SuggestionKind.LimitKeyword,\n        SuggestionKind.Columns,\n        SuggestionKind.TemplateVariables,\n      ],\n    },\n    {\n      id: StatementPosition.AfterGroupByKeywords,\n      name: StatementPosition.AfterGroupByKeywords,\n      kind: [SuggestionKind.GroupMacro, SuggestionKind.Columns],\n    },\n    {\n      id: StatementPosition.AfterGroupBy,\n      name: StatementPosition.AfterGroupBy,\n      kind: [SuggestionKind.OrderByKeywords, SuggestionKind.LimitKeyword],\n    },\n    {\n      id: StatementPosition.AfterOrderByKeywords,\n      name: StatementPosition.AfterOrderByKeywords,\n      kind: [SuggestionKind.Columns],\n    },\n    {\n      id: StatementPosition.AfterOrderByFunction,\n      name: StatementPosition.AfterOrderByFunction,\n      kind: [SuggestionKind.SortOrderDirectionKeyword, SuggestionKind.LimitKeyword],\n    },\n    {\n      id: StatementPosition.AfterOrderByDirection,\n      name: StatementPosition.AfterOrderByDirection,\n      kind: [SuggestionKind.LimitKeyword],\n    },\n    {\n      id: StatementPosition.AfterIsOperator,\n      name: StatementPosition.AfterOrderByDirection,\n      kind: [SuggestionKind.NotKeyword, SuggestionKind.NullValue, SuggestionKind.BoolValues],\n    },\n    {\n      id: StatementPosition.AfterIsNotOperator,\n      name: StatementPosition.AfterOrderByDirection,\n      kind: [SuggestionKind.NullValue, SuggestionKind.BoolValues],\n    },\n  ];\n};\n","import { type Registry } from '@grafana/data';\nimport { type SuggestionKindRegistryItem } from '../standardSql/suggestionsKindRegistry';\nimport { type StatementPosition, type SuggestionKind } from '../types';\n\n/**\n * Given statement positions, returns list of suggestion kinds that apply to those positions.\n */\nexport function getSuggestionKinds(\n  statementPosition: StatementPosition[],\n  suggestionsKindRegistry: Registry<SuggestionKindRegistryItem>\n): SuggestionKind[] {\n  let result: SuggestionKind[] = [];\n  for (let i = 0; i < statementPosition.length; i++) {\n    const exists = suggestionsKindRegistry.getIfExists(statementPosition[i]);\n    if (exists) {\n      result = result.concat(exists.kind);\n    }\n  }\n\n  return result;\n}\n","import type { monacoTypes } from '@grafana/ui';\nimport { TokenType } from '../types';\nimport { LinkedToken } from './LinkedToken';\nimport { type Monaco } from './types';\n\nexport function linkedTokenBuilder(\n  monaco: Monaco,\n  model: monacoTypes.editor.ITextModel,\n  position: monacoTypes.IPosition,\n  languageId = 'sql'\n) {\n  let current: LinkedToken | null = null;\n  let previous: LinkedToken | null = null;\n  const tokensPerLine = monaco.editor.tokenize(model.getValue() ?? '', languageId);\n  for (let lineIndex = 0; lineIndex < tokensPerLine.length; lineIndex++) {\n    const tokens = tokensPerLine[lineIndex];\n    // In case position is first column in new line, add empty whitespace token so that links are not broken\n    if (!tokens.length && previous) {\n      const token: monacoTypes.Token = {\n        offset: 0,\n        type: TokenType.Whitespace,\n        language: languageId,\n        _tokenBrand: undefined,\n      };\n      tokens.push(token);\n    }\n\n    for (let columnIndex = 0; columnIndex < tokens.length; columnIndex++) {\n      const token = tokens[columnIndex];\n      let endColumn =\n        tokens.length > columnIndex + 1 ? tokens[columnIndex + 1].offset + 1 : model.getLineLength(lineIndex + 1) + 1;\n\n      const range: monacoTypes.IRange = {\n        startLineNumber: lineIndex + 1,\n        startColumn: token.offset === 0 ? 0 : token.offset + 1,\n        endLineNumber: lineIndex + 1,\n        endColumn,\n      };\n\n      const value = model.getValueInRange(range);\n      const sqlToken: LinkedToken = new LinkedToken(token.type, value, range, previous, null);\n\n      if (monaco.Range.containsPosition(range, position)) {\n        current = sqlToken;\n      }\n\n      if (previous) {\n        previous.next = sqlToken;\n      }\n      previous = sqlToken;\n    }\n  }\n  return current;\n}\n","import { type monacoTypes } from '@grafana/ui';\nimport { type SQLMonarchLanguage } from './types';\n\n// STD basic SQL\nexport const SELECT = 'select';\nexport const FROM = 'from';\nexport const WHERE = 'where';\nexport const GROUP = 'group';\nexport const ORDER = 'order';\nexport const BY = 'by';\nexport const DESC = 'desc';\nexport const ASC = 'asc';\nexport const LIMIT = 'limit';\nexport const WITH = 'with';\nexport const AS = 'as';\nexport const SCHEMA = 'schema';\n\nexport const AND = 'AND';\nexport const OR = 'OR';\nexport const LOGICAL_OPERATORS = [AND, OR];\n\nexport const EQUALS = '=';\nexport const NOT_EQUALS = '!=';\nexport const COMPARISON_OPERATORS = [EQUALS, NOT_EQUALS];\n\nexport const STD_OPERATORS = [...COMPARISON_OPERATORS];\n\nexport const conf: monacoTypes.languages.LanguageConfiguration = {\n  comments: {\n    lineComment: '--',\n    blockComment: ['/*', '*/'],\n  },\n  brackets: [\n    ['{', '}'],\n    ['[', ']'],\n    ['(', ')'],\n  ],\n  autoClosingPairs: [\n    { open: '{', close: '}' },\n    { open: '[', close: ']' },\n    { open: '(', close: ')' },\n    { open: '\"', close: '\"' },\n    { open: \"'\", close: \"'\" },\n  ],\n  surroundingPairs: [\n    { open: '{', close: '}' },\n    { open: '[', close: ']' },\n    { open: '(', close: ')' },\n    { open: '\"', close: '\"' },\n    { open: \"'\", close: \"'\" },\n  ],\n};\n\n// based on https://github.com/microsoft/monaco-editor/blob/main/src/basic-languages/sql/sql.ts\nexport const language: SQLMonarchLanguage = {\n  defaultToken: '',\n  tokenPostfix: '.sql',\n  ignoreCase: true,\n\n  brackets: [\n    { open: '[', close: ']', token: 'delimiter.square' },\n    { open: '(', close: ')', token: 'delimiter.parenthesis' },\n  ],\n\n  keywords: [\n    'ABORT',\n    'ABSOLUTE',\n    'ACTION',\n    'ADA',\n    'ADD',\n    'AFTER',\n    'ALL',\n    'ALLOCATE',\n    'ALTER',\n    'ALWAYS',\n    'ANALYZE',\n    'AND',\n    'ANY',\n    'ARE',\n    'AS',\n    'ASC',\n    'ASSERTION',\n    'AT',\n    'ATTACH',\n    'AUTHORIZATION',\n    'AUTOINCREMENT',\n    'AVG',\n    'BACKUP',\n    'BEFORE',\n    'BEGIN',\n    'BETWEEN',\n    'BIT',\n    'BIT_LENGTH',\n    'BOTH',\n    'BREAK',\n    'BROWSE',\n    'BULK',\n    'BY',\n    'CASCADE',\n    'CASCADED',\n    'CASE',\n    'CAST',\n    'CATALOG',\n    'CHAR',\n    'CHARACTER',\n    'CHARACTER_LENGTH',\n    'CHAR_LENGTH',\n    'CHECK',\n    'CHECKPOINT',\n    'CLOSE',\n    'CLUSTERED',\n    'COALESCE',\n    'COLLATE',\n    'COLLATION',\n    'COLUMN',\n    'COMMIT',\n    'COMPUTE',\n    'CONFLICT',\n    'CONNECT',\n    'CONNECTION',\n    'CONSTRAINT',\n    'CONSTRAINTS',\n    'CONTAINS',\n    'CONTAINSTABLE',\n    'CONTINUE',\n    'CONVERT',\n    'CORRESPONDING',\n    'COUNT',\n    'CREATE',\n    'CROSS',\n    'CURRENT',\n    'CURRENT_DATE',\n    'CURRENT_TIME',\n    'CURRENT_TIMESTAMP',\n    'CURRENT_USER',\n    'CURSOR',\n    'DATABASE',\n    'DATE',\n    'DAY',\n    'DBCC',\n    'DEALLOCATE',\n    'DEC',\n    'DECIMAL',\n    'DECLARE',\n    'DEFAULT',\n    'DEFERRABLE',\n    'DEFERRED',\n    'DELETE',\n    'DENY',\n    'DESC',\n    'DESCRIBE',\n    'DESCRIPTOR',\n    'DETACH',\n    'DIAGNOSTICS',\n    'DISCONNECT',\n    'DISK',\n    'DISTINCT',\n    'DISTRIBUTED',\n    'DO',\n    'DOMAIN',\n    'DOUBLE',\n    'DROP',\n    'DUMP',\n    'EACH',\n    'ELSE',\n    'END',\n    'END-EXEC',\n    'ERRLVL',\n    'ESCAPE',\n    'EXCEPT',\n    'EXCEPTION',\n    'EXCLUDE',\n    'EXCLUSIVE',\n    'EXEC',\n    'EXECUTE',\n    'EXISTS',\n    'EXIT',\n    'EXPLAIN',\n    'EXTERNAL',\n    'EXTRACT',\n    'FAIL',\n    'FALSE',\n    'FETCH',\n    'FILE',\n    'FILLFACTOR',\n    'FILTER',\n    'FIRST',\n    'FLOAT',\n    'FOLLOWING',\n    'FOR',\n    'FOREIGN',\n    'FORTRAN',\n    'FOUND',\n    'FREETEXT',\n    'FREETEXTTABLE',\n    'FROM',\n    'FULL',\n    'FUNCTION',\n    'GENERATED',\n    'GET',\n    'GLOB',\n    'GLOBAL',\n    'GO',\n    'GOTO',\n    'GRANT',\n    'GROUP',\n    'GROUPS',\n    'HAVING',\n    'HOLDLOCK',\n    'HOUR',\n    'IDENTITY',\n    'IDENTITYCOL',\n    'IDENTITY_INSERT',\n    'IF',\n    'IGNORE',\n    'IMMEDIATE',\n    'IN',\n    'INCLUDE',\n    'INDEX',\n    'INDEXED',\n    'INDICATOR',\n    'INITIALLY',\n    'INNER',\n    'INPUT',\n    'INSENSITIVE',\n    'INSERT',\n    'INSTEAD',\n    'INT',\n    'INTEGER',\n    'INTERSECT',\n    'INTERVAL',\n    'INTO',\n    'IS',\n    'ISNULL',\n    'ISOLATION',\n    'JOIN',\n    'KEY',\n    'KILL',\n    'LANGUAGE',\n    'LAST',\n    'LEADING',\n    'LEFT',\n    'LEVEL',\n    'LIKE',\n    'LIMIT',\n    'LINENO',\n    'LOAD',\n    'LOCAL',\n    'LOWER',\n    'MATCH',\n    'MATERIALIZED',\n    'MAX',\n    'MERGE',\n    'MIN',\n    'MINUTE',\n    'MODULE',\n    'MONTH',\n    'NAMES',\n    'NATIONAL',\n    'NATURAL',\n    'NCHAR',\n    'NEXT',\n    'NO',\n    'NOCHECK',\n    'NONCLUSTERED',\n    'NONE',\n    'NOT',\n    'NOTHING',\n    'NOTNULL',\n    'NULL',\n    'NULLIF',\n    'NULLS',\n    'NUMERIC',\n    'OCTET_LENGTH',\n    'OF',\n    'OFF',\n    'OFFSET',\n    'OFFSETS',\n    'ON',\n    'ONLY',\n    'OPEN',\n    'OPENDATASOURCE',\n    'OPENQUERY',\n    'OPENROWSET',\n    'OPENXML',\n    'OPTION',\n    'OR',\n    'ORDER',\n    'OTHERS',\n    'OUTER',\n    'OUTPUT',\n    'OVER',\n    'OVERLAPS',\n    'PAD',\n    'PARTIAL',\n    'PARTITION',\n    'PASCAL',\n    'PERCENT',\n    'PIVOT',\n    'PLAN',\n    'POSITION',\n    'PRAGMA',\n    'PRECEDING',\n    'PRECISION',\n    'PREPARE',\n    'PRESERVE',\n    'PRIMARY',\n    'PRINT',\n    'PRIOR',\n    'PRIVILEGES',\n    'PROC',\n    'PROCEDURE',\n    'PUBLIC',\n    'QUERY',\n    'RAISE',\n    'RAISERROR',\n    'RANGE',\n    'READ',\n    'READTEXT',\n    'REAL',\n    'RECONFIGURE',\n    'RECURSIVE',\n    'REFERENCES',\n    'REGEXP',\n    'REINDEX',\n    'RELATIVE',\n    'RELEASE',\n    'RENAME',\n    'REPLACE',\n    'REPLICATION',\n    'RESTORE',\n    'RESTRICT',\n    'RETURN',\n    'RETURNING',\n    'REVERT',\n    'REVOKE',\n    'RIGHT',\n    'ROLLBACK',\n    'ROW',\n    'ROWCOUNT',\n    'ROWGUIDCOL',\n    'ROWS',\n    'RULE',\n    'SAVE',\n    'SAVEPOINT',\n    'SCHEMA',\n    'SCROLL',\n    'SECOND',\n    'SECTION',\n    'SECURITYAUDIT',\n    'SELECT',\n    'SEMANTICKEYPHRASETABLE',\n    'SEMANTICSIMILARITYDETAILSTABLE',\n    'SEMANTICSIMILARITYTABLE',\n    'SESSION',\n    'SESSION_USER',\n    'SET',\n    'SETUSER',\n    'SHUTDOWN',\n    'SIZE',\n    'SMALLINT',\n    'SOME',\n    'SPACE',\n    'SQL',\n    'SQLCA',\n    'SQLCODE',\n    'SQLERROR',\n    'SQLSTATE',\n    'SQLWARNING',\n    'STATISTICS',\n    'SUBSTRING',\n    'SUM',\n    'SYSTEM_USER',\n    'TABLE',\n    'TABLESAMPLE',\n    'TEMP',\n    'TEMPORARY',\n    'TEXTSIZE',\n    'THEN',\n    'TIES',\n    'TIME',\n    'TIMESTAMP',\n    'TIMEZONE_HOUR',\n    'TIMEZONE_MINUTE',\n    'TO',\n    'TOP',\n    'TRAILING',\n    'TRAN',\n    'TRANSACTION',\n    'TRANSLATE',\n    'TRANSLATION',\n    'TRIGGER',\n    'TRIM',\n    'TRUE',\n    'TRUNCATE',\n    'TRY_CONVERT',\n    'TSEQUAL',\n    'UNBOUNDED',\n    'UNION',\n    'UNIQUE',\n    'UNKNOWN',\n    'UNPIVOT',\n    'UPDATE',\n    'UPDATETEXT',\n    'UPPER',\n    'USAGE',\n    'USE',\n    'USER',\n    'USING',\n    'VACUUM',\n    'VALUE',\n    'VALUES',\n    'VARCHAR',\n    'VARYING',\n    'VIEW',\n    'VIRTUAL',\n    'WAITFOR',\n    'WHEN',\n    'WHENEVER',\n    'WHERE',\n    'WHILE',\n    'WINDOW',\n    'WITH',\n    'WITHIN GROUP',\n    'WITHOUT',\n    'WORK',\n    'WRITE',\n    'WRITETEXT',\n    'YEAR',\n    'ZONE',\n  ],\n  operators: [\n    // Set\n    'EXCEPT',\n    'INTERSECT',\n    'UNION',\n    // Join\n    'APPLY',\n    'CROSS',\n    'FULL',\n    'INNER',\n    'JOIN',\n    'LEFT',\n    'OUTER',\n    'RIGHT',\n    // Predicates\n    'CONTAINS',\n    'FREETEXT',\n    'IS',\n    'NULL',\n    // Pivoting\n    'PIVOT',\n    'UNPIVOT',\n    // Merging\n    'MATCHED',\n  ],\n  logicalOperators: ['ALL', 'AND', 'ANY', 'BETWEEN', 'EXISTS', 'IN', 'LIKE', 'NOT', 'OR', 'SOME'],\n  comparisonOperators: ['<>', '>', '<', '>=', '<=', '=', '!=', '&', '~', '^', '%'],\n\n  builtinFunctions: [\n    // Aggregate\n    'AVG',\n    'CHECKSUM_AGG',\n    'COUNT',\n    'COUNT_BIG',\n    'GROUPING',\n    'GROUPING_ID',\n    'MAX',\n    'MIN',\n    'SUM',\n    'STDEV',\n    'STDEVP',\n    'VAR',\n    'VARP',\n    // Analytic\n    'CUME_DIST',\n    'FIRST_VALUE',\n    'LAG',\n    'LAST_VALUE',\n    'LEAD',\n    'PERCENTILE_CONT',\n    'PERCENTILE_DISC',\n    'PERCENT_RANK',\n    // Collation\n    'COLLATE',\n    'COLLATIONPROPERTY',\n    'TERTIARY_WEIGHTS',\n    // Azure\n    'FEDERATION_FILTERING_VALUE',\n    // Conversion\n    'CAST',\n    'CONVERT',\n    'PARSE',\n    'TRY_CAST',\n    'TRY_CONVERT',\n    'TRY_PARSE',\n    // Cryptographic\n    'ASYMKEY_ID',\n    'ASYMKEYPROPERTY',\n    'CERTPROPERTY',\n    'CERT_ID',\n    'CRYPT_GEN_RANDOM',\n    'DECRYPTBYASYMKEY',\n    'DECRYPTBYCERT',\n    'DECRYPTBYKEY',\n    'DECRYPTBYKEYAUTOASYMKEY',\n    'DECRYPTBYKEYAUTOCERT',\n    'DECRYPTBYPASSPHRASE',\n    'ENCRYPTBYASYMKEY',\n    'ENCRYPTBYCERT',\n    'ENCRYPTBYKEY',\n    'ENCRYPTBYPASSPHRASE',\n    'HASHBYTES',\n    'IS_OBJECTSIGNED',\n    'KEY_GUID',\n    'KEY_ID',\n    'KEY_NAME',\n    'SIGNBYASYMKEY',\n    'SIGNBYCERT',\n    'SYMKEYPROPERTY',\n    'VERIFYSIGNEDBYCERT',\n    'VERIFYSIGNEDBYASYMKEY',\n    // Cursor\n    'CURSOR_STATUS',\n    // Datatype\n    'DATALENGTH',\n    'IDENT_CURRENT',\n    'IDENT_INCR',\n    'IDENT_SEED',\n    'IDENTITY',\n    'SQL_VARIANT_PROPERTY',\n    // Datetime\n    'CURRENT_TIMESTAMP',\n    'DATEADD',\n    'DATEDIFF',\n    'DATEFROMPARTS',\n    'DATENAME',\n    'DATEPART',\n    'DATETIME2FROMPARTS',\n    'DATETIMEFROMPARTS',\n    'DATETIMEOFFSETFROMPARTS',\n    'DAY',\n    'EOMONTH',\n    'GETDATE',\n    'GETUTCDATE',\n    'ISDATE',\n    'MONTH',\n    'SMALLDATETIMEFROMPARTS',\n    'SWITCHOFFSET',\n    'SYSDATETIME',\n    'SYSDATETIMEOFFSET',\n    'SYSUTCDATETIME',\n    'TIMEFROMPARTS',\n    'TODATETIMEOFFSET',\n    'YEAR',\n    // Logical\n    'CHOOSE',\n    'COALESCE',\n    'IIF',\n    'NULLIF',\n    // Mathematical\n    'ABS',\n    'ACOS',\n    'ASIN',\n    'ATAN',\n    'ATN2',\n    'CEILING',\n    'COS',\n    'COT',\n    'DEGREES',\n    'EXP',\n    'FLOOR',\n    'LOG',\n    'LOG10',\n    'PI',\n    'POWER',\n    'RADIANS',\n    'RAND',\n    'ROUND',\n    'SIGN',\n    'SIN',\n    'SQRT',\n    'SQUARE',\n    'TAN',\n    // Metadata\n    'APP_NAME',\n    'APPLOCK_MODE',\n    'APPLOCK_TEST',\n    'ASSEMBLYPROPERTY',\n    'COL_LENGTH',\n    'COL_NAME',\n    'COLUMNPROPERTY',\n    'DATABASE_PRINCIPAL_ID',\n    'DATABASEPROPERTYEX',\n    'DB_ID',\n    'DB_NAME',\n    'FILE_ID',\n    'FILE_IDEX',\n    'FILE_NAME',\n    'FILEGROUP_ID',\n    'FILEGROUP_NAME',\n    'FILEGROUPPROPERTY',\n    'FILEPROPERTY',\n    'FULLTEXTCATALOGPROPERTY',\n    'FULLTEXTSERVICEPROPERTY',\n    'INDEX_COL',\n    'INDEXKEY_PROPERTY',\n    'INDEXPROPERTY',\n    'OBJECT_DEFINITION',\n    'OBJECT_ID',\n    'OBJECT_NAME',\n    'OBJECT_SCHEMA_NAME',\n    'OBJECTPROPERTY',\n    'OBJECTPROPERTYEX',\n    'ORIGINAL_DB_NAME',\n    'PARSENAME',\n    'SCHEMA_ID',\n    'SCHEMA_NAME',\n    'SCOPE_IDENTITY',\n    'SERVERPROPERTY',\n    'STATS_DATE',\n    'TYPE_ID',\n    'TYPE_NAME',\n    'TYPEPROPERTY',\n    // Ranking\n    'DENSE_RANK',\n    'NTILE',\n    'RANK',\n    'ROW_NUMBER',\n    // Replication\n    'PUBLISHINGSERVERNAME',\n    // Rowset\n    'OPENDATASOURCE',\n    'OPENQUERY',\n    'OPENROWSET',\n    'OPENXML',\n    // Security\n    'CERTENCODED',\n    'CERTPRIVATEKEY',\n    'CURRENT_USER',\n    'HAS_DBACCESS',\n    'HAS_PERMS_BY_NAME',\n    'IS_MEMBER',\n    'IS_ROLEMEMBER',\n    'IS_SRVROLEMEMBER',\n    'LOGINPROPERTY',\n    'ORIGINAL_LOGIN',\n    'PERMISSIONS',\n    'PWDENCRYPT',\n    'PWDCOMPARE',\n    'SESSION_USER',\n    'SESSIONPROPERTY',\n    'SUSER_ID',\n    'SUSER_NAME',\n    'SUSER_SID',\n    'SUSER_SNAME',\n    'SYSTEM_USER',\n    'USER',\n    'USER_ID',\n    'USER_NAME',\n    // String\n    'ASCII',\n    'CHAR',\n    'CHARINDEX',\n    'CONCAT',\n    'DIFFERENCE',\n    'FORMAT',\n    'LEFT',\n    'LEN',\n    'LOWER',\n    'LTRIM',\n    'NCHAR',\n    'PATINDEX',\n    'QUOTENAME',\n    'REPLACE',\n    'REPLICATE',\n    'REVERSE',\n    'RIGHT',\n    'RTRIM',\n    'SOUNDEX',\n    'SPACE',\n    'STR',\n    'STUFF',\n    'SUBSTRING',\n    'UNICODE',\n    'UPPER',\n    // System\n    'BINARY_CHECKSUM',\n    'CHECKSUM',\n    'CONNECTIONPROPERTY',\n    'CONTEXT_INFO',\n    'CURRENT_REQUEST_ID',\n    'ERROR_LINE',\n    'ERROR_NUMBER',\n    'ERROR_MESSAGE',\n    'ERROR_PROCEDURE',\n    'ERROR_SEVERITY',\n    'ERROR_STATE',\n    'FORMATMESSAGE',\n    'GETANSINULL',\n    'GET_FILESTREAM_TRANSACTION_CONTEXT',\n    'HOST_ID',\n    'HOST_NAME',\n    'ISNULL',\n    'ISNUMERIC',\n    'MIN_ACTIVE_ROWVERSION',\n    'NEWID',\n    'NEWSEQUENTIALID',\n    'ROWCOUNT_BIG',\n    'XACT_STATE',\n    // TextImage\n    'TEXTPTR',\n    'TEXTVALID',\n    // Trigger\n    'COLUMNS_UPDATED',\n    'EVENTDATA',\n    'TRIGGER_NESTLEVEL',\n    'UPDATE',\n    // ChangeTracking\n    'CHANGETABLE',\n    'CHANGE_TRACKING_CONTEXT',\n    'CHANGE_TRACKING_CURRENT_VERSION',\n    'CHANGE_TRACKING_IS_COLUMN_IN_MASK',\n    'CHANGE_TRACKING_MIN_VALID_VERSION',\n    // FullTextSearch\n    'CONTAINSTABLE',\n    'FREETEXTTABLE',\n    // SemanticTextSearch\n    'SEMANTICKEYPHRASETABLE',\n    'SEMANTICSIMILARITYDETAILSTABLE',\n    'SEMANTICSIMILARITYTABLE',\n    // FileStream\n    'FILETABLEROOTPATH',\n    'GETFILENAMESPACEPATH',\n    'GETPATHLOCATOR',\n    'PATHNAME',\n    // ServiceBroker\n    'GET_TRANSMISSION_STATUS',\n  ],\n  builtinVariables: [\n    // Configuration\n    '@@DATEFIRST',\n    '@@DBTS',\n    '@@LANGID',\n    '@@LANGUAGE',\n    '@@LOCK_TIMEOUT',\n    '@@MAX_CONNECTIONS',\n    '@@MAX_PRECISION',\n    '@@NESTLEVEL',\n    '@@OPTIONS',\n    '@@REMSERVER',\n    '@@SERVERNAME',\n    '@@SERVICENAME',\n    '@@SPID',\n    '@@TEXTSIZE',\n    '@@VERSION',\n    // Cursor\n    '@@CURSOR_ROWS',\n    '@@FETCH_STATUS',\n    // Datetime\n    '@@DATEFIRST',\n    // Metadata\n    '@@PROCID',\n    // System\n    '@@ERROR',\n    '@@IDENTITY',\n    '@@ROWCOUNT',\n    '@@TRANCOUNT',\n    // Stats\n    '@@CONNECTIONS',\n    '@@CPU_BUSY',\n    '@@IDLE',\n    '@@IO_BUSY',\n    '@@PACKET_ERRORS',\n    '@@PACK_RECEIVED',\n    '@@PACK_SENT',\n    '@@TIMETICKS',\n    '@@TOTAL_ERRORS',\n    '@@TOTAL_READ',\n    '@@TOTAL_WRITE',\n  ],\n  pseudoColumns: ['$ACTION', '$IDENTITY', '$ROWGUID', '$PARTITION'],\n  tokenizer: {\n    root: [\n      { include: '@templateVariables' },\n      { include: '@macros' },\n      { include: '@comments' },\n      { include: '@whitespace' },\n      { include: '@pseudoColumns' },\n      { include: '@numbers' },\n      { include: '@strings' },\n      { include: '@complexIdentifiers' },\n      { include: '@scopes' },\n      { include: '@schemaTable' },\n      [/[;,.]/, 'delimiter'],\n      [/[()]/, '@brackets'],\n      [\n        /[\\w@#$|<|>|=|!|%|&|+|\\|-|*|/|~|^]+/,\n        {\n          cases: {\n            '@operators': 'operator',\n            '@comparisonOperators': 'operator',\n            '@logicalOperators': 'operator',\n            '@builtinVariables': 'predefined',\n            '@builtinFunctions': 'predefined',\n            '@keywords': 'keyword',\n            '@default': 'identifier',\n          },\n        },\n      ],\n    ],\n    templateVariables: [[/\\$[a-zA-Z0-9]+/, 'variable']],\n    macros: [[/\\$__[a-zA-Z0-9-_]+/, 'type']],\n    schemaTable: [\n      [/(\\w+)\\./, 'identifier'],\n      [/(\\w+\\.\\w+)/, 'identifier'],\n    ],\n    whitespace: [[/\\s+/, 'white']],\n    comments: [\n      [/--+.*/, 'comment'],\n      [/\\/\\*/, { token: 'comment.quote', next: '@comment' }],\n    ],\n    comment: [\n      [/[^*/]+/, 'comment'],\n      // Not supporting nested comments, as nested comments seem to not be standard?\n      // i.e. http://stackoverflow.com/questions/728172/are-there-multiline-comment-delimiters-in-sql-that-are-vendor-agnostic\n      // [/\\/\\*/, { token: 'comment.quote', next: '@push' }],    // nested comment not allowed :-(\n      [/\\*\\//, { token: 'comment.quote', next: '@pop' }],\n      [/./, 'comment'],\n    ],\n    pseudoColumns: [\n      [\n        /[$][A-Za-z_][\\w@#$]*/,\n        {\n          cases: {\n            '@pseudoColumns': 'predefined',\n            '@default': 'identifier',\n          },\n        },\n      ],\n    ],\n    numbers: [\n      [/0[xX][0-9a-fA-F]*/, 'number'],\n      [/[$][+-]*\\d*(\\.\\d*)?/, 'number'],\n      [/((\\d+(\\.\\d*)?)|(\\.\\d+))([eE][\\-+]?\\d+)?/, 'number'],\n    ],\n    strings: [\n      [/N'/, { token: 'string', next: '@string' }],\n      [/'/, { token: 'string', next: '@string' }],\n    ],\n    string: [\n      [/[^']+/, 'string'],\n      [/''/, 'string'],\n      [/'/, { token: 'string', next: '@pop' }],\n    ],\n    complexIdentifiers: [\n      [/\\[/, { token: 'identifier.quote', next: '@bracketedIdentifier' }],\n      [/\"/, { token: 'identifier.quote', next: '@quotedIdentifier' }],\n    ],\n    bracketedIdentifier: [\n      [/[^\\]]+/, 'identifier'],\n      [/]]/, 'identifier'],\n      [/]/, { token: 'identifier.quote', next: '@pop' }],\n    ],\n    quotedIdentifier: [\n      [/[^\"]+/, 'identifier'],\n      [/\"\"/, 'identifier'],\n      [/\"/, { token: 'identifier.quote', next: '@pop' }],\n    ],\n    scopes: [\n      [/BEGIN\\s+(DISTRIBUTED\\s+)?TRAN(SACTION)?\\b/i, 'keyword'],\n      [/BEGIN\\s+TRY\\b/i, { token: 'keyword.try' }],\n      [/END\\s+TRY\\b/i, { token: 'keyword.try' }],\n      [/BEGIN\\s+CATCH\\b/i, { token: 'keyword.catch' }],\n      [/END\\s+CATCH\\b/i, { token: 'keyword.catch' }],\n      [/(BEGIN|CASE)\\b/i, { token: 'keyword.block' }],\n      [/END\\b/i, { token: 'keyword.block' }],\n      [/WHEN\\b/i, { token: 'keyword.choice' }],\n      [/THEN\\b/i, { token: 'keyword.choice' }],\n    ],\n  },\n};\n","import { FROM, SCHEMA, SELECT } from '../standardSql/language';\nimport { TokenType } from '../types';\nimport { type LinkedToken } from './LinkedToken';\n\nexport const getSelectToken = (currentToken: LinkedToken | null) =>\n  currentToken?.getPreviousOfType(TokenType.Keyword, SELECT) ?? null;\n\nexport const getSelectStatisticToken = (currentToken: LinkedToken | null) => {\n  const assumedStatisticToken = getSelectToken(currentToken)?.getNextNonWhiteSpaceToken();\n  return assumedStatisticToken?.isVariable() || assumedStatisticToken?.isFunction() ? assumedStatisticToken : null;\n};\n\nexport const getMetricNameToken = (currentToken: LinkedToken | null) => {\n  // statistic function is followed by `(` and then an argument\n  const assumedMetricNameToken = getSelectStatisticToken(currentToken)?.next?.next;\n  return assumedMetricNameToken?.isVariable() || assumedMetricNameToken?.isIdentifier() ? assumedMetricNameToken : null;\n};\n\nexport const getFromKeywordToken = (currentToken: LinkedToken | null) => {\n  const selectToken = getSelectToken(currentToken);\n  return selectToken?.getNextOfType(TokenType.Keyword, FROM);\n};\n\nexport const getNamespaceToken = (currentToken: LinkedToken | null) => {\n  const fromToken = getFromKeywordToken(currentToken);\n  const nextNonWhiteSpace = fromToken?.getNextNonWhiteSpaceToken();\n\n  if (\n    nextNonWhiteSpace?.isDoubleQuotedString() ||\n    (nextNonWhiteSpace?.isVariable() && nextNonWhiteSpace?.value.toUpperCase() !== SCHEMA)\n  ) {\n    // schema is not used\n    return nextNonWhiteSpace;\n  } else if (nextNonWhiteSpace?.isKeyword() && nextNonWhiteSpace.next?.is(TokenType.Parenthesis, '(')) {\n    // schema is specified\n    const assumedNamespaceToken = nextNonWhiteSpace.next?.next;\n    if (assumedNamespaceToken?.isDoubleQuotedString() || assumedNamespaceToken?.isVariable()) {\n      return assumedNamespaceToken;\n    }\n  }\n  return null;\n};\nexport const getTableToken = (currentToken: LinkedToken | null) => {\n  const fromToken = getFromKeywordToken(currentToken);\n  const nextNonWhiteSpace = fromToken?.getNextNonWhiteSpaceToken();\n  if (nextNonWhiteSpace?.isVariable()) {\n    // TODO: resolve column from variable?\n    return null;\n  } else if (nextNonWhiteSpace?.isKeyword() && nextNonWhiteSpace.next?.is(TokenType.Parenthesis, '(')) {\n    return null;\n  } else {\n    return nextNonWhiteSpace;\n  }\n};\n\nexport const defaultTableNameParser = (token: LinkedToken | null | undefined) => {\n  const parts = token?.value.split('.');\n\n  if (parts?.length === 1) {\n    return { table: parts[0] };\n  } else if (parts?.length === 2) {\n    return { schema: parts[0], table: parts[1] };\n  } else if (parts?.length === 3) {\n    return { catalog: parts[0], schema: parts[1], table: parts[2] };\n  }\n\n  return null;\n};\n","export const TRIGGER_SUGGEST = {\n  id: 'editor.action.triggerSuggest',\n  title: '',\n};\n","import { type Registry } from '@grafana/data';\nimport { getTemplateSrv } from '@grafana/runtime';\nimport { TRIGGER_SUGGEST } from '../utils/commands';\nimport {\n  CompletionItemInsertTextRule,\n  CompletionItemKind,\n  CompletionItemPriority,\n  MacroType,\n  OperatorType,\n  SuggestionKind,\n} from '../types';\nimport { ASC, DESC } from './language';\nimport {\n  type FunctionsRegistryItem,\n  type MacrosRegistryItem,\n  type OperatorsRegistryItem,\n  type SuggestionsRegistryItem,\n} from './types';\n\n/**\n * This registry glues particular SuggestionKind with an async function that provides completion items for it.\n * To add a new suggestion kind, SQLEditor should be configured with a provider that implements customSuggestionKinds.\n */\n\nexport const initStandardSuggestions =\n  (\n    functions: Registry<FunctionsRegistryItem>,\n    operators: Registry<OperatorsRegistryItem>,\n    macros: Registry<MacrosRegistryItem>\n  ) =>\n  (): SuggestionsRegistryItem[] => [\n    {\n      id: SuggestionKind.SelectKeyword,\n      name: SuggestionKind.SelectKeyword,\n      suggestions: (_, m) =>\n        Promise.resolve([\n          {\n            label: `SELECT <column>`,\n            insertText: `SELECT $0`,\n            insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n            kind: CompletionItemKind.Snippet,\n            command: TRIGGER_SUGGEST,\n            sortText: CompletionItemPriority.Medium,\n          },\n          {\n            label: `SELECT <column> FROM <table>`,\n            insertText: `SELECT $2 FROM $1`,\n            insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n            kind: CompletionItemKind.Snippet,\n            command: TRIGGER_SUGGEST,\n            sortText: CompletionItemPriority.Medium,\n          },\n        ]),\n    },\n    {\n      id: SuggestionKind.TemplateVariables,\n      name: SuggestionKind.TemplateVariables,\n      suggestions: (_, m) => {\n        const templateSrv = getTemplateSrv();\n        if (!templateSrv) {\n          return Promise.resolve([]);\n        }\n\n        return Promise.resolve(\n          templateSrv.getVariables().map((variable) => {\n            const label = `\\$${variable.name}`;\n            const val = templateSrv.replace(label);\n            return {\n              label,\n              detail: `(Template Variable) ${val}`,\n              kind: CompletionItemKind.Snippet,\n              documentation: `(Template Variable) ${val}`,\n              insertText: `\\\\$${variable.name} `,\n              insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n              command: TRIGGER_SUGGEST,\n              sortText: CompletionItemPriority.Low,\n            };\n          })\n        );\n      },\n    },\n    {\n      id: SuggestionKind.SelectMacro,\n      name: SuggestionKind.SelectMacro,\n      suggestions: (_, m) =>\n        Promise.resolve([\n          ...macros\n            .list()\n            .filter((m) => m.type === MacroType.Value || m.type === MacroType.Column)\n            .map(createMacroSuggestionItem),\n        ]),\n    },\n    {\n      id: SuggestionKind.TableMacro,\n      name: SuggestionKind.TableMacro,\n      suggestions: (_, m) =>\n        Promise.resolve([\n          ...macros\n            .list()\n            .filter((m) => m.type === MacroType.Table)\n            .map(createMacroSuggestionItem),\n        ]),\n    },\n    {\n      id: SuggestionKind.GroupMacro,\n      name: SuggestionKind.GroupMacro,\n      suggestions: (_, m) =>\n        Promise.resolve([\n          ...macros\n            .list()\n            .filter((m) => m.type === MacroType.Group)\n            .map(createMacroSuggestionItem),\n        ]),\n    },\n    {\n      id: SuggestionKind.FilterMacro,\n      name: SuggestionKind.FilterMacro,\n      suggestions: (_, m) =>\n        Promise.resolve([\n          ...macros\n            .list()\n            .filter((m) => m.type === MacroType.Filter)\n            .map(createMacroSuggestionItem),\n        ]),\n    },\n    {\n      id: SuggestionKind.WithKeyword,\n      name: SuggestionKind.WithKeyword,\n      suggestions: (_, m) =>\n        Promise.resolve([\n          {\n            label: `WITH <alias> AS ( ... )`,\n            insertText: `WITH $1  AS ( $2 )`,\n            insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n            kind: CompletionItemKind.Snippet,\n            command: TRIGGER_SUGGEST,\n            sortText: CompletionItemPriority.Medium,\n          },\n        ]),\n    },\n    {\n      id: SuggestionKind.StarWildCard,\n      name: SuggestionKind.StarWildCard,\n      suggestions: (_, m) =>\n        Promise.resolve([\n          {\n            label: '*',\n            insertText: `* $0`,\n            insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n            kind: CompletionItemKind.Field,\n            command: TRIGGER_SUGGEST,\n            sortText: CompletionItemPriority.High,\n          },\n        ]),\n    },\n    {\n      id: SuggestionKind.FunctionsWithArguments,\n      name: SuggestionKind.FunctionsWithArguments,\n      suggestions: (_, m) =>\n        Promise.resolve([\n          ...functions.list().map((f) => ({\n            label: f.name,\n            insertText: `${f.name}($0)`,\n            documentation: f.description,\n            insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n            kind: CompletionItemKind.Function,\n            command: TRIGGER_SUGGEST,\n            sortText: CompletionItemPriority.MediumLow,\n          })),\n        ]),\n    },\n    {\n      id: SuggestionKind.FunctionsWithoutArguments,\n      name: SuggestionKind.FunctionsWithoutArguments,\n      suggestions: (_, m) =>\n        Promise.resolve([\n          ...functions.list().map((f) => ({\n            label: f.name,\n            insertText: `${f.name}()`,\n            documentation: f.description,\n            insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n            kind: CompletionItemKind.Function,\n            command: TRIGGER_SUGGEST,\n            sortText: CompletionItemPriority.MediumHigh,\n          })),\n        ]),\n    },\n    {\n      id: SuggestionKind.FromKeyword,\n      name: SuggestionKind.FromKeyword,\n      suggestions: (_, m) =>\n        Promise.resolve([\n          {\n            label: 'FROM',\n            insertText: `FROM $0`,\n            command: TRIGGER_SUGGEST,\n            insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n            kind: CompletionItemKind.Keyword,\n          },\n        ]),\n    },\n    {\n      id: SuggestionKind.Schemas,\n      name: SuggestionKind.Schemas,\n      suggestions: (_, m) => Promise.resolve([]),\n    },\n    {\n      id: SuggestionKind.Tables,\n      name: SuggestionKind.Tables,\n      suggestions: (_, m) => Promise.resolve([]),\n    },\n    {\n      id: SuggestionKind.Columns,\n      name: SuggestionKind.Columns,\n      suggestions: (_, m) => Promise.resolve([]),\n    },\n    {\n      id: SuggestionKind.LogicalOperators,\n      name: SuggestionKind.LogicalOperators,\n      suggestions: (_, m) =>\n        Promise.resolve(\n          operators\n            .list()\n            .filter((o) => o.type === OperatorType.Logical)\n            .map((o) => ({\n              label: o.operator,\n              insertText: `${o.operator} `,\n              documentation: o.description,\n              command: TRIGGER_SUGGEST,\n              sortText: CompletionItemPriority.MediumHigh,\n              kind: CompletionItemKind.Operator,\n            }))\n        ),\n    },\n    {\n      id: SuggestionKind.WhereKeyword,\n      name: SuggestionKind.WhereKeyword,\n      suggestions: (_, m) =>\n        Promise.resolve([\n          {\n            label: 'WHERE',\n            insertText: `WHERE `,\n            command: TRIGGER_SUGGEST,\n            sortText: CompletionItemPriority.MediumHigh,\n            kind: CompletionItemKind.Keyword,\n          },\n        ]),\n    },\n    {\n      id: SuggestionKind.ComparisonOperators,\n      name: SuggestionKind.ComparisonOperators,\n      suggestions: (_, m) =>\n        Promise.resolve([\n          ...operators\n            .list()\n            .filter((o) => o.type === OperatorType.Comparison)\n            .map((o) => ({\n              label: o.operator,\n              insertText: `${o.operator} `,\n              documentation: o.description,\n              command: TRIGGER_SUGGEST,\n              sortText: CompletionItemPriority.MediumHigh,\n              kind: CompletionItemKind.Operator,\n            })),\n          {\n            label: 'IN (...)',\n            insertText: `IN ( $0 )`,\n            command: TRIGGER_SUGGEST,\n            sortText: CompletionItemPriority.Medium,\n            kind: CompletionItemKind.Operator,\n            insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n          },\n          {\n            label: 'NOT IN (...)',\n            insertText: `NOT IN ( $0 )`,\n            command: TRIGGER_SUGGEST,\n            sortText: CompletionItemPriority.Medium,\n            kind: CompletionItemKind.Operator,\n            insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n          },\n          {\n            label: 'IS',\n            insertText: `IS`,\n            command: TRIGGER_SUGGEST,\n            sortText: CompletionItemPriority.Medium,\n            kind: CompletionItemKind.Operator,\n          },\n          {\n            label: 'IS NOT',\n            insertText: `IS NOT`,\n            command: TRIGGER_SUGGEST,\n            sortText: CompletionItemPriority.Medium,\n            kind: CompletionItemKind.Operator,\n          },\n        ]),\n    },\n    {\n      id: SuggestionKind.GroupByKeywords,\n      name: SuggestionKind.GroupByKeywords,\n      suggestions: (_, m) =>\n        Promise.resolve([\n          {\n            label: 'GROUP BY',\n            insertText: `GROUP BY `,\n            command: TRIGGER_SUGGEST,\n            sortText: CompletionItemPriority.MediumHigh,\n            kind: CompletionItemKind.Keyword,\n          },\n        ]),\n    },\n    {\n      id: SuggestionKind.OrderByKeywords,\n      name: SuggestionKind.OrderByKeywords,\n      suggestions: (_, m) =>\n        Promise.resolve([\n          {\n            label: 'ORDER BY',\n            insertText: `ORDER BY `,\n            command: TRIGGER_SUGGEST,\n            sortText: CompletionItemPriority.Medium,\n            kind: CompletionItemKind.Keyword,\n          },\n          {\n            label: 'ORDER BY(ascending)',\n            insertText: `ORDER BY $1 ASC `,\n            command: TRIGGER_SUGGEST,\n            sortText: CompletionItemPriority.MediumLow,\n            kind: CompletionItemKind.Snippet,\n            insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n          },\n          {\n            label: 'ORDER BY(descending)',\n            insertText: `ORDER BY $1 DESC`,\n            command: TRIGGER_SUGGEST,\n            sortText: CompletionItemPriority.MediumLow,\n            kind: CompletionItemKind.Snippet,\n            insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n          },\n        ]),\n    },\n    {\n      id: SuggestionKind.LimitKeyword,\n      name: SuggestionKind.LimitKeyword,\n      suggestions: (_, m) =>\n        Promise.resolve([\n          {\n            label: 'LIMIT',\n            insertText: `LIMIT `,\n            command: TRIGGER_SUGGEST,\n            sortText: CompletionItemPriority.MediumLow,\n            kind: CompletionItemKind.Keyword,\n          },\n        ]),\n    },\n    {\n      id: SuggestionKind.SortOrderDirectionKeyword,\n      name: SuggestionKind.SortOrderDirectionKeyword,\n      suggestions: (_, m) =>\n        Promise.resolve(\n          [ASC, DESC].map((o) => ({\n            label: o,\n            insertText: `${o} `,\n            command: TRIGGER_SUGGEST,\n            kind: CompletionItemKind.Keyword,\n          }))\n        ),\n    },\n    {\n      id: SuggestionKind.NotKeyword,\n      name: SuggestionKind.NotKeyword,\n      suggestions: () =>\n        Promise.resolve([\n          {\n            label: 'NOT',\n            insertText: 'NOT',\n            command: TRIGGER_SUGGEST,\n            kind: CompletionItemKind.Keyword,\n            sortText: CompletionItemPriority.High,\n          },\n        ]),\n    },\n    {\n      id: SuggestionKind.BoolValues,\n      name: SuggestionKind.BoolValues,\n      suggestions: () =>\n        Promise.resolve(\n          ['TRUE', 'FALSE'].map((o) => ({\n            label: o,\n            insertText: `${o}`,\n            command: TRIGGER_SUGGEST,\n            kind: CompletionItemKind.Keyword,\n            sortText: CompletionItemPriority.Medium,\n          }))\n        ),\n    },\n    {\n      id: SuggestionKind.NullValue,\n      name: SuggestionKind.NullValue,\n      suggestions: () =>\n        Promise.resolve(\n          ['NULL'].map((o) => ({\n            label: o,\n            insertText: `${o}`,\n            command: TRIGGER_SUGGEST,\n            kind: CompletionItemKind.Keyword,\n            sortText: CompletionItemPriority.Low,\n          }))\n        ),\n    },\n  ];\n\nfunction createMacroSuggestionItem(m: MacrosRegistryItem) {\n  return {\n    label: m.name,\n    insertText: `${'\\\\' + m.text}${argsString(m.args)} `,\n    insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n    kind: CompletionItemKind.Snippet,\n    documentation: m.description,\n    command: TRIGGER_SUGGEST,\n  };\n}\n\nfunction argsString(args?: string[]): string {\n  if (!args) {\n    return '()';\n  }\n  return '('.concat(args.map((t, i) => `\\${${i}:${t}}`).join(', ')).concat(')');\n}\n","import { StatementPosition, TokenType } from '../types';\nimport { AND, AS, ASC, BY, DESC, FROM, GROUP, ORDER, SELECT, WHERE, WITH } from './language';\nimport { type StatementPositionResolversRegistryItem } from './types';\n\nexport function initStatementPositionResolvers(): StatementPositionResolversRegistryItem[] {\n  return [\n    {\n      id: StatementPosition.SelectKeyword,\n      name: StatementPosition.SelectKeyword,\n      resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n        Boolean(\n          currentToken === null ||\n            (currentToken.isWhiteSpace() && currentToken.previous === null) ||\n            currentToken.is(TokenType.Keyword, SELECT) ||\n            (currentToken.is(TokenType.Keyword, SELECT) && currentToken.previous === null) ||\n            previousIsSlash ||\n            (currentToken.isIdentifier() && (previousIsSlash || currentToken?.previous === null)) ||\n            (currentToken.isIdentifier() && SELECT.startsWith(currentToken.value.toLowerCase()))\n        ),\n    },\n    {\n      id: StatementPosition.WithKeyword,\n      name: StatementPosition.WithKeyword,\n      resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n        Boolean(\n          currentToken === null ||\n            (currentToken.isWhiteSpace() && currentToken.previous === null) ||\n            (currentToken.is(TokenType.Keyword, WITH) && currentToken.previous === null) ||\n            (currentToken.isIdentifier() && WITH.toLowerCase().startsWith(currentToken.value.toLowerCase()))\n        ),\n    },\n    {\n      id: StatementPosition.AfterSelectKeyword,\n      name: StatementPosition.AfterSelectKeyword,\n      resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n        Boolean(previousNonWhiteSpace?.value.toLowerCase() === SELECT),\n    },\n    {\n      id: StatementPosition.AfterSelectArguments,\n      name: StatementPosition.AfterSelectArguments,\n      resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n        return Boolean(previousKeyword?.value.toLowerCase() === SELECT && previousNonWhiteSpace?.value === ',');\n      },\n    },\n    {\n      id: StatementPosition.AfterSelectFuncFirstArgument,\n      name: StatementPosition.AfterSelectFuncFirstArgument,\n      resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n        return Boolean(\n          (previousKeyword?.value.toLowerCase() === SELECT || previousKeyword?.value.toLowerCase() === AS) &&\n            (previousNonWhiteSpace?.is(TokenType.Parenthesis, '(') || currentToken?.is(TokenType.Parenthesis, '()'))\n        );\n      },\n    },\n    {\n      id: StatementPosition.AfterWhereFunctionArgument,\n      name: StatementPosition.AfterWhereFunctionArgument,\n      resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n        return Boolean(\n          previousKeyword?.is(TokenType.Keyword, WHERE) &&\n            (previousNonWhiteSpace?.is(TokenType.Parenthesis, '(') || currentToken?.is(TokenType.Parenthesis, '()'))\n        );\n      },\n    },\n    {\n      id: StatementPosition.AfterGroupBy,\n      name: StatementPosition.AfterGroupBy,\n      resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n        Boolean(\n          previousKeyword?.is(TokenType.Keyword, BY) &&\n            previousKeyword?.getPreviousKeyword()?.is(TokenType.Keyword, GROUP) &&\n            (previousNonWhiteSpace?.isIdentifier() ||\n              previousNonWhiteSpace?.isDoubleQuotedString() ||\n              previousNonWhiteSpace?.is(TokenType.Parenthesis, ')') ||\n              previousNonWhiteSpace?.is(TokenType.Parenthesis, '()'))\n        ),\n    },\n    {\n      id: StatementPosition.SelectAlias,\n      name: StatementPosition.SelectAlias,\n      resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n        if (previousNonWhiteSpace?.value === ',' && previousKeyword?.value.toLowerCase() === AS) {\n          return true;\n        }\n\n        return false;\n      },\n    },\n\n    {\n      id: StatementPosition.FromKeyword,\n      name: StatementPosition.FromKeyword,\n      resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n        // cloudwatch specific commented out\n        // Boolean(previousKeyword?.value === SELECT && previousNonWhiteSpace?.isParenthesis()),\n        return Boolean(\n          (previousKeyword?.value.toLowerCase() === SELECT && previousNonWhiteSpace?.value !== ',') ||\n            ((currentToken?.isKeyword() || currentToken?.isIdentifier()) &&\n              FROM.toLowerCase().startsWith(currentToken.value.toLowerCase()))\n        );\n      },\n    },\n    {\n      id: StatementPosition.AfterFromKeyword,\n      name: StatementPosition.AfterFromKeyword,\n      resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n        Boolean(!currentToken?.value.includes('.') && previousNonWhiteSpace?.value.toLowerCase() === FROM),\n    },\n    {\n      id: StatementPosition.AfterSchema,\n      name: StatementPosition.AfterSchema,\n      resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n        // depending on whether the schema was the last token in the query or not, current token might be whitespace or dot. if whitespace, just use the previous token\n        if (currentToken?.isWhiteSpace() && currentToken?.next) {\n          currentToken = currentToken?.previous;\n          previousNonWhiteSpace = currentToken!.getPreviousNonWhiteSpaceToken();\n        }\n        return Boolean(\n          currentToken?.isIdentifier() &&\n            currentToken?.value.endsWith('.') &&\n            previousNonWhiteSpace?.value.toLowerCase() === FROM\n        );\n      },\n    },\n    {\n      id: StatementPosition.AfterFrom,\n      name: StatementPosition.AfterFrom,\n      resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n        Boolean(\n          (previousKeyword?.value.toLowerCase() === FROM && previousNonWhiteSpace?.isDoubleQuotedString()) ||\n            (previousKeyword?.value.toLowerCase() === FROM && previousNonWhiteSpace?.isIdentifier()) ||\n            (previousKeyword?.value.toLowerCase() === FROM && previousNonWhiteSpace?.isVariable())\n          //  cloudwatch specific\n          // (previousKeyword?.value === SCHEMA && previousNonWhiteSpace?.is(TokenType.Parenthesis, ')'))\n        ),\n    },\n    {\n      id: StatementPosition.AfterTable,\n      name: StatementPosition.AfterTable,\n      resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n        return Boolean(\n          previousKeyword?.value.toLowerCase() === FROM &&\n            (previousNonWhiteSpace?.isVariable() ||\n              (previousNonWhiteSpace?.value !== '' && previousNonWhiteSpace?.value.toLowerCase() !== FROM))\n        );\n      },\n    },\n    {\n      id: StatementPosition.WhereKeyword,\n      name: StatementPosition.WhereKeyword,\n      resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n        Boolean(\n          previousKeyword?.value.toLowerCase() === WHERE &&\n            (previousNonWhiteSpace?.isKeyword() ||\n              previousNonWhiteSpace?.is(TokenType.Parenthesis, '(') ||\n              previousNonWhiteSpace?.is(TokenType.Operator, AND))\n        ),\n    },\n    {\n      id: StatementPosition.WhereComparisonOperator,\n      name: StatementPosition.WhereComparisonOperator,\n      resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n        Boolean(\n          previousKeyword?.value.toLowerCase() === WHERE &&\n            !previousNonWhiteSpace?.getPreviousNonWhiteSpaceToken()?.isOperator() &&\n            !currentToken?.is(TokenType.Delimiter, '.') &&\n            !currentToken?.isParenthesis() &&\n            (previousNonWhiteSpace?.isIdentifier() || previousNonWhiteSpace?.isDoubleQuotedString())\n        ),\n    },\n    {\n      id: StatementPosition.WhereValue,\n      name: StatementPosition.WhereValue,\n      resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n        Boolean(previousKeyword?.value.toLowerCase() === WHERE && previousNonWhiteSpace?.isOperator()),\n    },\n    {\n      id: StatementPosition.AfterWhereValue,\n      name: StatementPosition.AfterWhereValue,\n      resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n        return Boolean(\n          previousKeyword?.value.toLowerCase() === WHERE &&\n            (previousNonWhiteSpace?.is(TokenType.Operator, 'and') ||\n              previousNonWhiteSpace?.is(TokenType.Operator, 'or') ||\n              previousNonWhiteSpace?.isString() ||\n              previousNonWhiteSpace?.isNumber() ||\n              previousNonWhiteSpace?.is(TokenType.Parenthesis, ')') ||\n              previousNonWhiteSpace?.is(TokenType.Parenthesis, '()') ||\n              previousNonWhiteSpace?.isTemplateVariable() ||\n              (previousNonWhiteSpace?.is(TokenType.IdentifierQuote) &&\n                previousNonWhiteSpace.getPreviousNonWhiteSpaceToken()?.is(TokenType.Identifier) &&\n                previousNonWhiteSpace\n                  ?.getPreviousNonWhiteSpaceToken()\n                  ?.getPreviousNonWhiteSpaceToken()\n                  ?.is(TokenType.IdentifierQuote)))\n        );\n      },\n    },\n    {\n      id: StatementPosition.AfterGroupByKeywords,\n      name: StatementPosition.AfterGroupByKeywords,\n      resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n        Boolean(\n          previousKeyword?.is(TokenType.Keyword, BY) &&\n            previousKeyword?.getPreviousKeyword()?.is(TokenType.Keyword, GROUP) &&\n            (previousNonWhiteSpace?.is(TokenType.Keyword, BY) || previousNonWhiteSpace?.is(TokenType.Delimiter, ','))\n        ),\n    },\n    {\n      id: StatementPosition.AfterGroupByFunctionArgument,\n      name: StatementPosition.AfterGroupByFunctionArgument,\n      resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n        return Boolean(\n          previousKeyword?.is(TokenType.Keyword, BY) &&\n            previousKeyword?.getPreviousKeyword()?.is(TokenType.Keyword, GROUP) &&\n            (previousNonWhiteSpace?.is(TokenType.Parenthesis, '(') || currentToken?.is(TokenType.Parenthesis, '()'))\n        );\n      },\n    },\n    {\n      id: StatementPosition.AfterOrderByKeywords,\n      name: StatementPosition.AfterOrderByKeywords,\n      resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n        Boolean(\n          previousNonWhiteSpace?.is(TokenType.Keyword, BY) &&\n            previousNonWhiteSpace?.getPreviousKeyword()?.is(TokenType.Keyword, ORDER)\n        ),\n    },\n    {\n      id: StatementPosition.AfterOrderByFunction,\n      name: StatementPosition.AfterOrderByFunction,\n      resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n        Boolean(\n          previousKeyword?.is(TokenType.Keyword, BY) &&\n            previousKeyword?.getPreviousKeyword()?.is(TokenType.Keyword, ORDER) &&\n            previousNonWhiteSpace?.is(TokenType.Parenthesis) &&\n            previousNonWhiteSpace?.getPreviousNonWhiteSpaceToken()?.is(TokenType.Function)\n        ),\n    },\n    {\n      id: StatementPosition.AfterOrderByDirection,\n      name: StatementPosition.AfterOrderByDirection,\n      resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n        Boolean(previousKeyword?.is(TokenType.Keyword, DESC) || previousKeyword?.is(TokenType.Keyword, ASC)),\n    },\n    {\n      id: StatementPosition.AfterIsOperator,\n      name: StatementPosition.AfterIsOperator,\n      resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n        return Boolean(previousNonWhiteSpace?.is(TokenType.Operator, 'IS'));\n      },\n    },\n    {\n      id: StatementPosition.AfterIsNotOperator,\n      name: StatementPosition.AfterIsNotOperator,\n      resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n        return Boolean(\n          previousNonWhiteSpace?.is(TokenType.Operator, 'NOT') &&\n            previousNonWhiteSpace.getPreviousNonWhiteSpaceToken()?.is(TokenType.Operator, 'IS')\n        );\n      },\n    },\n  ];\n}\n","import { attachDebugger, createLogger } from '@grafana/ui';\n\nlet sqlEditorLogger = { logger: () => {} };\nlet sqlEditorLog: (...t: any[]) => void = () => {};\n\nif (attachDebugger && createLogger) {\n  sqlEditorLogger = createLogger('SQLEditor');\n  sqlEditorLog = sqlEditorLogger.logger;\n  attachDebugger('sqleditor', undefined, sqlEditorLogger as any);\n}\n\nexport { sqlEditorLog, sqlEditorLogger };\n","import { MacroType } from '../types';\nimport { type MacrosRegistryItem } from './types';\n\nconst COLUMN = 'column',\n  RELATIVE_TIME_STRING = \"'5m'\";\n\nexport const MACROS: MacrosRegistryItem[] = [\n  {\n    id: '$__timeFilter(dateColumn)',\n    name: '$__timeFilter(dateColumn)',\n    text: '$__timeFilter',\n    args: [COLUMN],\n    type: MacroType.Filter,\n    description:\n      'Will be replaced by a time range filter using the specified column name. For example, dateColumn BETWEEN FROM_UNIXTIME(1494410783) AND FROM_UNIXTIME(1494410983)',\n  },\n  {\n    id: '$__timeFrom()',\n    name: '$__timeFrom()',\n    text: '$__timeFrom',\n    args: [],\n    type: MacroType.Filter,\n    description:\n      'Will be replaced by the start of the currently active time selection. For example, FROM_UNIXTIME(1494410783)',\n  },\n  {\n    id: '$__timeTo()',\n    name: '$__timeTo()',\n    text: '$__timeTo',\n    args: [],\n    type: MacroType.Filter,\n    description:\n      'Will be replaced by the end of the currently active time selection. For example, FROM_UNIXTIME(1494410983)',\n  },\n  {\n    id: \"$__timeGroup(dateColumn, '5m')\",\n    name: \"$__timeGroup(dateColumn, '5m')\",\n    text: '$__timeGroup',\n    args: [COLUMN, RELATIVE_TIME_STRING],\n    type: MacroType.Value,\n    description:\n      'Will be replaced by an expression usable in GROUP BY clause. For example, *cast(cast(UNIX_TIMESTAMP(dateColumn)/(300) as signed)*300 as signed),*',\n  },\n  {\n    id: '$__table',\n    name: '$__table',\n    text: '$__table',\n    args: [],\n    type: MacroType.Table,\n    description: 'Will be replaced by the query table.',\n  },\n  {\n    id: '$__column',\n    name: '$__column',\n    text: '$__column',\n    args: [],\n    type: MacroType.Column,\n    description: 'Will be replaced by the query column.',\n  },\n];\n\n/*\n  {\n    id: \"$__timeGroupAlias(dateColumn, '5m', fill)\",\n    name: \"$__timeGroupAlias(dateColumn, '5m', fill)\",\n    text: \"$__timeGroup\",\n    args: [COLUMN, RELATIVE_TIME_STRING , FILL_TYPE],\n    type: MacroType.Group,\n    description:\n      \"Will be replaced by an expression usable in GROUP BY clause. For example, *cast(cast(UNIX_TIMESTAMP(dateColumn)/(300) as signed)*300 as signed),* with an added column alias\",\n  },\n  {\n    id: \"$__unixEpochFilter(dateColumn)\",\n    name: \"$__unixEpochFilter(dateColumn)\",\n    text: \"$__unixEpochFilter\",\n    args: [COLUMN],\n    type: MacroType.Filter,\n    description:\n      \"Will be replaced by a time range filter using the specified column name with times represented as Unix timestamp. For example, dateColumn > 1494410783 AND dateColumn < 1494497183\",\n  },\n  {\n    id: \"$__unixEpochFrom()\",\n    name: \"$__unixEpochFrom()\",\n    text: \"$__unixEpochFrom\",\n    args: [],\n    type: MacroType.Value,\n    description:\n      \"Will be replaced by the start of the currently active time selection as Unix timestamp. For example, 1494410783\",\n  },\n  {\n    id: \"$__unixEpochTo()\",\n    name: \"$__unixEpochTo()\",\n    text: \"$__unixEpochTo\",\n    args: [],\n    type: MacroType.Value,\n    description:\n      \"Will be replaced by the end of the currently active time selection as Unix timestamp. For example, 1494410783\",\n  },\n  {\n    id: \"$__unixEpochNanoFilter(dateColumn)\",\n    name: \"$__unixEpochNanoFilter(dateColumn)\",\n    text: \"$__unixEpochNanoFilter\",\n    args: [COLUMN],\n    type: MacroType.Filter,\n    description:\n      \"Will be replaced by a time range filter using the specified column name with times represented as nanosecond timestamp. For example, dateColumn > 1494410783152415214 AND dateColumn < 1494497183142514872\",\n  },\n  {\n    id: \"$__unixEpochNanoFrom()\",\n    name: \"$__unixEpochNanoFrom()\",\n    text: \"$__unixEpochNanoFrom\",\n    args: [],\n    type: MacroType.Value,\n    description:\n      \"Will be replaced by the start of the currently active time selection as nanosecond timestamp. For example, 1494410783152415214\",\n  },\n  {\n    id: \"$__unixEpochNanoTo()\",\n    name: \"$__unixEpochNanoTo()\",\n    text: \"$__unixEpochNanoTo\",\n    args: [],\n    type: MacroType.Value,\n    description:\n      \"Will be replaced by the end of the currently active time selection as nanosecond timestamp. For example, 1494410783152415214\",\n  },\n  {\n    id: \"$__unixEpochGroup(dateColumn, '5m')\",\n    name: \"$__unixEpochGroup(dateColumn, '5m')\",\n    text: \"$__unixEpochGroup\",\n    args: [COLUMN, RELATIVE_TIME_STRING],\n    type: MacroType.Group,\n    description:\n      \"Will be replaced by an expression usable in GROUP BY clause. For values stored as unix timestamp.\",\n  },\n  {\n    id: \"$__unixEpochGroup(dateColumn, '5m', fill)\",\n    name: \"$__unixEpochGroup(dateColumn, '5m', fill)\",\n    text: \"$__unixEpochGroup\",\n    args: [COLUMN, RELATIVE_TIME_STRING, FILL_TYPE],\n    type: MacroType.Group,\n    description:\n      \"Will be replaced by an expression usable in GROUP BY clause. For values stored as unix timestamp. Missing values can be filled with 0, NULL or previous\",\n  },\n  {\n    id: \"$__timeEpoch(dateColumn, )\",\n    name: \"$__timeEpoch(dateColumn)\",\n    text: \"$__timeEpoch\",\n    args: [COLUMN],\n    type: MacroType.Value,\n    description:\n      \"Will be replaced by an expression to convert to a UNIX timestamp and rename the column to time_sec. For example, UNIX_TIMESTAMP(dateColumn) as time_sec\",\n  },\n  {\n    id: \"$__time(dateColumn)\",\n    name: \"$__time(dateColumn)\",\n    text: \"$__time\",\n    args: [COLUMN],\n    type: MacroType.Value,\n    description:\n      \"Will be replaced by an expression to convert to a UNIX timestamp and rename the column to time_sec. For example, UNIX_TIMESTAMP(dateColumn) as time_sec\",\n  },\n  {\n    id: \"$__timeGroup(dateColumn, '5m', fill)\",\n    name: \"$__timeGroup(dateColumn, '5m', fill)\",\n    text: \"$__timeGroup\",\n    args: [COLUMN, RELATIVE_TIME_STRING, FILL_TYPE],\n    type: MacroType.Value,\n    description:\n      \"Will be replaced by an expression usable in GROUP BY clause. For example, *cast(cast(UNIX_TIMESTAMP(dateColumn)/(300) as signed)*300 as signed),* missing values can be filled with 0, NULL or previous\",\n  },\n  */\n","import { type Monaco } from '@grafana/ui';\nimport { type Operator, OperatorType, type SQLCompletionItemProvider } from '../types';\nimport { MACROS } from './macros';\nimport { type SQLMonarchLanguage } from './types';\n\nexport function getStandardSQLCompletionProvider(\n  monaco: Monaco,\n  language: SQLMonarchLanguage\n): SQLCompletionItemProvider {\n  const provider: SQLCompletionItemProvider = { triggerCharacters: ['.', ' ', '$', ',', '(', \"'\"] };\n  if (language && Array.isArray(language.builtinFunctions)) {\n    provider.supportedFunctions = () => language.builtinFunctions!.map((f) => ({ id: f, name: f }));\n  }\n\n  const operators: Operator[] = [];\n  if (language?.comparisonOperators?.length) {\n    operators.push(\n      ...language.comparisonOperators.map((f) => ({\n        id: f.toLocaleLowerCase(),\n        operator: f,\n        type: OperatorType.Comparison,\n      }))\n    );\n  }\n\n  // some languages in the monaco language registry don't specify logical operators, only operators. if so, suggest them instead\n  language.logicalOperators = language.logicalOperators ?? language.operators;\n  if (language?.logicalOperators?.length) {\n    operators.push(\n      ...language.logicalOperators.map((f) => ({ id: f.toLocaleLowerCase(), operator: f, type: OperatorType.Logical }))\n    );\n  }\n\n  provider.supportedOperators = () => operators;\n\n  provider.supportedMacros = () => MACROS;\n\n  return provider;\n}\n","import { type LanguageDefinition } from '../types';\nimport { getStandardSQLCompletionProvider } from './standardSQLCompletionItemProvider';\n\nconst standardSQLLanguageDefinition: LanguageDefinition = {\n  id: 'standardSql',\n  extensions: ['.sql'],\n  aliases: ['sql'],\n  mimetypes: [],\n  loader: () => import('./language'),\n\n  completionProvider: getStandardSQLCompletionProvider,\n};\n\nexport default standardSQLLanguageDefinition;\n","import { useRef, useEffect, useMemo } from 'react';\n\n/**\n * Returns a stable callback that always calls the latest version of the provided callback.\n * Useful for avoiding stale closures in imperative APIs like Monaco editor callbacks.\n *\n * @param callback The callback function that may change between renders (can be undefined)\n * @returns A stable callback reference that always calls the latest version, or undefined if no callback provided\n */\nexport function useLatestCallback<T extends (...args: any[]) => unknown>(callback: T | undefined): T | undefined {\n  const ref = useRef(callback);\n\n  useEffect(() => {\n    ref.current = callback;\n  });\n\n  const hasCallback = Boolean(callback);\n\n  return useMemo(\n    () => (hasCallback ? (((...args: Parameters<T>) => ref.current!(...args)) as T) : undefined),\n    [hasCallback]\n  );\n}\n","import { CodeEditor, type Monaco, type monacoTypes } from '@grafana/ui';\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { getStatementPosition } from '../standardSql/getStatementPosition';\nimport { getStandardSuggestions } from '../standardSql/getStandardSuggestions';\nimport { initSuggestionsKindRegistry, type SuggestionKindRegistryItem } from '../standardSql/suggestionsKindRegistry';\nimport {\n  CompletionItemInsertTextRule,\n  CompletionItemKind,\n  CompletionItemPriority,\n  type CustomSuggestion,\n  type LanguageDefinition,\n  type PositionContext,\n  type SQLCompletionItemProvider,\n  type StatementPosition,\n  SuggestionKind,\n} from '../types';\nimport { getSuggestionKinds } from '../utils/getSuggestionKind';\nimport { linkedTokenBuilder } from '../utils/linkedTokenBuilder';\nimport { defaultTableNameParser, getTableToken } from '../utils/tokenUtils';\nimport { TRIGGER_SUGGEST } from '../utils/commands';\nimport { v4 } from 'uuid';\nimport { Registry } from '@grafana/data';\nimport {\n  type FunctionsRegistryItem,\n  type MacrosRegistryItem,\n  type OperatorsRegistryItem,\n  type StatementPositionResolversRegistryItem,\n  type SuggestionsRegistryItem,\n} from '../standardSql/types';\nimport { initStandardSuggestions } from '../standardSql/standardSuggestionsRegistry';\nimport { initStatementPositionResolvers } from '../standardSql/statementPositionResolversRegistry';\nimport { sqlEditorLog } from '../utils/debugger';\nimport standardSQLLanguageDefinition from '../standardSql/definition';\nimport { getStandardSQLCompletionProvider } from '../standardSql/standardSQLCompletionItemProvider';\nimport { useLatestCallback } from '../hooks/useLatestCallback';\n\nconst STANDARD_SQL_LANGUAGE = 'sql';\n\ninterface SQLEditorProps {\n  query: string;\n  /**\n   * Use for inspecting the query as it changes. I.e. for validation.\n   */\n  onChange?: (q: string, processQuery: boolean) => void;\n  onBlur?: (text: string) => void;\n  language?: LanguageDefinition;\n  children?: (props: { formatQuery: () => void }) => React.ReactNode;\n  width?: number;\n  height?: number;\n}\n\ninterface LanguageRegistries {\n  functions: Registry<FunctionsRegistryItem>;\n  operators: Registry<OperatorsRegistryItem>;\n  suggestionKinds: Registry<SuggestionKindRegistryItem>;\n  positionResolvers: Registry<StatementPositionResolversRegistryItem>;\n  macros: Registry<MacrosRegistryItem>;\n}\n\nconst LANGUAGES_CACHE = new Map<string, LanguageRegistries>();\nconst INSTANCE_CACHE = new Map<string, Registry<SuggestionsRegistryItem>>();\n\nexport const SQLEditor = ({\n  children,\n  onBlur,\n  onChange,\n  query,\n  language = { id: STANDARD_SQL_LANGUAGE },\n  width,\n  height,\n}: SQLEditorProps) => {\n  const monacoRef = useRef<monacoTypes.editor.IStandaloneCodeEditor | null>(null);\n  const langUid = useRef<string>();\n  const stableOnChange = useLatestCallback(onChange);\n\n  // create unique language id for each SQLEditor instance\n  const id = useMemo(() => {\n    const uid = v4();\n    const id = `${language.id}-${uid}`;\n    langUid.current = id;\n    return id;\n  }, [language.id]);\n\n  useEffect(() => {\n    return () => {\n      if (langUid.current) {\n        INSTANCE_CACHE.delete(langUid.current);\n      }\n      sqlEditorLog(`Removing instance cache ${langUid.current}`, false, INSTANCE_CACHE);\n    };\n  }, []);\n\n  const formatQuery = useCallback(() => {\n    if (monacoRef.current) {\n      monacoRef.current.getAction('editor.action.formatDocument').run();\n    }\n  }, []);\n\n  const onSqlBlur = (text: string) => {\n    stableOnChange && stableOnChange(text, false);\n    onBlur && onBlur(text);\n  };\n\n  return (\n    <div style={{ width }}>\n      <CodeEditor\n        height={height || '240px'}\n        // -2px to compensate for borders width\n        width={width ? `${width - 2}px` : undefined}\n        language={id}\n        value={query}\n        onBlur={onSqlBlur}\n        showMiniMap={false}\n        showLineNumbers={true}\n        // Using onEditorDidMount instead of onBeforeEditorMount to support Grafana < 8.2.x\n        onEditorDidMount={(editor, m) => {\n          monacoRef.current = editor;\n          editor.onDidChangeModelContent((e) => {\n            const text = editor.getValue();\n            // Use ref to get the latest onChange callback, avoiding stale closures\n            if (stableOnChange) {\n              stableOnChange(text, false);\n            }\n          });\n\n          editor.addCommand(m.KeyMod.CtrlCmd | m.KeyCode.Enter, () => {\n            const text = editor.getValue();\n            // Use ref to get the latest onChange callback, avoiding stale closures\n            if (stableOnChange) {\n              stableOnChange(text, true);\n            }\n          });\n\n          editor.onKeyUp((e) => {\n            // keyCode 84 is . (DOT)\n            if (e.keyCode === 84) {\n              editor.trigger(TRIGGER_SUGGEST.id, TRIGGER_SUGGEST.id, {});\n            }\n          });\n          registerLanguageAndSuggestions(m, language, id);\n        }}\n      />\n      {children && children({ formatQuery })}\n    </div>\n  );\n};\n\n// There's three ways to define Monaco language:\n// 1. Leave language.id empty or set it to 'sql'. This will load a standard sql language definition, including syntax highlighting and tokenization for\n// common Grafana entities such as macros and template variables\n// 2. Provide a custom language and load it via the async LanguageDefinition.loader callback\n// 3. Specify a language.id that exists in the Monaco language registry. A custom completion item provider can still be provided.\n// If not, the standard SQL completion item provider will be used. See available languages here: https://github.com/microsoft/monaco-editor/tree/main/src/basic-languages\n// If a custom language is specified, its LanguageDefinition will be merged with the LanguageDefinition for standard SQL. This allows the consumer to only\n// override parts of the LanguageDefinition, such as for example the completion item provider.\nconst resolveLanguage = (monaco: Monaco, languageDefinitionProp: LanguageDefinition): LanguageDefinition => {\n  if (languageDefinitionProp?.id !== STANDARD_SQL_LANGUAGE && !languageDefinitionProp.loader) {\n    sqlEditorLog(`Loading language '${languageDefinitionProp?.id}' from Monaco registry`, false);\n    const allLangs = monaco.languages.getLanguages();\n    const custom = allLangs.find(({ id }) => id === languageDefinitionProp?.id);\n    if (!custom) {\n      throw Error(`Unknown Monaco language ${languageDefinitionProp?.id}`);\n    }\n\n    return { completionProvider: getStandardSQLCompletionProvider, ...custom, ...languageDefinitionProp };\n  }\n\n  return {\n    ...standardSQLLanguageDefinition,\n    ...languageDefinitionProp,\n  };\n};\n\nexport const registerLanguageAndSuggestions = async (monaco: Monaco, l: LanguageDefinition, lid: string) => {\n  const languageDefinition = resolveLanguage(monaco, l);\n  if (!languageDefinition.loader) {\n    return;\n  }\n  const { language, conf } = await languageDefinition.loader(monaco);\n  monaco.languages.register({ id: lid });\n  monaco.languages.setMonarchTokensProvider(lid, { ...language });\n  monaco.languages.setLanguageConfiguration(lid, { ...conf });\n\n  if (languageDefinition.formatter) {\n    monaco.languages.registerDocumentFormattingEditProvider(lid, {\n      provideDocumentFormattingEdits: (model) => {\n        const formatted = l.formatter?.(model.getValue());\n        return [\n          {\n            range: model.getFullModelRange(),\n            text: formatted || '',\n          },\n        ];\n      },\n    });\n  }\n\n  if (languageDefinition.completionProvider) {\n    const customProvider = languageDefinition.completionProvider(monaco, language);\n    extendStandardRegistries(l.id, lid, customProvider);\n    const languageSuggestionsRegistries = LANGUAGES_CACHE.get(l.id)!;\n    const instanceSuggestionsRegistry = INSTANCE_CACHE.get(lid)!;\n\n    const completionProvider: monacoTypes.languages.CompletionItemProvider['provideCompletionItems'] = async (\n      model,\n      position,\n      context,\n      token\n    ) => {\n      const currentToken = linkedTokenBuilder(monaco, model, position, lid);\n      const statementPosition = getStatementPosition(currentToken, languageSuggestionsRegistries.positionResolvers);\n      const kind = getSuggestionKinds(statementPosition, languageSuggestionsRegistries.suggestionKinds);\n\n      sqlEditorLog('Statement position', false, statementPosition);\n      sqlEditorLog('Suggestion kinds', false, kind);\n\n      const ctx: PositionContext = {\n        position,\n        currentToken,\n        statementPosition,\n        kind,\n        range: monaco.Range.fromPositions(position),\n      };\n\n      const stdSuggestions = await getStandardSuggestions(monaco, currentToken, kind, ctx, instanceSuggestionsRegistry);\n\n      return {\n        suggestions: stdSuggestions,\n      };\n    };\n\n    monaco.languages.registerCompletionItemProvider(lid, {\n      ...customProvider,\n      provideCompletionItems: completionProvider,\n    });\n  }\n};\n\nfunction extendStandardRegistries(id: string, lid: string, customProvider: SQLCompletionItemProvider) {\n  if (!LANGUAGES_CACHE.has(id)) {\n    initializeLanguageRegistries(id);\n  }\n\n  const languageRegistries = LANGUAGES_CACHE.get(id)!;\n\n  if (!INSTANCE_CACHE.has(lid)) {\n    INSTANCE_CACHE.set(\n      lid,\n      new Registry(\n        initStandardSuggestions(languageRegistries.functions, languageRegistries.operators, languageRegistries.macros)\n      )\n    );\n  }\n\n  const instanceSuggestionsRegistry = INSTANCE_CACHE.get(lid)!;\n\n  if (customProvider.supportedFunctions) {\n    for (const func of customProvider.supportedFunctions()) {\n      const exists = languageRegistries.functions.getIfExists(func.id);\n      if (!exists) {\n        languageRegistries.functions.register(func);\n      }\n    }\n  }\n\n  if (customProvider.supportedOperators) {\n    for (const op of customProvider.supportedOperators()) {\n      const exists = languageRegistries.operators.getIfExists(op.id);\n      if (!exists) {\n        languageRegistries.operators.register({ ...op, name: op.id });\n      }\n    }\n  }\n\n  if (customProvider.supportedMacros) {\n    for (const macro of customProvider.supportedMacros()) {\n      const exists = languageRegistries.macros.getIfExists(macro.id);\n      if (!exists) {\n        languageRegistries.macros.register({ ...macro, name: macro.id });\n      }\n    }\n  }\n\n  if (customProvider.customStatementPlacement) {\n    for (const placement of customProvider.customStatementPlacement()) {\n      const exists = languageRegistries.positionResolvers.getIfExists(placement.id);\n      if (!exists) {\n        languageRegistries.positionResolvers.register({\n          ...placement,\n          id: placement.id as StatementPosition,\n          name: placement.id,\n        });\n        languageRegistries.suggestionKinds.register({\n          id: placement.id as StatementPosition,\n          name: placement.id,\n          kind: [],\n        });\n      } else {\n        // Allow extension to the built-in placement resolvers\n        const origResolve = exists.resolve;\n        exists.resolve = (...args) => {\n          const ext = placement.resolve(...args);\n          if (placement.overrideDefault) {\n            return ext;\n          }\n          const orig = origResolve(...args);\n          return orig || ext;\n        };\n      }\n    }\n  }\n\n  if (customProvider.customSuggestionKinds) {\n    for (const kind of customProvider.customSuggestionKinds()) {\n      kind.applyTo?.forEach((applyTo) => {\n        const exists = languageRegistries.suggestionKinds.getIfExists(applyTo);\n        if (exists) {\n          // avoid duplicates\n          if (exists.kind.indexOf(kind.id as SuggestionKind) === -1) {\n            exists.kind.push(kind.id as SuggestionKind);\n          }\n        }\n      });\n\n      if (kind.overrideDefault) {\n        const stbBehavior = instanceSuggestionsRegistry.get(kind.id);\n        if (stbBehavior !== undefined) {\n          stbBehavior.suggestions = kind.suggestionsResolver;\n          continue;\n        }\n      }\n\n      instanceSuggestionsRegistry.register({\n        id: kind.id as SuggestionKind,\n        name: kind.id,\n        suggestions: kind.suggestionsResolver,\n      });\n    }\n  }\n\n  if (customProvider.schemas) {\n    const stbBehavior = instanceSuggestionsRegistry.get(SuggestionKind.Schemas);\n    const s = stbBehavior.suggestions;\n    stbBehavior.suggestions = async (ctx, m) => {\n      const standardSchemas = await s(ctx, m);\n      if (!customProvider.schemas) {\n        return [...standardSchemas];\n      }\n      const customSchemas = await customProvider.schemas.resolve();\n      const customSchemaCompletionItems = customSchemas.map((x) => ({\n        label: x.name,\n        insertText: `${x.completion ?? x.name}.`,\n        command: TRIGGER_SUGGEST,\n        kind: CompletionItemKind.Module, // it's nice to differentiate schemas from tables\n        sortText: CompletionItemPriority.High,\n      }));\n      return [...standardSchemas, ...customSchemaCompletionItems];\n    };\n  }\n\n  if (customProvider.tables) {\n    const stbBehavior = instanceSuggestionsRegistry.get(SuggestionKind.Tables);\n    const s = stbBehavior.suggestions;\n    stbBehavior.suggestions = async (ctx, m) => {\n      const o = await s(ctx, m);\n      const tableToken = getTableToken(ctx.currentToken);\n      const tableNameParser = customProvider.tables?.parseName ?? defaultTableNameParser;\n\n      const tableIdentifier = tableNameParser(tableToken);\n\n      const oo = ((await customProvider.tables?.resolve?.(tableIdentifier)) ?? []).map((x) => ({\n        label: x.name,\n        // if no custom completion is provided it's safe to move cursor further in the statement\n        insertText: `${x.completion ?? x.name}${x.completion === x.name ? ' $0' : ''}`,\n        insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n        command: TRIGGER_SUGGEST,\n        kind: CompletionItemKind.Field,\n        sortText: CompletionItemPriority.MediumHigh,\n      }));\n      return [...o, ...oo];\n    };\n  }\n\n  if (customProvider.columns) {\n    const stbBehavior = instanceSuggestionsRegistry.get(SuggestionKind.Columns);\n    const s = stbBehavior.suggestions;\n    stbBehavior.suggestions = async (ctx, m) => {\n      const o = await s(ctx, m);\n      const tableToken = getTableToken(ctx.currentToken);\n      let tableIdentifier;\n      const tableNameParser = customProvider.tables?.parseName ?? defaultTableNameParser;\n\n      if (tableToken && tableToken.value) {\n        tableIdentifier = tableNameParser(tableToken);\n      }\n\n      let oo: CustomSuggestion[] = [];\n      if (tableIdentifier) {\n        const columns = await customProvider.columns?.resolve!(tableIdentifier);\n        oo = columns\n          ? columns.map<CustomSuggestion>((x) => ({\n              label: x.name,\n              insertText: x.completion ?? x.name,\n              kind: CompletionItemKind.Field,\n              sortText: CompletionItemPriority.High,\n              detail: x.type,\n              documentation: x.description,\n            }))\n          : [];\n      }\n      return [...o, ...oo];\n    };\n  }\n}\n\n/**\n * Initializes language specific registries that are treated as singletons\n */\nfunction initializeLanguageRegistries(id: string) {\n  if (!LANGUAGES_CACHE.has(id)) {\n    LANGUAGES_CACHE.set(id, {\n      functions: new Registry(),\n      operators: new Registry(),\n      suggestionKinds: new Registry(initSuggestionsKindRegistry),\n      positionResolvers: new Registry(initStatementPositionResolvers),\n      macros: new Registry(),\n    });\n  }\n\n  return LANGUAGES_CACHE.get(id)!;\n}\n","import { type monacoTypes } from '@grafana/ui';\nimport { type TestQueryModel } from '../../test-utils/types';\n\nexport const singleLineFullQuery: TestQueryModel = {\n  query: `SELECT column1, FROM table1 WHERE column1 = \"value1\" GROUP BY column1 ORDER BY column1 DESC LIMIT 10`,\n  tokens: [\n    [\n      {\n        offset: 0,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 6,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 7,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 14,\n        type: 'delimiter.sql',\n        language: 'sql',\n      },\n      {\n        offset: 15,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 16,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 20,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 21,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 27,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 28,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 33,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 34,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 41,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 42,\n        type: 'operator.sql',\n        language: 'sql',\n      },\n      {\n        offset: 43,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 44,\n        type: 'identifier.quote.sql',\n        language: 'sql',\n      },\n      {\n        offset: 45,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 51,\n        type: 'identifier.quote.sql',\n        language: 'sql',\n      },\n      {\n        offset: 52,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 53,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 58,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 59,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 61,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 62,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 69,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 70,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 75,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 76,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 78,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 79,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 86,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 87,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 91,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 92,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 97,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 98,\n        type: 'number.sql',\n        language: 'sql',\n      },\n      {\n        offset: 100,\n        type: 'delimiter.sql',\n        language: 'sql',\n      },\n    ],\n  ] as monacoTypes.Token[][],\n};\n","import { type TestQueryModel } from '../../test-utils/types';\n\nexport const singleLineFullQueryWithAggregation: TestQueryModel = {\n  query: 'SELECT count(column1), FROM table1 WHERE column1 = \"value1\" GROUP BY column1 ORDER BY column1 DESC LIMIT 10;',\n  tokens: [\n    [\n      {\n        offset: 0,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 6,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 7,\n        type: 'predefined.sql',\n        language: 'sql',\n      },\n      {\n        offset: 12,\n        type: 'delimiter.parenthesis.sql',\n        language: 'sql',\n      },\n      {\n        offset: 13,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 20,\n        type: 'delimiter.parenthesis.sql',\n        language: 'sql',\n      },\n      {\n        offset: 21,\n        type: 'delimiter.sql',\n        language: 'sql',\n      },\n      {\n        offset: 22,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 23,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 27,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 28,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 34,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 35,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 40,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 41,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 48,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 49,\n        type: 'operator.sql',\n        language: 'sql',\n      },\n      {\n        offset: 50,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 51,\n        type: 'identifier.quote.sql',\n        language: 'sql',\n      },\n      {\n        offset: 52,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 58,\n        type: 'identifier.quote.sql',\n        language: 'sql',\n      },\n      {\n        offset: 59,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 60,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 65,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 66,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 68,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 69,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 76,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 77,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 82,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 83,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 85,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 86,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 93,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 94,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 98,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 99,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 104,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 105,\n        type: 'number.sql',\n        language: 'sql',\n      },\n      {\n        offset: 107,\n        type: 'delimiter.sql',\n        language: 'sql',\n      },\n    ],\n  ],\n};\n","import { type TestQueryModel } from '../../test-utils/types';\n\nexport const multiLineFullQuery: TestQueryModel = {\n  query: `SELECT column1,\n  FROM table1\n\n  WHERE column1 = \"value1\"\n  GROUP BY column1 ORDER BY column1 DESC\n  LIMIT 10;`,\n  tokens: [\n    [\n      {\n        offset: 0,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 6,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 7,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 14,\n        type: 'delimiter.sql',\n        language: 'sql',\n      },\n      {\n        offset: 15,\n        type: 'white.sql',\n        language: 'sql',\n      },\n    ],\n    [\n      {\n        offset: 0,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 4,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 5,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 11,\n        type: 'white.sql',\n        language: 'sql',\n      },\n    ],\n    [\n      {\n        offset: 0,\n        type: 'white.sql',\n        language: 'sql',\n      },\n    ],\n    [\n      {\n        offset: 0,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 5,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 6,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 13,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 14,\n        type: 'operator.sql',\n        language: 'sql',\n      },\n      {\n        offset: 15,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 16,\n        type: 'identifier.quote.sql',\n        language: 'sql',\n      },\n      {\n        offset: 17,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 23,\n        type: 'identifier.quote.sql',\n        language: 'sql',\n      },\n      {\n        offset: 24,\n        type: 'white.sql',\n        language: 'sql',\n      },\n    ],\n    [\n      {\n        offset: 0,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 5,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 6,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 8,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 9,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 16,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 17,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 22,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 23,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 25,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 26,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 33,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 34,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 38,\n        type: 'white.sql',\n        language: 'sql',\n      },\n    ],\n    [\n      {\n        offset: 0,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 5,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 6,\n        type: 'number.sql',\n        language: 'sql',\n      },\n      {\n        offset: 8,\n        type: 'delimiter.sql',\n        language: 'sql',\n      },\n    ],\n  ],\n};\n","import { type TestQueryModel } from '../../test-utils/types';\n\nexport const multiLineFullQueryWithAggregation: TestQueryModel = {\n  query: `SELECT count(column1),\n  FROM table1\n\n  WHERE column1 = \"value1\"\n  GROUP BY column1 ORDER BY column1 DESC\n  LIMIT 10;`,\n  tokens: [\n    [\n      {\n        offset: 0,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 6,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 7,\n        type: 'predefined.sql',\n        language: 'sql',\n      },\n      {\n        offset: 12,\n        type: 'delimiter.parenthesis.sql',\n        language: 'sql',\n      },\n      {\n        offset: 13,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 20,\n        type: 'delimiter.parenthesis.sql',\n        language: 'sql',\n      },\n      {\n        offset: 21,\n        type: 'delimiter.sql',\n        language: 'sql',\n      },\n      {\n        offset: 22,\n        type: 'white.sql',\n        language: 'sql',\n      },\n    ],\n    [\n      {\n        offset: 0,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 4,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 5,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 11,\n        type: 'white.sql',\n        language: 'sql',\n      },\n    ],\n    [\n      {\n        offset: 0,\n        type: 'white.sql',\n        language: 'sql',\n      },\n    ],\n    [\n      {\n        offset: 0,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 5,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 6,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 13,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 14,\n        type: 'operator.sql',\n        language: 'sql',\n      },\n      {\n        offset: 15,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 16,\n        type: 'identifier.quote.sql',\n        language: 'sql',\n      },\n      {\n        offset: 17,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 23,\n        type: 'identifier.quote.sql',\n        language: 'sql',\n      },\n      {\n        offset: 24,\n        type: 'white.sql',\n        language: 'sql',\n      },\n    ],\n    [\n      {\n        offset: 0,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 5,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 6,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 8,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 9,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 16,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 17,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 22,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 23,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 25,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 26,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 33,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 34,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 38,\n        type: 'white.sql',\n        language: 'sql',\n      },\n    ],\n    [\n      {\n        offset: 0,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 5,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 6,\n        type: 'number.sql',\n        language: 'sql',\n      },\n      {\n        offset: 8,\n        type: 'delimiter.sql',\n        language: 'sql',\n      },\n    ],\n  ],\n};\n","import { type TestQueryModel } from '../../test-utils/types';\n\nexport const singleLineEmptyQuery: TestQueryModel = {\n  query: '',\n  tokens: [],\n};\n","import { type TestQueryModel } from '../../test-utils/types';\n\nexport const singleLineTwoQueries: TestQueryModel = {\n  query:\n    'SELECT column1, FROM table1 WHERE column1 = \"value1\" GROUP BY column1 ORDER BY column1 DESC LIMIT 10; SELECT column2, FROM table2 WHERE column2 = \"value2\" GROUP BY column1 ORDER BY column2 DESC LIMIT 10;',\n  tokens: [\n    [\n      {\n        offset: 0,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 6,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 7,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 14,\n        type: 'delimiter.sql',\n        language: 'sql',\n      },\n      {\n        offset: 15,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 16,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 20,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 21,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 27,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 28,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 33,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 34,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 41,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 42,\n        type: 'operator.sql',\n        language: 'sql',\n      },\n      {\n        offset: 43,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 44,\n        type: 'identifier.quote.sql',\n        language: 'sql',\n      },\n      {\n        offset: 45,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 51,\n        type: 'identifier.quote.sql',\n        language: 'sql',\n      },\n      {\n        offset: 52,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 53,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 58,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 59,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 61,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 62,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 69,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 70,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 75,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 76,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 78,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 79,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 86,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 87,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 91,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 92,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 97,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 98,\n        type: 'number.sql',\n        language: 'sql',\n      },\n      {\n        offset: 100,\n        type: 'delimiter.sql',\n        language: 'sql',\n      },\n      {\n        offset: 101,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 102,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 108,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 109,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 116,\n        type: 'delimiter.sql',\n        language: 'sql',\n      },\n      {\n        offset: 117,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 118,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 122,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 123,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 129,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 130,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 135,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 136,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 143,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 144,\n        type: 'operator.sql',\n        language: 'sql',\n      },\n      {\n        offset: 145,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 146,\n        type: 'identifier.quote.sql',\n        language: 'sql',\n      },\n      {\n        offset: 147,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 153,\n        type: 'identifier.quote.sql',\n        language: 'sql',\n      },\n      {\n        offset: 154,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 155,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 160,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 161,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 163,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 164,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 171,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 172,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 177,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 178,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 180,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 181,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 188,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 189,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 193,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 194,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 199,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 200,\n        type: 'number.sql',\n        language: 'sql',\n      },\n      {\n        offset: 202,\n        type: 'delimiter.sql',\n        language: 'sql',\n      },\n    ],\n  ],\n};\n","import { type TestQueryModel } from '../../test-utils/types';\n\nexport const singleLineTwoQueriesWithAggregation: TestQueryModel = {\n  query:\n    'SELECT count(column1), FROM table1 WHERE column1 = \"value1\" GROUP BY column1 ORDER BY column1 DESC LIMIT 10; SELECT count(column2), FROM table2 WHERE column2 = \"value2\" GROUP BY column1 ORDER BY column2 DESC LIMIT 10;',\n  tokens: [\n    [\n      {\n        offset: 0,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 6,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 7,\n        type: 'predefined.sql',\n        language: 'sql',\n      },\n      {\n        offset: 12,\n        type: 'delimiter.parenthesis.sql',\n        language: 'sql',\n      },\n      {\n        offset: 13,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 20,\n        type: 'delimiter.parenthesis.sql',\n        language: 'sql',\n      },\n      {\n        offset: 21,\n        type: 'delimiter.sql',\n        language: 'sql',\n      },\n      {\n        offset: 22,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 23,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 27,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 28,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 34,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 35,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 40,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 41,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 48,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 49,\n        type: 'operator.sql',\n        language: 'sql',\n      },\n      {\n        offset: 50,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 51,\n        type: 'identifier.quote.sql',\n        language: 'sql',\n      },\n      {\n        offset: 52,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 58,\n        type: 'identifier.quote.sql',\n        language: 'sql',\n      },\n      {\n        offset: 59,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 60,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 65,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 66,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 68,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 69,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 76,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 77,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 82,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 83,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 85,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 86,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 93,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 94,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 98,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 99,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 104,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 105,\n        type: 'number.sql',\n        language: 'sql',\n      },\n      {\n        offset: 107,\n        type: 'delimiter.sql',\n        language: 'sql',\n      },\n      {\n        offset: 108,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 109,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 115,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 116,\n        type: 'predefined.sql',\n        language: 'sql',\n      },\n      {\n        offset: 121,\n        type: 'delimiter.parenthesis.sql',\n        language: 'sql',\n      },\n      {\n        offset: 122,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 129,\n        type: 'delimiter.parenthesis.sql',\n        language: 'sql',\n      },\n      {\n        offset: 130,\n        type: 'delimiter.sql',\n        language: 'sql',\n      },\n      {\n        offset: 131,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 132,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 136,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 137,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 143,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 144,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 149,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 150,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 157,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 158,\n        type: 'operator.sql',\n        language: 'sql',\n      },\n      {\n        offset: 159,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 160,\n        type: 'identifier.quote.sql',\n        language: 'sql',\n      },\n      {\n        offset: 161,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 167,\n        type: 'identifier.quote.sql',\n        language: 'sql',\n      },\n      {\n        offset: 168,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 169,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 174,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 175,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 177,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 178,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 185,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 186,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 191,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 192,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 194,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 195,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 202,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 203,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 207,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 208,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 213,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 214,\n        type: 'number.sql',\n        language: 'sql',\n      },\n      {\n        offset: 216,\n        type: 'delimiter.sql',\n        language: 'sql',\n      },\n    ],\n  ],\n};\n","import { type TestQueryModel } from '../../test-utils/types';\n\nexport const singleLineMultipleColumns: TestQueryModel = {\n  query:\n    'SELECT count(column1), column2 FROM table1 WHERE column1 = \"value1\" GROUP BY column1 ORDER BY column1, avg(column2) DESC LIMIT 10;',\n  tokens: [\n    [\n      {\n        offset: 0,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 6,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 7,\n        type: 'predefined.sql',\n        language: 'sql',\n      },\n      {\n        offset: 12,\n        type: 'delimiter.parenthesis.sql',\n        language: 'sql',\n      },\n      {\n        offset: 13,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 20,\n        type: 'delimiter.parenthesis.sql',\n        language: 'sql',\n      },\n      {\n        offset: 21,\n        type: 'delimiter.sql',\n        language: 'sql',\n      },\n      {\n        offset: 22,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 23,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 30,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 31,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 35,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 36,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 42,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 43,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 48,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 49,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 56,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 57,\n        type: 'operator.sql',\n        language: 'sql',\n      },\n      {\n        offset: 58,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 59,\n        type: 'identifier.quote.sql',\n        language: 'sql',\n      },\n      {\n        offset: 60,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 66,\n        type: 'identifier.quote.sql',\n        language: 'sql',\n      },\n      {\n        offset: 67,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 68,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 73,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 74,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 76,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 77,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 84,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 85,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 90,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 91,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 93,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 94,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 101,\n        type: 'delimiter.sql',\n        language: 'sql',\n      },\n      {\n        offset: 102,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 103,\n        type: 'predefined.sql',\n        language: 'sql',\n      },\n      {\n        offset: 106,\n        type: 'delimiter.parenthesis.sql',\n        language: 'sql',\n      },\n      {\n        offset: 107,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 114,\n        type: 'delimiter.parenthesis.sql',\n        language: 'sql',\n      },\n      {\n        offset: 115,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 116,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 120,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 121,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 126,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 127,\n        type: 'number.sql',\n        language: 'sql',\n      },\n      {\n        offset: 129,\n        type: 'delimiter.sql',\n        language: 'sql',\n      },\n    ],\n  ],\n};\n","import { type TestQueryModel } from '../../test-utils/types';\n\nexport const multiLineMultipleColumns: TestQueryModel = {\n  query: `SELECT count(column1), column2\n  FROM table1\n\n  WHERE column1 = \"value1\"\n  GROUP BY column1 ORDER BY column1, avg(column2) DESC\n  LIMIT 10;`,\n  tokens: [\n    [\n      {\n        offset: 0,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 6,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 7,\n        type: 'predefined.sql',\n        language: 'sql',\n      },\n      {\n        offset: 12,\n        type: 'delimiter.parenthesis.sql',\n        language: 'sql',\n      },\n      {\n        offset: 13,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 20,\n        type: 'delimiter.parenthesis.sql',\n        language: 'sql',\n      },\n      {\n        offset: 21,\n        type: 'delimiter.sql',\n        language: 'sql',\n      },\n      {\n        offset: 22,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 23,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 30,\n        type: 'white.sql',\n        language: 'sql',\n      },\n    ],\n    [\n      {\n        offset: 0,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 4,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 5,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 11,\n        type: 'white.sql',\n        language: 'sql',\n      },\n    ],\n    [\n      {\n        offset: 0,\n        type: 'white.sql',\n        language: 'sql',\n      },\n    ],\n    [\n      {\n        offset: 0,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 5,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 6,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 13,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 14,\n        type: 'operator.sql',\n        language: 'sql',\n      },\n      {\n        offset: 15,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 16,\n        type: 'identifier.quote.sql',\n        language: 'sql',\n      },\n      {\n        offset: 17,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 23,\n        type: 'identifier.quote.sql',\n        language: 'sql',\n      },\n      {\n        offset: 24,\n        type: 'white.sql',\n        language: 'sql',\n      },\n    ],\n    [\n      {\n        offset: 0,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 5,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 6,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 8,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 9,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 16,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 17,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 22,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 23,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 25,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 26,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 33,\n        type: 'delimiter.sql',\n        language: 'sql',\n      },\n      {\n        offset: 34,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 35,\n        type: 'predefined.sql',\n        language: 'sql',\n      },\n      {\n        offset: 38,\n        type: 'delimiter.parenthesis.sql',\n        language: 'sql',\n      },\n      {\n        offset: 39,\n        type: 'identifier.sql',\n        language: 'sql',\n      },\n      {\n        offset: 46,\n        type: 'delimiter.parenthesis.sql',\n        language: 'sql',\n      },\n      {\n        offset: 47,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 48,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 52,\n        type: 'white.sql',\n        language: 'sql',\n      },\n    ],\n    [\n      {\n        offset: 0,\n        type: 'keyword.sql',\n        language: 'sql',\n      },\n      {\n        offset: 5,\n        type: 'white.sql',\n        language: 'sql',\n      },\n      {\n        offset: 6,\n        type: 'number.sql',\n        language: 'sql',\n      },\n      {\n        offset: 8,\n        type: 'delimiter.sql',\n        language: 'sql',\n      },\n    ],\n  ],\n};\n","import { type monacoTypes } from '@grafana/ui';\n\n// Stub for the Monaco instance. Only implements the parts that are used in cloudwatch sql\nconst getMonacoMock: (\n  testData: Map<string, Array<Array<Pick<monacoTypes.Token, 'language' | 'offset' | 'type'>>>>\n) => any = (testData) => ({\n  editor: {\n    tokenize: (value: string, languageId: string) => testData.get(value),\n  },\n  Range: {\n    containsPosition: (range: monacoTypes.IRange, position: monacoTypes.IPosition) => {\n      return (\n        position.lineNumber >= range.startLineNumber &&\n        position.lineNumber <= range.endLineNumber &&\n        position.column >= range.startColumn &&\n        position.column <= range.endColumn\n      );\n    },\n  },\n  languages: {\n    CompletionItemKind: { Snippet: 2, Function: 1, Keyword: 3 },\n    CompletionItemInsertTextRule: { InsertAsSnippet: 2 },\n  },\n});\n\nexport { getMonacoMock };\n","import { type monacoTypes } from '@grafana/ui';\n\n// Stub for monacoTypes.editor.ITextModel\nfunction TextModel(value: string) {\n  return {\n    getValue: function (eol?: monacoTypes.editor.EndOfLinePreference, preserveBOM?: boolean): string {\n      return value;\n    },\n    getValueInRange: function (range: monacoTypes.IRange, eol?: monacoTypes.editor.EndOfLinePreference): string {\n      const lines = value.split('\\n');\n      const line = lines[range.startLineNumber - 1];\n      return line.trim().slice(range.startColumn === 0 ? 0 : range.startColumn - 1, range.endColumn - 1);\n    },\n    getLineLength: function (lineNumber: number): number {\n      const lines = value.split('\\n');\n      return lines[lineNumber - 1].trim().length;\n    },\n  };\n}\n\nexport { TextModel };\n","import { Registry } from '@grafana/data';\nimport { type monacoTypes } from '@grafana/ui';\nimport { getMonacoMock } from '../mocks/Monaco';\nimport { TextModel } from '../mocks/TextModel';\nimport { getStatementPosition } from '../standardSql/getStatementPosition';\nimport { type StatementPositionResolversRegistryItem } from '../standardSql/types';\nimport { type CustomStatementPlacement, type StatementPosition } from '../types';\nimport { linkedTokenBuilder } from '../utils/linkedTokenBuilder';\nimport { type StatementPositionResolverTestCase } from './types';\n\nfunction assertPosition(\n  query: string,\n  position: monacoTypes.IPosition,\n  expected: StatementPosition | string,\n  monacoMock: any,\n  resolversRegistry: Registry<StatementPositionResolversRegistryItem>\n) {\n  const testModel = TextModel(query);\n  const current = linkedTokenBuilder(monacoMock, testModel as monacoTypes.editor.ITextModel, position);\n  const statementPosition = getStatementPosition(current, resolversRegistry);\n\n  expect(statementPosition).toContain(expected);\n}\n\nexport const testStatementPosition = (\n  expected: StatementPosition | string,\n  cases: StatementPositionResolverTestCase[],\n  resolvers: () => CustomStatementPlacement[]\n) => {\n  describe(`${expected}`, () => {\n    let MonacoMock: any;\n    let statementPositionResolversRegistry: Registry<StatementPositionResolversRegistryItem>;\n\n    beforeEach(() => {\n      const mockQueries = new Map<string, Array<Array<Pick<monacoTypes.Token, 'language' | 'offset' | 'type'>>>>();\n      cases.forEach((c) => mockQueries.set(c.query.query, c.query.tokens));\n\n      MonacoMock = getMonacoMock(mockQueries);\n      statementPositionResolversRegistry = new Registry(() => {\n        return resolvers().map((r) => ({\n          id: r.id as StatementPosition,\n          name: r.name || r.id,\n          resolve: r.resolve,\n        }));\n      });\n    });\n\n    // using forEach here rather than test.each as been struggling to get the arguments interpolated in test name string\n    cases.forEach((c) => {\n      test(`${c.query.query}`, () => {\n        assertPosition(\n          c.query.query,\n          { lineNumber: c.position.line, column: c.position.column },\n          expected,\n          MonacoMock,\n          statementPositionResolversRegistry\n        );\n      });\n    });\n  });\n};\n","import * as testData from '../mocks/testData';\nimport { testStatementPosition } from './statementPosition';\nimport { type TestQueryModel } from './types';\n\nexport const SQLEditorTestUtils = {\n  testData,\n  testStatementPosition,\n};\n\nexport type { TestQueryModel };\n","import { type JsonTree } from '@react-awesome-query-builder/ui';\n\nimport {\n  type DataFrame,\n  type DataSourceJsonData,\n  type MetricFindValue,\n  type SelectableValue,\n  type TimeRange,\n  toOption as toOptionFromData,\n} from '@grafana/data';\n\nimport { type DataQuery } from '@grafana/schema';\n\nimport {\n  type QueryEditorFunctionExpression,\n  type QueryEditorGroupByExpression,\n  type QueryEditorPropertyExpression,\n} from './expressions';\nimport { type CompletionItemKind, type LanguageCompletionProvider } from '../SQLEditor';\n\nexport interface SqlQueryForInterpolation {\n  dataset?: string;\n  alias?: string;\n  format?: QueryFormat;\n  rawSql?: string;\n  refId: string;\n  hide?: boolean;\n}\n\nexport interface SQLConnectionLimits {\n  maxOpenConns: number;\n  maxIdleConns: number;\n  connMaxLifetime: number;\n}\n\nexport interface SQLOptions extends SQLConnectionLimits, DataSourceJsonData {\n  tlsAuth: boolean;\n  tlsAuthWithCACert: boolean;\n  timezone: string;\n  tlsSkipVerify: boolean;\n  user: string;\n  database: string;\n  url: string;\n  timeInterval: string;\n}\n\n// Match the Enums Expected in SqlUtil and SqlDS\n// https://github.com/grafana/grafana-plugin-sdk-go/blob/main/data/sqlutil/query.go#L18-L29\nexport enum QueryFormat {\n  Timeseries,\n  Table,\n  Logs,\n  Trace,\n  OptionMulti,\n}\n\nexport enum EditorMode {\n  Builder = 'builder',\n  Code = 'code',\n}\n\nexport interface SQLQuery extends DataQuery {\n  alias?: string;\n  format?: QueryFormat;\n  rawSql?: string;\n  dataset?: string; // When catalog is present, dataset represents the schema. Otherwise, it's the dataset.\n  catalog?: string;\n  table?: string;\n  sql?: SQLExpression;\n  editorMode?: EditorMode;\n  rawQuery?: boolean;\n}\n\nexport interface NameValue {\n  name: string;\n  value: string;\n}\n\nexport type SQLFilters = NameValue[];\n\nexport interface SQLExpression {\n  columns?: QueryEditorFunctionExpression[];\n  whereJsonTree?: JsonTree;\n  whereString?: string;\n  filters?: SQLFilters;\n  groupBy?: QueryEditorGroupByExpression[];\n  orderBy?: QueryEditorPropertyExpression;\n  orderByDirection?: 'ASC' | 'DESC';\n  limit?: number;\n  offset?: number;\n}\n\nexport interface TableSchema {\n  name?: string;\n  schema?: TableFieldSchema[];\n}\n\nexport interface TableFieldSchema {\n  name: string;\n  description?: string;\n  type: string;\n  repeated: boolean;\n  schema: TableFieldSchema[];\n}\n\nexport interface QueryRowFilter {\n  filter: boolean;\n  group: boolean;\n  order: boolean;\n  preview: boolean;\n}\n\nexport const QUERY_FORMAT_OPTIONS = [\n  { label: 'Time series', value: QueryFormat.Timeseries },\n  { label: 'Table', value: QueryFormat.Table },\n];\n\nconst backWardToOption = (value: string) => ({ label: value, value });\n\nexport const toOption = toOptionFromData ?? backWardToOption;\n\nexport interface ResourceSelectorProps {\n  disabled?: boolean;\n  className?: string;\n  applyDefault?: boolean;\n}\n// React Awesome Query builder field types.\n// These are responsible for rendering the correct UI for the field.\nexport type RAQBFieldTypes = 'text' | 'number' | 'boolean' | 'datetime' | 'date' | 'time';\n\nexport interface SQLSelectableValue extends SelectableValue {\n  type?: string;\n  raqbFieldType?: RAQBFieldTypes;\n}\n\nexport interface Aggregate {\n  id: string;\n  name: string;\n  description?: string;\n}\n\nexport interface DB {\n  init?: (datasourceId?: string) => Promise<boolean>;\n  datasets: (catalog?: string) => Promise<string[]>; // When catalog is provided, returns schemas for that catalog\n  catalogs?: () => Promise<string[]>;\n  tables: (dataset?: string, catalog?: string, schema?: string) => Promise<string[]>;\n  fields: (query: SQLQuery, order?: boolean) => Promise<SQLSelectableValue[]>;\n  validateQuery: (query: SQLQuery, range?: TimeRange) => Promise<ValidationResults>;\n  dsID: () => number;\n  dispose?: (dsID?: string) => void;\n  lookup: (path?: string) => Promise<Array<{ name: string; completion: string }>>;\n  getSqlCompletionProvider: () => LanguageCompletionProvider;\n  toRawSql?: (query: SQLQuery) => string;\n  functions: () => Promise<Aggregate[]>;\n  labels?: Map<'dataset', string>;\n  disableDatasets?: boolean;\n  disableCatalogs?: boolean;\n}\n\nexport interface QueryEditorProps {\n  db: DB;\n  query: QueryWithDefaults;\n  onChange: (query: SQLQuery) => void;\n  range?: TimeRange;\n}\n\nexport interface ValidationResults {\n  query: SQLQuery;\n  rawSql?: string;\n  error: string;\n  isError: boolean;\n  isValid: boolean;\n  statistics?: {\n    TotalBytesProcessed: number;\n  } | null;\n}\n\nexport interface SqlQueryModel {\n  interpolate: () => string;\n  quoteLiteral: (v: string) => string;\n}\n\nexport interface ResponseParser {\n  transformMetricFindResponse: (frame: DataFrame) => MetricFindValue[];\n}\n\nexport interface MetaDefinition {\n  name: string;\n  completion?: string;\n  kind: CompletionItemKind;\n}\n\n/**\n * Represents a query with all default values applied.\n * This is equivalent to SQLQuery since applyQueryDefaults returns SQLQuery.\n */\nexport type QueryWithDefaults = SQLQuery;\n","import { isEmpty } from 'lodash';\n\nimport {\n  QueryEditorExpressionType,\n  type QueryEditorFunctionExpression,\n  type QueryEditorGroupByExpression,\n  type QueryEditorPropertyExpression,\n  QueryEditorPropertyType,\n} from '../expressions';\nimport { type SQLQuery, type SQLExpression, type DB } from '../types';\n\nexport function getRawSqlFn(db: DB) {\n  return db.toRawSql ? db.toRawSql : (query: SQLQuery) => toRawSql(query, Boolean(db.disableDatasets));\n}\n\n/**\n * Converts a SQLQuery object into a raw SQL string.\n *\n * Table reference naming:\n * - When catalog is present: catalog.dataset.table (dataset acts as schema)\n * - When catalog is absent: dataset.table (dataset acts as dataset/schema)\n * - When both are disabled: just table\n *\n * Note: Semantically, the dataset field has dual meaning:\n *   - With catalog: dataset = schema (Unity Catalog: catalog.schema.table)\n *   - Without catalog: dataset = dataset (Legacy: dataset.table)\n */\nexport function toRawSql({ sql, dataset, catalog, table }: SQLQuery, disableDatasets: boolean): string {\n  let rawQuery = '';\n\n  if (!sql || !haveColumns(sql.columns)) {\n    return rawQuery;\n  }\n\n  rawQuery += createSelectClause(sql.columns);\n\n  // Three-part naming: catalog.dataset.table (dataset acts as schema when catalog is present)\n  if (catalog && dataset && table) {\n    rawQuery += `FROM ${catalog}.${dataset}.${table} `;\n  }\n  // Two-part naming: dataset.table (legacy style, only if catalogs not used)\n  else if (!disableDatasets && dataset && table) {\n    rawQuery += `FROM ${dataset}.${table} `;\n  }\n  // Just table name (when datasets are disabled or neither catalog nor dataset is present)\n  else if (table) {\n    rawQuery += `FROM ${table} `;\n  }\n\n  if (sql.whereString) {\n    rawQuery += `WHERE ${sql.whereString} `;\n  }\n\n  if (sql.groupBy?.[0]?.property.name) {\n    const groupBy = sql.groupBy.map((g) => g.property.name).filter((g) => !isEmpty(g));\n    rawQuery += `GROUP BY ${groupBy.join(', ')} `;\n  }\n\n  if (sql.orderBy?.property.name) {\n    rawQuery += `ORDER BY ${sql.orderBy.property.name} `;\n  }\n\n  if (sql.orderBy?.property.name && sql.orderByDirection) {\n    rawQuery += `${sql.orderByDirection} `;\n  }\n\n  if (sql.limit !== undefined && sql.limit >= 0) {\n    rawQuery += `LIMIT ${sql.limit} `;\n  }\n\n  return rawQuery;\n}\n\nfunction createSelectClause(sqlColumns: NonNullable<SQLExpression['columns']>): string {\n  const columns = sqlColumns.map((c) => {\n    let rawColumn = '';\n    if (c.name) {\n      rawColumn += `${c.name}(${c.parameters?.map((p) => `${p.name}`)})`;\n    } else {\n      rawColumn += `${c.parameters?.map((p) => `${p.name}`)}`;\n    }\n    return rawColumn;\n  });\n  return `SELECT ${columns.join(', ')} `;\n}\n\nexport function haveColumns(columns: SQLExpression['columns']): columns is NonNullable<SQLExpression['columns']> {\n  if (!columns) {\n    return false;\n  }\n\n  const haveColumn = columns.some((c) => c.parameters?.length || c.parameters?.some((p) => p.name));\n  const haveFunction = columns.some((c) => c.name);\n  return haveColumn || haveFunction;\n}\n\n/**\n * Creates a GroupByExpression for a specified field\n */\nexport function setGroupByField(field?: string): QueryEditorGroupByExpression {\n  return {\n    type: QueryEditorExpressionType.GroupBy,\n    property: {\n      type: QueryEditorPropertyType.String,\n      name: field,\n    },\n  };\n}\n\n/**\n * Creates a PropertyExpression for a specified field\n */\nexport function setPropertyField(field?: string): QueryEditorPropertyExpression {\n  return {\n    type: QueryEditorExpressionType.Property,\n    property: {\n      type: QueryEditorPropertyType.String,\n      name: field,\n    },\n  };\n}\n\nexport function createFunctionField(functionName?: string): QueryEditorFunctionExpression {\n  return {\n    type: QueryEditorExpressionType.Function,\n    name: functionName,\n    parameters: [],\n  };\n}\n","import React from 'react';\nimport { Stack } from '@grafana/ui';\nimport { type ThemeSpacingTokens } from '@grafana/data';\n\nexport type Direction = 'row' | 'row-reverse' | 'column' | 'column-reverse';\nexport type AlignItems =\n  | 'stretch'\n  | 'flex-start'\n  | 'flex-end'\n  | 'center'\n  | 'baseline'\n  | 'start'\n  | 'end'\n  | 'self-start'\n  | 'self-end';\n\ninterface StackProps {\n  children?: React.ReactNode;\n  direction?: Direction;\n  alignItems?: AlignItems;\n  wrap?: boolean;\n  gap?: ThemeSpacingTokens;\n}\n\nexport const EditorStack = ({ children, wrap: wrapItems = true, ...props }: StackProps) => {\n  return (\n    <Stack wrap={wrapItems ? 'wrap' : undefined} direction={props.direction ?? 'row'} gap={props.gap ?? 2} {...props}>\n      {children}\n    </Stack>\n  );\n};\n","import React, { type ReactElement, type Ref, forwardRef } from 'react';\nimport { Button } from '@grafana/ui';\n\nimport { EditorStack } from './EditorStack';\n\ninterface EditorListProps<T> {\n  items: Array<Partial<T>>;\n  renderItem: (item: Partial<T>, onChangeItem: (item: Partial<T>) => void, onDeleteItem: () => void) => ReactElement;\n  onChange: (items: Array<Partial<T>>) => void;\n}\n\nexport const EditorList = forwardRef(function EditorList<T>(\n  { items, renderItem, onChange }: EditorListProps<T>,\n  ref: Ref<HTMLButtonElement>\n) {\n  const onAddItem = () => {\n    const newItems = [...items, {}];\n\n    onChange(newItems);\n  };\n\n  const onChangeItem = (itemIndex: number, newItem: Partial<T>) => {\n    const newItems = [...items];\n    newItems[itemIndex] = newItem;\n    onChange(newItems);\n  };\n\n  const onDeleteItem = (itemIndex: number) => {\n    const newItems = [...items];\n    newItems.splice(itemIndex, 1);\n    onChange(newItems);\n  };\n  return (\n    <EditorStack>\n      {items.map((item, index) => (\n        <div key={index}>\n          {renderItem(\n            item,\n            (newItem) => onChangeItem(index, newItem),\n            () => onDeleteItem(index)\n          )}\n        </div>\n      ))}\n      <Button ref={ref} onClick={onAddItem} variant=\"secondary\" size=\"md\" icon=\"plus\" aria-label=\"Add\" type=\"button\" />\n    </EditorStack>\n  );\n});\n","import React from 'react';\nimport { css, cx } from '@emotion/css';\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { Button, type ButtonProps, useStyles2 } from '@grafana/ui';\n\ntype AccessoryButtonProps = ButtonProps & {};\n\nexport const AccessoryButton = ({ className, ...props }: AccessoryButtonProps) => {\n  const styles = useStyles2(getButtonStyles);\n\n  return <Button {...props} className={cx(className, styles.button)} />;\n};\n\nconst getButtonStyles = (theme: GrafanaTheme2) => ({\n  button: css({\n    paddingLeft: theme.spacing(3 / 2),\n    paddingRight: theme.spacing(3 / 2),\n  }),\n});\n","import React, { Children, cloneElement, isValidElement, type ReactElement } from 'react';\nimport { css, cx } from '@emotion/css';\nimport { useStyles2 } from '@grafana/ui';\n\ntype Child = string | undefined | ReactElement<{ className?: string; invalid?: unknown }>;\ninterface InputGroupProps {\n  // we type the children props so we can test them later on\n  children: Child | Child[];\n}\n\nexport const InputGroup = ({ children }: InputGroupProps) => {\n  const styles = useStyles2(getStyles);\n\n  // Find children with an invalid prop, and set a class name to raise their z-index so all\n  // of the invalid border is visible\n  const modifiedChildren = Children.map(children, (child) => {\n    if (isValidElement(child) && child.props.invalid) {\n      return cloneElement(child, { className: cx(child.props.className, styles.invalidChild) });\n    }\n\n    return child;\n  });\n\n  return <div className={styles.root}>{modifiedChildren}</div>;\n};\n\n// The later in the array the higher the priority for showing that element's border\nconst borderPriority = [\n  '' as const, // lowest priority\n  'base' as const,\n  'hovered' as const,\n  'invalid' as const,\n  'focused' as const, // highest priority\n];\n\nconst getStyles = () => ({\n  root: css({\n    display: 'flex',\n\n    // Style the direct children of the component\n    '> *': {\n      '&:not(:first-child)': {\n        // Negative margin hides the double-border on adjacent selects\n        marginLeft: -1,\n      },\n\n      '&:first-child': {\n        borderTopRightRadius: 0,\n        borderBottomRightRadius: 0,\n      },\n\n      '&:last-child': {\n        borderTopLeftRadius: 0,\n        borderBottomLeftRadius: 0,\n      },\n\n      '&:not(:first-child):not(:last-child)': {\n        borderRadius: 0,\n      },\n\n      //\n      position: 'relative',\n      zIndex: borderPriority.indexOf('base'),\n\n      // Adjacent borders are overlapping, so raise children up when hovering etc\n      // so all that child's borders are visible.\n      '&:hover': {\n        zIndex: borderPriority.indexOf('hovered'),\n      },\n      '&:focus-within': {\n        zIndex: borderPriority.indexOf('focused'),\n      },\n    },\n  }),\n\n  invalidChild: css({\n    zIndex: borderPriority.indexOf('invalid'),\n  }),\n});\n","import React, { useCallback } from 'react';\nimport { type SelectableValue, toOption } from '@grafana/data';\nimport { type SQLExpression } from '../types';\nimport { type QueryEditorGroupByExpression } from '../expressions';\nimport { setGroupByField } from '../utils/sql.utils';\nimport { EditorList } from '../EditorList';\nimport { Select } from '@grafana/ui';\nimport { AccessoryButton } from '../AccessoryButton';\nimport { InputGroup } from '../InputGroup';\n\ninterface GroupByRowProps {\n  sql: SQLExpression;\n  onSqlChange: (sql: SQLExpression) => void;\n  columns?: Array<SelectableValue<string>>;\n}\n\nexport function GroupByRow({ sql, columns, onSqlChange }: GroupByRowProps) {\n  const onGroupByChange = useCallback(\n    (item: Array<Partial<QueryEditorGroupByExpression>>) => {\n      // As new (empty object) items come in, we need to make sure they have the correct type\n      const cleaned = item.map((v) => setGroupByField(v.property?.name));\n      const newSql = { ...sql, groupBy: cleaned };\n      onSqlChange(newSql);\n    },\n    [onSqlChange, sql]\n  );\n\n  return (\n    <EditorList\n      items={sql.groupBy!}\n      onChange={onGroupByChange}\n      renderItem={makeRenderColumn({\n        options: columns,\n      })}\n    />\n  );\n}\n\nfunction makeRenderColumn({ options }: { options?: Array<SelectableValue<string>> }) {\n  const renderColumn = function (\n    item: Partial<QueryEditorGroupByExpression>,\n    onChangeItem: (item: QueryEditorGroupByExpression) => void,\n    onDeleteItem: () => void\n  ) {\n    return (\n      <InputGroup>\n        <Select\n          value={item.property?.name ? toOption(item.property.name) : null}\n          aria-label=\"Group by\"\n          options={options}\n          menuShouldPortal\n          onChange={({ value }) => value && onChangeItem(setGroupByField(value))}\n        />\n        <AccessoryButton aria-label=\"Remove group by column\" icon=\"times\" variant=\"secondary\" onClick={onDeleteItem} />\n      </InputGroup>\n    );\n  };\n  return renderColumn;\n}\n","import React from 'react';\nimport { EditorStack } from './EditorStack';\n\ninterface EditorFieldGroupProps {\n  children?: React.ReactNode;\n}\n\nexport const EditorFieldGroup = ({ children }: EditorFieldGroupProps) => {\n  return <EditorStack gap={1}>{children}</EditorStack>;\n};\n","import React from 'react';\nimport { css } from '@emotion/css';\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\n\ninterface EditorHeaderProps {\n  children?: React.ReactNode;\n}\n\nexport const EditorHeader = ({ children }: EditorHeaderProps) => {\n  const styles = useStyles2(getStyles);\n\n  return <div className={styles.root}>{children}</div>;\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  root: css({\n    display: 'flex',\n    flexWrap: 'wrap',\n    alignItems: 'center',\n    gap: theme.spacing(3),\n    minHeight: theme.spacing(4),\n  }),\n});\n","import React, { type ComponentProps } from 'react';\nimport { css } from '@emotion/css';\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { Field, Icon, type PopoverContent, ReactUtils, Space, Tooltip, useStyles2 } from '@grafana/ui';\n\ninterface EditorFieldProps extends ComponentProps<typeof Field> {\n  label: string;\n  children: React.ReactElement;\n  width?: number | string;\n  optional?: boolean;\n  tooltip?: PopoverContent;\n  tooltipInteractive?: boolean;\n}\nexport const EditorField = (props: EditorFieldProps) => {\n  const { label, optional, tooltip, tooltipInteractive, children, width, ...fieldProps } = props;\n\n  const styles = useStyles2(getStyles, width);\n\n  // Null check for backward compatibility\n  const childInputId = fieldProps?.htmlFor || ReactUtils?.getChildId(children);\n\n  const labelEl = (\n    <>\n      <label className={styles.label} htmlFor={childInputId}>\n        {label}\n        {optional && <span className={styles.optional}> - optional</span>}\n        {tooltip && (\n          <Tooltip placement=\"top\" content={tooltip} theme=\"info\" interactive={tooltipInteractive}>\n            <Icon tabIndex={0} name=\"info-circle\" size=\"sm\" className={styles.icon} />\n          </Tooltip>\n        )}\n      </label>\n      <Space v={0.5} />\n    </>\n  );\n\n  return (\n    <div className={styles.root}>\n      <Field className={styles.field} label={labelEl} {...fieldProps}>\n        {children}\n      </Field>\n    </div>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2, width?: number | string) => {\n  return {\n    root: css({\n      minWidth: theme.spacing(width ?? 0),\n    }),\n    label: css({\n      fontSize: 12,\n      fontWeight: theme.typography.fontWeightMedium,\n    }),\n    optional: css({\n      fontStyle: 'italic',\n      color: theme.colors.text.secondary,\n    }),\n    field: css({\n      marginBottom: 0, // GrafanaUI/Field has a bottom margin which we must remove\n    }),\n    icon: css({\n      color: theme.colors.text.secondary,\n      marginLeft: theme.spacing(1),\n      ':hover': {\n        color: theme.colors.text.primary,\n      },\n    }),\n  };\n};\n","import React from 'react';\nimport { css } from '@emotion/css';\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\nimport { EditorStack } from './EditorStack';\n\ninterface EditorRowProps {\n  children?: React.ReactNode;\n}\n\nexport const EditorRow = ({ children }: EditorRowProps) => {\n  const styles = useStyles2(getStyles);\n\n  return (\n    <div className={styles.root}>\n      <EditorStack gap={2}>{children}</EditorStack>\n    </div>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    root: css({\n      padding: theme.spacing(1),\n      backgroundColor: theme.colors.background.secondary,\n      borderRadius: theme.shape.radius.default,\n    }),\n  };\n};\n","import React from 'react';\nimport { EditorStack } from './EditorStack';\n\ninterface EditorRowsProps {\n  children?: React.ReactNode;\n}\n\nexport const EditorRows = ({ children }: EditorRowsProps) => {\n  return (\n    <EditorStack gap={0.5} direction=\"column\">\n      {children}\n    </EditorStack>\n  );\n};\n","import React, { type ComponentProps } from 'react';\nimport { css } from '@emotion/css';\nimport { Switch } from '@grafana/ui';\n\n// Wrapper component around <Switch /> that properly aligns it in <EditorField />\nexport const EditorSwitch = (props: ComponentProps<typeof Switch>) => {\n  const styles = getStyles();\n\n  return (\n    <div className={styles.switch}>\n      <Switch {...props} />\n    </div>\n  );\n};\n\nconst getStyles = () => {\n  return {\n    switch: css({\n      display: 'flex',\n      alignItems: 'center',\n      minHeight: 30,\n    }),\n  };\n};\n","import React from 'react';\ninterface FlexItemProps {\n  grow?: number;\n  shrink?: number;\n}\n\nexport const FlexItem = ({ grow, shrink }: FlexItemProps) => {\n  return <div style={{ display: 'block', flexGrow: grow, flexShrink: shrink }} />;\n};\n","import React, { useState } from 'react';\nimport { css, cx } from '@emotion/css';\nimport { type GroupBase } from 'react-select';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport {\n  Select,\n  type SelectCommonProps,\n  type SelectContainerProps,\n  SelectContainer as BaseSelectContainer,\n  useStyles2,\n} from '@grafana/ui';\n\ninterface InlineSelectProps<T> extends SelectCommonProps<T> {\n  label?: string;\n}\n\nexport function InlineSelect<T>({ label: labelProp, ...props }: InlineSelectProps<T>) {\n  const [id] = useState(() => Math.random().toString(16).slice(2));\n  const styles = useStyles2(getSelectStyles);\n  const components = {\n    SelectContainer,\n    ValueContainer,\n    SingleValue: ValueContainer,\n  };\n\n  return (\n    <div className={styles.root}>\n      {labelProp && (\n        <label className={styles.label} htmlFor={id}>\n          {labelProp}\n          {':'}&nbsp;\n        </label>\n      )}\n      <Select inputId={id} {...props} components={components} />\n    </div>\n  );\n}\n\nconst SelectContainer = <Option, isMulti extends boolean, Group extends GroupBase<Option>>(\n  props: SelectContainerProps<Option, isMulti, Group>\n) => {\n  const { children } = props;\n\n  const styles = useStyles2(getSelectStyles);\n\n  return (\n    <BaseSelectContainer {...props} className={cx(props.className, styles.container)}>\n      {children}\n    </BaseSelectContainer>\n  );\n};\n\nconst ValueContainer = <Option, isMulti extends boolean, Group extends GroupBase<Option>>(\n  props: SelectContainerProps<Option, isMulti, Group>\n) => {\n  const { className, children } = props;\n  const styles = useStyles2(getSelectStyles);\n\n  return <div className={cx(className, styles.valueContainer)}>{children}</div>;\n};\n\nconst getSelectStyles = (theme: GrafanaTheme2) => ({\n  root: css({\n    display: 'flex',\n    fontSize: 12,\n    alignItems: 'center',\n  }),\n\n  label: css({\n    color: theme.colors.text.secondary,\n    whiteSpace: 'nowrap',\n  }),\n\n  container: css({\n    background: 'none',\n    borderColor: 'transparent',\n  }),\n\n  valueContainer: css({\n    display: 'flex',\n    alignItems: 'center',\n    flex: 'initial',\n    color: theme.colors.text.secondary,\n    fontSize: 12,\n  }),\n});\n","import React from 'react';\nimport { css, cx } from '@emotion/css';\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\n\nexport interface SpaceProps {\n  v?: number;\n  h?: number;\n  layout?: 'block' | 'inline';\n}\n\nexport const Space = ({ v = 0, h = 0, layout = 'block' }: SpaceProps) => {\n  const styles = useStyles2(getStyles, v, h, layout);\n\n  return <span className={cx(styles.wrapper)} />;\n};\n\nconst getStyles = (theme: GrafanaTheme2, v: number, h: number, layout: 'block' | 'inline') => ({\n  wrapper: css([\n    {\n      paddingRight: theme.spacing(h ?? 0),\n      paddingBottom: theme.spacing(v ?? 0),\n    },\n    layout === 'inline' && {\n      display: 'inline-block',\n    },\n    layout === 'block' && {\n      display: 'block',\n    },\n  ]),\n});\n","import { EditorMode, QueryFormat, type SQLQuery } from './types';\nimport { createFunctionField, setGroupByField } from './utils/sql.utils';\n\nexport function applyQueryDefaults(q?: SQLQuery): SQLQuery {\n  let editorMode = q?.editorMode || EditorMode.Builder;\n\n  // Switching to code editor if the query was created before visual query builder was introduced.\n  if (q?.editorMode === undefined && q?.rawSql !== undefined) {\n    editorMode = EditorMode.Code;\n  }\n\n  const result: SQLQuery = {\n    ...q,\n    refId: q?.refId || 'A',\n    format: q?.format !== undefined ? q.format : QueryFormat.Table,\n    rawSql: q?.rawSql || '',\n    editorMode,\n    sql: q?.sql || {\n      columns: [createFunctionField()],\n      groupBy: [setGroupByField()],\n      limit: 50,\n    },\n  };\n\n  return result;\n}\n","import React, { useRef, useEffect } from 'react';\n\nimport { Button, Icon, Modal } from '@grafana/ui';\n\ntype ConfirmModalProps = {\n  isOpen: boolean;\n  onCancel?: () => void;\n  onDiscard?: () => void;\n  onCopy?: () => void;\n};\nexport function ConfirmModal({ isOpen, onCancel, onDiscard, onCopy }: ConfirmModalProps) {\n  const buttonRef = useRef<HTMLButtonElement>(null);\n\n  // Moved from grafana/ui\n  useEffect(() => {\n    // for some reason autoFocus property did no work on this button, but this does\n    if (isOpen) {\n      buttonRef.current?.focus();\n    }\n  }, [isOpen]);\n\n  return (\n    <Modal\n      title={\n        <div className=\"modal-header-title\">\n          <Icon name=\"exclamation-triangle\" size=\"lg\" />\n          <span className=\"p-l-1\">Warning</span>\n        </div>\n      }\n      ariaLabel=\"Warning\"\n      onDismiss={onCancel}\n      isOpen={isOpen}\n    >\n      <p>\n        Builder mode does not display changes made in code. The query builder will display the last changes you made in\n        builder mode.\n      </p>\n      <p>Do you want to copy your code to the clipboard?</p>\n      <Modal.ButtonRow>\n        <Button type=\"button\" variant=\"secondary\" onClick={onCancel} fill=\"outline\">\n          Cancel\n        </Button>\n        <Button variant=\"destructive\" type=\"button\" onClick={onDiscard} ref={buttonRef}>\n          Discard code and switch\n        </Button>\n        <Button variant=\"primary\" onClick={onCopy}>\n          Copy code and switch\n        </Button>\n      </Modal.ButtonRow>\n    </Modal>\n  );\n}\n","import React, { useEffect } from 'react';\nimport { useAsync } from 'react-use';\n\nimport { type SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nimport { type DB, type ResourceSelectorProps, toOption } from './types';\n\ninterface DatasetSelectorProps extends ResourceSelectorProps {\n  db: DB;\n  dataset?: string;\n  catalog?: string; // When provided, fetch schemas instead of datasets\n  value: string | null;\n  applyDefault?: boolean;\n  disabled?: boolean;\n  onChange: (v: SelectableValue) => void;\n  inputId?: string;\n  enableCatalogs?: boolean;\n  'data-testid'?: string;\n}\n\nexport const DatasetSelector = ({\n  db,\n  dataset,\n  catalog,\n  value,\n  onChange,\n  disabled,\n  className,\n  applyDefault,\n  inputId,\n  enableCatalogs,\n  'data-testid': dataTestId,\n}: DatasetSelectorProps) => {\n  const state = useAsync(async () => {\n    // If a default dataset is provided, use it\n    if (dataset) {\n      onChange(toOption(dataset));\n      return [toOption(dataset)];\n    }\n\n    // Fetch datasets - when catalog is provided, db.datasets(catalog) returns schemas for that catalog\n    const datasets = await db.datasets(catalog);\n    return datasets.map(toOption);\n  }, [catalog]);\n\n  useEffect(() => {\n    if (!applyDefault) {\n      return;\n    }\n    // Set default dataset when values are fetched\n    if (!value) {\n      if (state.value && state.value[0]) {\n        onChange(state.value[0]);\n      }\n    } else {\n      if (state.value && state.value.find((v) => v.value === value) === undefined) {\n        // if value is set and newly fetched values does not contain selected value\n        if (state.value.length > 0) {\n          onChange(state.value[0]);\n        }\n      }\n    }\n  }, [state.value, value, applyDefault, onChange]);\n\n  return (\n    <Select\n      inputId={inputId}\n      className={className}\n      aria-label=\"Dataset selector\"\n      value={value}\n      options={state.value}\n      onChange={onChange}\n      disabled={disabled}\n      isLoading={state.loading}\n      menuShouldPortal={true}\n      data-testid={dataTestId}\n      placeholder={enableCatalogs ? 'Select schema' : 'Select dataset'}\n    />\n  );\n};\n","import React, { useState, useEffect, useCallback } from 'react';\nimport { Select } from '@grafana/ui';\nimport { type SelectableValue } from '@grafana/data';\nimport { type DB } from './types';\n\nexport interface CatalogSelectorProps {\n  db: DB;\n  inputId?: string;\n  value: string | null;\n  onChange: (catalog: string | null) => void;\n}\n\nexport const CatalogSelector = ({ db, inputId, value, onChange }: CatalogSelectorProps) => {\n  const [catalogs, setCatalogs] = useState<Array<SelectableValue<string>>>([]);\n  const [isLoading, setIsLoading] = useState(false);\n\n  const loadCatalogs = useCallback(async () => {\n    if (!db.catalogs) {\n      return;\n    }\n\n    setIsLoading(true);\n    try {\n      const catalogList = await db.catalogs();\n      const catalogOptions = catalogList.map((catalog) => ({\n        label: catalog,\n        value: catalog,\n      }));\n      setCatalogs(catalogOptions);\n    } catch (error) {\n      console.error('Error loading catalogs:', error);\n      setCatalogs([]);\n    } finally {\n      setIsLoading(false);\n    }\n  }, [db]);\n\n  useEffect(() => {\n    loadCatalogs();\n  }, [db, loadCatalogs]);\n\n  const handleChange = (selectable: SelectableValue<string>) => {\n    onChange(selectable?.value || null);\n  };\n\n  const selectedValue = catalogs.find((catalog) => catalog.value === value) || null;\n\n  return (\n    <Select\n      inputId={inputId}\n      options={catalogs}\n      value={selectedValue}\n      onChange={handleChange}\n      isLoading={isLoading}\n      placeholder=\"Select catalog\"\n      isClearable\n      allowCustomValue\n      menuShouldPortal={true}\n    />\n  );\n};\n","import React from 'react';\nimport { useAsync } from 'react-use';\nimport { type SelectableValue, toOption } from '@grafana/data';\nimport { Select } from '@grafana/ui';\nimport { type DB, type ResourceSelectorProps, type QueryWithDefaults } from './types';\n\ninterface TableSelectorProps extends ResourceSelectorProps {\n  db: DB;\n  dataset?: string; // When catalog is present, this represents the schema. Otherwise, it's the dataset.\n  catalog?: string;\n  value: string | null;\n  query: QueryWithDefaults;\n  onChange: (v: SelectableValue) => void;\n  inputId?: string;\n  enableCatalogs?: boolean;\n}\n\nexport const TableSelector = ({\n  db,\n  dataset,\n  catalog,\n  value,\n  className,\n  onChange,\n  inputId,\n  enableCatalogs,\n}: TableSelectorProps) => {\n  const state = useAsync(async () => {\n    if (!dataset && !catalog) {\n      return [];\n    }\n\n    // When catalogs are enabled, we need both catalog and dataset (acting as schema) to load tables\n    if (enableCatalogs && (!catalog || !dataset)) {\n      return [];\n    }\n\n    // db.tables(dataset, catalog)\n    // dataset acts as schema when catalog is present, otherwise it's the dataset\n    const tables = await db.tables(dataset, catalog);\n    return tables.map(toOption);\n  }, [dataset, catalog, enableCatalogs]);\n\n  return (\n    <Select\n      inputId={inputId}\n      className={className}\n      aria-label=\"Table selector\"\n      value={value}\n      options={state.value}\n      onChange={onChange}\n      isLoading={state.loading}\n      menuShouldPortal={true}\n      placeholder={state.loading ? 'Loading tables' : 'Select table'}\n    />\n  );\n};\n","import React from 'react';\nimport { Button, type IconName, type PopoverContent, Tooltip } from '@grafana/ui';\n\ntype RunQueryButtonProps = {\n  ariaLabel?: string;\n  queryInvalid?: boolean;\n  invalidQueryTooltip?: PopoverContent;\n  disabled?: boolean;\n  queryRunning?: boolean;\n  onClick: () => void;\n  dataTestId?: string;\n};\n\nexport const RunQueryButton = ({\n  ariaLabel = 'Query editor Run button',\n  queryRunning = false,\n  queryInvalid = false,\n  invalidQueryTooltip,\n  disabled = false,\n  onClick,\n  dataTestId,\n}: RunQueryButtonProps) => {\n  let icon: IconName | undefined = queryInvalid ? 'exclamation-triangle' : undefined;\n  if (queryRunning) {\n    icon = 'fa fa-spinner';\n  }\n\n  const RunButton = (\n    <Button\n      aria-label={ariaLabel}\n      size=\"sm\"\n      variant=\"secondary\"\n      icon={icon}\n      disabled={disabled || queryRunning}\n      onClick={onClick}\n      data-testid={dataTestId}\n    >\n      Run query\n    </Button>\n  );\n\n  return queryInvalid ? (\n    <Tooltip\n      theme=\"error\"\n      placement=\"top\"\n      content={\n        invalidQueryTooltip ?? (\n          <>\n            Your query is invalid. Check below for details. <br />\n            However, you can still run this query.\n          </>\n        )\n      }\n    >\n      {RunButton}\n    </Tooltip>\n  ) : (\n    RunButton\n  );\n};\n","import React, { useCallback, useState, useId } from 'react';\nimport { useCopyToClipboard } from 'react-use';\n\nimport { type SelectableValue } from '@grafana/data';\n\nimport { ConfirmModal } from './ConfirmModal';\nimport { DatasetSelector } from './DatasetSelector';\nimport { CatalogSelector } from './CatalogSelector';\nimport { TableSelector } from './TableSelector';\nimport { InlineSwitch, RadioButtonGroup } from '@grafana/ui';\nimport { EditorField } from './EditorField';\nimport { EditorHeader } from './EditorHeader';\nimport { EditorRow } from './EditorRow';\nimport { FlexItem } from './FlexItem';\nimport { InlineSelect } from './InlineSelect';\nimport { Space } from './Space';\nimport { RunQueryButton } from './RunQueryButton';\nimport {\n  type DB,\n  type SQLQuery,\n  type QueryRowFilter,\n  type QueryWithDefaults,\n  EditorMode,\n  QueryFormat,\n  QUERY_FORMAT_OPTIONS,\n} from './types';\nimport { getRawSqlFn } from './utils/sql.utils';\n\ninterface QueryHeaderProps {\n  db: DB;\n  defaultDataset: string;\n  enableDatasets: boolean;\n  enableCatalogs?: boolean;\n  query: QueryWithDefaults;\n  onChange: (query: SQLQuery) => void;\n  onRunQuery: () => void;\n  onQueryRowChange: (queryRowFilter: QueryRowFilter) => void;\n  queryRowFilter: QueryRowFilter;\n  isQueryRunnable: boolean;\n  labels?: Map<string, string>;\n}\n\nconst editorModes = [\n  { label: 'Builder', value: EditorMode.Builder },\n  { label: 'Code', value: EditorMode.Code },\n];\n\nexport function QueryHeader({\n  db,\n  defaultDataset,\n  enableDatasets,\n  enableCatalogs,\n  query,\n  queryRowFilter,\n  onChange,\n  onRunQuery,\n  onQueryRowChange,\n  isQueryRunnable,\n  labels = new Map([['dataset', 'Dataset']]),\n}: QueryHeaderProps) {\n  const { editorMode } = query;\n  const [_, copyToClipboard] = useCopyToClipboard();\n  const [showConfirm, setShowConfirm] = useState(false);\n  const toRawSql = getRawSqlFn(db);\n  const htmlId = useId();\n\n  // Derive enableCatalogs from db.disableCatalogs when not explicitly provided\n  // Catalogs are disabled by default (when disableCatalogs is undefined or true)\n  const catalogsEnabled = enableCatalogs ?? db.disableCatalogs === false;\n\n  // When catalogs are enabled, datasets MUST be enabled (they act as schema selector)\n  // This ensures the dataset selector is shown to select schemas\n  const effectiveEnableDatasets = catalogsEnabled ? true : enableDatasets;\n\n  const onEditorModeChange = useCallback(\n    (newEditorMode: EditorMode) => {\n      if (editorMode === EditorMode.Code) {\n        setShowConfirm(true);\n        return;\n      }\n      onChange({ ...query, editorMode: newEditorMode });\n    },\n    [editorMode, onChange, query]\n  );\n\n  const onFormatChange = (e: SelectableValue) => {\n    const next = { ...query, format: e.value !== undefined ? e.value : QueryFormat.Table };\n    onChange(next);\n  };\n\n  const onDatasetChange = (e: SelectableValue) => {\n    // dataset field has dual meaning:\n    // - When catalogs enabled: dataset = schema\n    // - When catalogs disabled: dataset = dataset\n    const datasetValue = e.value || undefined;\n    if (datasetValue === query.dataset) {\n      return;\n    }\n    const next: SQLQuery = {\n      ...query,\n      dataset: datasetValue,\n      table: undefined,\n      sql: undefined,\n      rawSql: '',\n    };\n    onChange(next);\n  };\n\n  const onCatalogChange = (catalog: string | null) => {\n    const catalogValue = catalog || undefined;\n    if (catalogValue === query.catalog) {\n      return;\n    }\n\n    const next: SQLQuery = {\n      ...query,\n      catalog: catalogValue,\n      dataset: undefined, // Reset dataset (which acts as schema when catalog is present)\n      table: undefined,\n      sql: undefined,\n      rawSql: '',\n    };\n    onChange(next);\n  };\n\n  const onTableChange = (e: SelectableValue) => {\n    if (e.value === query.table) {\n      return;\n    }\n\n    const next: SQLQuery = {\n      ...query,\n      table: e.value,\n      sql: undefined,\n      rawSql: '',\n    };\n    onChange(next);\n  };\n\n  return (\n    <>\n      <EditorHeader>\n        <InlineSelect\n          label=\"Format\"\n          value={query.format}\n          placeholder=\"Select format\"\n          menuShouldPortal\n          onChange={onFormatChange}\n          options={QUERY_FORMAT_OPTIONS}\n        />\n        {editorMode === EditorMode.Builder && (\n          <>\n            <InlineSwitch\n              id={`sql-filter-${htmlId}`}\n              label=\"Filter\"\n              transparent={true}\n              showLabel={true}\n              value={queryRowFilter.filter}\n              onChange={(ev) =>\n                ev.target instanceof HTMLInputElement &&\n                onQueryRowChange({ ...queryRowFilter, filter: ev.target.checked })\n              }\n            />\n\n            <InlineSwitch\n              id={`sql-group-${htmlId}`}\n              label=\"Group\"\n              transparent={true}\n              showLabel={true}\n              value={queryRowFilter.group}\n              onChange={(ev) =>\n                ev.target instanceof HTMLInputElement &&\n                onQueryRowChange({ ...queryRowFilter, group: ev.target.checked })\n              }\n            />\n\n            <InlineSwitch\n              id={`sql-order-${htmlId}`}\n              label=\"Order\"\n              transparent={true}\n              showLabel={true}\n              value={queryRowFilter.order}\n              onChange={(ev) =>\n                ev.target instanceof HTMLInputElement &&\n                onQueryRowChange({ ...queryRowFilter, order: ev.target.checked })\n              }\n            />\n\n            <InlineSwitch\n              id={`sql-preview-${htmlId}`}\n              label=\"Preview\"\n              transparent={true}\n              showLabel={true}\n              value={queryRowFilter.preview}\n              onChange={(ev) =>\n                ev.target instanceof HTMLInputElement &&\n                onQueryRowChange({ ...queryRowFilter, preview: ev.target.checked })\n              }\n            />\n          </>\n        )}\n\n        <FlexItem grow={1} />\n\n        <RunQueryButton queryInvalid={!isQueryRunnable} onClick={() => onRunQuery()} />\n\n        <RadioButtonGroup options={editorModes} size=\"sm\" value={editorMode} onChange={onEditorModeChange} />\n\n        <ConfirmModal\n          isOpen={showConfirm}\n          onCopy={() => {\n            setShowConfirm(false);\n            copyToClipboard(query.rawSql!);\n            onChange({\n              ...query,\n              rawSql: toRawSql(query),\n              editorMode: EditorMode.Builder,\n            });\n          }}\n          onDiscard={() => {\n            setShowConfirm(false);\n            onChange({\n              ...query,\n              rawSql: toRawSql(query),\n              editorMode: EditorMode.Builder,\n            });\n          }}\n          onCancel={() => setShowConfirm(false)}\n        />\n      </EditorHeader>\n\n      {editorMode === EditorMode.Builder && (\n        <>\n          <Space v={0.5} />\n\n          <EditorRow>\n            {/* Catalog selector: only when catalogs are not disabled */}\n            {catalogsEnabled && (\n              <EditorField label={labels.get('catalog') || 'Catalog'} width={25}>\n                <CatalogSelector\n                  db={db}\n                  inputId={`sql-catalog-${htmlId}`}\n                  value={query.catalog === undefined ? null : query.catalog}\n                  onChange={onCatalogChange}\n                />\n              </EditorField>\n            )}\n\n            {/* Schema selector when catalogs enabled, dataset selector otherwise */}\n            {effectiveEnableDatasets && (\n              <EditorField\n                label={catalogsEnabled ? labels.get('schema') || 'Schema' : labels.get('dataset') || 'Dataset'}\n                width={25}\n              >\n                <DatasetSelector\n                  db={db}\n                  inputId={catalogsEnabled ? `sql-schema-${htmlId}` : `sql-dataset-${htmlId}`}\n                  data-testid={catalogsEnabled ? 'schema-selector' : 'dataset-selector'}\n                  dataset={catalogsEnabled ? undefined : defaultDataset}\n                  value={query.dataset === undefined ? null : query.dataset}\n                  onChange={onDatasetChange}\n                  catalog={catalogsEnabled ? query.catalog : undefined}\n                />\n              </EditorField>\n            )}\n\n            {/* Table selector: always shown */}\n            <EditorField label={labels.get('table') || 'Table'} width={25}>\n              <TableSelector\n                db={db}\n                inputId={`sql-table-${htmlId}`}\n                dataset={query.dataset || (catalogsEnabled ? undefined : defaultDataset)}\n                catalog={catalogsEnabled ? query.catalog : undefined}\n                query={query}\n                value={query.table === undefined ? null : query.table}\n                onChange={onTableChange}\n                enableCatalogs={catalogsEnabled}\n                applyDefault\n              />\n            </EditorField>\n          </EditorRow>\n        </>\n      )}\n    </>\n  );\n}\n","import { format, type SqlLanguage } from 'sql-formatter';\n\n/**\n * Format SQL while preserving Grafana template variable tokens.\n * Treats `${...}`, `$__...`, and `$var` as parameters so the\n * formatter does not split or reflow them, then normalizes any\n * whitespace inside those tokens.\n */\nexport function formatSQL(q: string, language: SqlLanguage = 'sql') {\n  const formatted = format(q, {\n    language,\n    paramTypes: {\n      custom: [\n        {\n          regex: '\\\\$\\\\s*\\\\{[^}]*\\\\}|\\\\$\\\\s*__\\\\w+(?:\\\\([^)]*\\\\))?|\\\\$\\\\s*\\\\w+',\n        },\n      ],\n    },\n  });\n  return formatted.replace(/(\\$\\s*\\{[^}]*\\})|(\\$\\s*__\\w+(?:\\([^)]*\\))?)|(\\$\\s*\\w+)/g, (m: string) =>\n    m.replace(/\\s/g, '')\n  );\n}\n","import React, { useCallback, useEffect, useRef } from 'react';\n\nimport { type SQLQuery } from '../types';\n\nimport { formatSQL } from '../utils/formatSQL';\nimport { type LanguageCompletionProvider, SQLEditor } from '../../SQLEditor';\nimport type { SqlLanguage } from 'sql-formatter';\n\ntype Props = {\n  query: SQLQuery;\n  onChange: (value: SQLQuery, processQuery: boolean) => void;\n  children?: (props: { formatQuery: () => void }) => React.ReactNode;\n  width?: number;\n  height?: number;\n  completionProvider: LanguageCompletionProvider;\n  language?: SqlLanguage;\n};\n\nexport function QueryEditorRaw({\n  children,\n  onChange,\n  query,\n  width,\n  height,\n  completionProvider,\n  language = 'sql',\n}: Props) {\n  // We need to pass query via ref to SQLEditor as onChange is executed via monacoEditor.onDidChangeModelContent callback, not onChange property\n  const queryRef = useRef<SQLQuery>(query);\n  useEffect(() => {\n    queryRef.current = query;\n  }, [query]);\n\n  const onRawQueryChange = useCallback(\n    (rawSql: string, processQuery: boolean) => {\n      const newQuery = {\n        ...queryRef.current,\n        rawQuery: true,\n        rawSql,\n      };\n      onChange(newQuery, processQuery);\n    },\n    [onChange]\n  );\n\n  return (\n    <SQLEditor\n      width={width}\n      height={height}\n      query={query.rawSql!}\n      onChange={onRawQueryChange}\n      language={{ id: 'sql', completionProvider, formatter: (q) => formatSQL(q, language) }}\n    >\n      {children}\n    </SQLEditor>\n  );\n}\n","import { css } from '@emotion/css';\nimport React, { useState, useMemo, useEffect } from 'react';\nimport { useAsyncFn, useDebounce } from 'react-use';\nimport { formattedValueToString, getValueFormat, type TimeRange } from '@grafana/data';\nimport { Icon, Spinner, useTheme2 } from '@grafana/ui';\nimport { type DB, type SQLQuery, type ValidationResults } from '../types';\n\nexport interface QueryValidatorProps {\n  db: DB;\n  query: SQLQuery;\n  range?: TimeRange;\n  onValidate: (isValid: boolean) => void;\n}\n\nexport function QueryValidator({ db, query, onValidate, range }: QueryValidatorProps) {\n  const [validationResult, setValidationResult] = useState<ValidationResults | null>();\n  const theme = useTheme2();\n  const valueFormatter = useMemo(() => getValueFormat('bytes'), []);\n\n  const styles = useMemo(() => {\n    return {\n      error: css`\n        color: ${theme.colors.error.text};\n        font-size: ${theme.typography.bodySmall.fontSize};\n        font-family: ${theme.typography.fontFamilyMonospace};\n      `,\n      valid: css`\n        color: ${theme.colors.success.text};\n      `,\n      info: css`\n        color: ${theme.colors.text.secondary};\n      `,\n    };\n  }, [theme]);\n\n  const [state, validateQuery] = useAsyncFn(\n    async (q: SQLQuery) => {\n      if (q.rawSql?.trim() === '') {\n        return null;\n      }\n\n      return await db.validateQuery(q, range);\n    },\n    [db]\n  );\n\n  const [,] = useDebounce(\n    async () => {\n      const result = await validateQuery(query);\n      if (result) {\n        setValidationResult(result);\n      }\n\n      return null;\n    },\n    1000,\n    [query, validateQuery]\n  );\n\n  useEffect(() => {\n    if (validationResult?.isError) {\n      onValidate(false);\n    }\n    if (validationResult?.isValid) {\n      onValidate(true);\n    }\n  }, [validationResult, onValidate]);\n\n  if (!state.value && !state.loading) {\n    return null;\n  }\n\n  const error = state.value?.error ? processErrorMessage(state.value.error) : '';\n\n  return (\n    <>\n      {state.loading && (\n        <div className={styles.info}>\n          <Spinner inline={true} size={12} /> Validating query...\n        </div>\n      )}\n      {!state.loading && state.value && (\n        <>\n          <>\n            {state.value.isValid && state.value.statistics && (\n              <div className={styles.valid}>\n                <Icon name=\"check\" /> This query will process{' '}\n                <strong>{formattedValueToString(valueFormatter(state.value.statistics.TotalBytesProcessed))}</strong>{' '}\n                when run.\n              </div>\n            )}\n          </>\n\n          <>{state.value.isError && <div className={styles.error}>{error}</div>}</>\n        </>\n      )}\n    </>\n  );\n}\n\nfunction processErrorMessage(error: string) {\n  const splat = error.split(':');\n  if (splat.length > 2) {\n    return splat.slice(2).join(':');\n  }\n  return error;\n}\n","import { css } from '@emotion/css';\nimport React, { useMemo, useState } from 'react';\n\nimport { Icon, IconButton, Stack, Tooltip, useTheme2 } from '@grafana/ui';\n\nimport { QueryValidator, type QueryValidatorProps } from './QueryValidator';\nimport { reportInteraction } from '@grafana/runtime';\n\ninterface QueryToolboxProps extends Omit<QueryValidatorProps, 'onValidate'> {\n  showTools?: boolean;\n  isExpanded?: boolean;\n  onFormatCode?: () => void;\n  onExpand?: (expand: boolean) => void;\n  onValidate?: (isValid: boolean) => void;\n}\n\nexport function QueryToolbox({ showTools, onFormatCode, onExpand, isExpanded, ...validatorProps }: QueryToolboxProps) {\n  const theme = useTheme2();\n  const [validationResult, setValidationResult] = useState<boolean>();\n\n  const styles = useMemo(() => {\n    return {\n      container: css`\n        border: 1px solid ${theme.colors.border.medium};\n        border-top: none;\n        padding: ${theme.spacing(0.5, 0.5, 0.5, 0.5)};\n        display: flex;\n        flex-grow: 1;\n        justify-content: space-between;\n        font-size: ${theme.typography.bodySmall.fontSize};\n      `,\n      error: css`\n        color: ${theme.colors.error.text};\n        font-size: ${theme.typography.bodySmall.fontSize};\n        font-family: ${theme.typography.fontFamilyMonospace};\n      `,\n      valid: css`\n        color: ${theme.colors.success.text};\n      `,\n      info: css`\n        color: ${theme.colors.text.secondary};\n      `,\n      hint: css`\n        color: ${theme.colors.text.disabled};\n        white-space: nowrap;\n        cursor: help;\n      `,\n    };\n  }, [theme]);\n\n  let style = {};\n\n  if (!showTools && validationResult === undefined) {\n    style = { height: 0, padding: 0, visibility: 'hidden' };\n  }\n  const onFormatClick = () => {\n    reportInteraction('grafana_sql_query_editor_format_click');\n    onFormatCode?.();\n  };\n\n  return (\n    <div className={styles.container} style={style}>\n      <div>\n        {validatorProps.onValidate && (\n          <QueryValidator\n            {...validatorProps}\n            onValidate={(result: boolean) => {\n              setValidationResult(result);\n              validatorProps.onValidate!(result);\n            }}\n          />\n        )}\n      </div>\n      {showTools && (\n        <div>\n          <Stack gap={1} alignItems=\"center\">\n            {onFormatCode && (\n              <IconButton onClick={onFormatClick} name=\"brackets-curly\" size=\"xs\" tooltip=\"Format query\" />\n            )}\n            {onExpand && (\n              <IconButton\n                onClick={() => onExpand(!isExpanded)}\n                name={isExpanded ? 'angle-up' : 'angle-down'}\n                size=\"xs\"\n                tooltip={isExpanded ? 'Collapse editor' : 'Expand editor'}\n              />\n            )}\n            <Tooltip content=\"Hit CTRL/CMD+Return to run query\">\n              <Icon className={styles.hint} name=\"keyboard\" />\n            </Tooltip>\n          </Stack>\n        </div>\n      )}\n    </div>\n  );\n}\n","import React, { useMemo, useState } from 'react';\nimport { css } from '@emotion/css';\nimport { useMeasure } from 'react-use';\n// @ts-ignore\nimport AutoSizer from 'react-virtualized-auto-sizer';\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { Modal, useStyles2, useTheme2 } from '@grafana/ui';\nimport { QueryEditorRaw } from './QueryEditorRaw';\nimport { QueryToolbox } from './QueryToolbox';\nimport { type QueryEditorProps, type SQLQuery } from '../types';\nimport type { SqlLanguage } from 'sql-formatter';\n\ninterface RawEditorProps extends Omit<QueryEditorProps, 'onChange'> {\n  onRunQuery: () => void;\n  onChange: (q: SQLQuery, processQuery: boolean) => void;\n  onValidate: (isValid: boolean) => void;\n  queryToValidate: SQLQuery;\n  language?: SqlLanguage;\n}\n\nexport function RawEditor({\n  db,\n  query,\n  onChange,\n  onRunQuery,\n  onValidate,\n  queryToValidate,\n  range,\n  language = 'sql',\n}: RawEditorProps) {\n  const theme = useTheme2();\n  const styles = useStyles2(getStyles);\n  const [isExpanded, setIsExpanded] = useState(false);\n  const [toolboxRef, toolboxMeasure] = useMeasure<HTMLDivElement>();\n  const [editorRef, editorMeasure] = useMeasure<HTMLDivElement>();\n\n  const completionProvider = useMemo(() => db.getSqlCompletionProvider(), [db]);\n\n  const renderQueryEditor = (width?: number, height?: number) => {\n    return (\n      <QueryEditorRaw\n        completionProvider={completionProvider}\n        query={query}\n        width={width}\n        language={language}\n        height={height ? height - toolboxMeasure.height : undefined}\n        onChange={onChange}\n      >\n        {({ formatQuery }) => {\n          return (\n            <div ref={toolboxRef}>\n              <QueryToolbox\n                db={db}\n                query={queryToValidate}\n                onValidate={onValidate}\n                onFormatCode={formatQuery}\n                showTools\n                range={range}\n                onExpand={setIsExpanded}\n                isExpanded={isExpanded}\n              />\n            </div>\n          );\n        }}\n      </QueryEditorRaw>\n    );\n  };\n\n  interface AutoSizerProps {\n    width: number;\n    height: number;\n  }\n\n  const renderEditor = (standalone = false) => {\n    return standalone ? (\n      <AutoSizer>\n        {({ width, height }: AutoSizerProps) => {\n          return renderQueryEditor(width, height);\n        }}\n      </AutoSizer>\n    ) : (\n      <div ref={editorRef}>{renderQueryEditor()}</div>\n    );\n  };\n\n  const renderPlaceholder = () => {\n    return (\n      <div\n        style={{\n          width: editorMeasure.width,\n          height: editorMeasure.height,\n          background: theme.colors.background.primary,\n          display: 'flex',\n          alignItems: 'center',\n          justifyContent: 'center',\n        }}\n      >\n        Editing in expanded code editor\n      </div>\n    );\n  };\n\n  return (\n    <>\n      {isExpanded ? renderPlaceholder() : renderEditor()}\n      {isExpanded && (\n        <Modal\n          title={`Query ${query.refId}`}\n          closeOnBackdropClick={false}\n          closeOnEscape={false}\n          className={styles.modal}\n          contentClassName={styles.modalContent}\n          isOpen={isExpanded}\n          onDismiss={() => {\n            setIsExpanded(false);\n          }}\n        >\n          {renderEditor(true)}\n        </Modal>\n      )}\n    </>\n  );\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n  return {\n    modal: css`\n      width: 95vw;\n      height: 95vh;\n    `,\n    modalContent: css`\n      height: 100%;\n      padding-top: 0;\n    `,\n  };\n}\n","import React from 'react';\nimport { css } from '@emotion/css';\nimport { useCopyToClipboard } from 'react-use';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { CodeEditor, Field, IconButton, useStyles2 } from '@grafana/ui';\n\nimport { formatSQL } from '../utils/formatSQL';\nimport type { SqlLanguage } from 'sql-formatter';\n\ntype PreviewProps = {\n  rawSql: string;\n  language?: SqlLanguage;\n};\n\nexport function Preview({ rawSql, language = 'sql' }: PreviewProps) {\n  // TODO: use zero index to give feedback about copy success\n  const [_, copyToClipboard] = useCopyToClipboard();\n  const styles = useStyles2(getStyles);\n\n  const labelElement = (\n    <div className={styles.labelWrapper}>\n      <label className={styles.label}>Preview</label>\n      <IconButton tooltip=\"Copy to clipboard\" onClick={() => copyToClipboard(rawSql)} name=\"copy\" />\n    </div>\n  );\n\n  return (\n    <Field label={labelElement} className={styles.grow}>\n      <CodeEditor\n        language=\"sql\"\n        height={80}\n        value={formatSQL(rawSql, language)}\n        monacoOptions={{ scrollbar: { vertical: 'hidden' }, scrollBeyondLastLine: false }}\n        readOnly={true}\n        showMiniMap={false}\n      />\n    </Field>\n  );\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n  return {\n    grow: css({ flexGrow: 1 }),\n    label: css({ fontSize: 12, fontWeight: theme.typography.fontWeightMedium }),\n    labelWrapper: css({ display: 'flex', justifyContent: 'space-between', paddingBottom: theme.spacing(0.5) }),\n  };\n}\n","import { useCallback } from 'react';\n\nimport { type DB, type SQLExpression, type SQLQuery } from '../types';\n\nimport { getRawSqlFn } from './sql.utils';\n\ninterface UseSqlChange {\n  db: DB;\n  query: SQLQuery;\n  onQueryChange: (query: SQLQuery) => void;\n}\n\nexport function useSqlChange({ query, onQueryChange, db }: UseSqlChange) {\n  const onSqlChange = useCallback(\n    (sql: SQLExpression) => {\n      const toRawSql = getRawSqlFn(db);\n      const rawSql = toRawSql({\n        sql,\n        catalog: query.catalog,\n        dataset: query.dataset,\n        table: query.table,\n        refId: query.refId,\n      });\n      const newQuery: SQLQuery = { ...query, sql, rawSql };\n      onQueryChange(newQuery);\n    },\n    [db, onQueryChange, query]\n  );\n\n  return { onSqlChange };\n}\n","import React from 'react';\nimport { type SelectableValue } from '@grafana/data';\n\nimport { GroupByRow } from './GroupByRow';\nimport { type SQLQuery, type DB, type QueryWithDefaults } from '../types';\nimport { useSqlChange } from '../utils/useSqlChange';\n\ninterface SQLGroupByRowProps {\n  fields: SelectableValue[];\n  query: QueryWithDefaults;\n  onQueryChange: (query: SQLQuery) => void;\n  db: DB;\n}\n\nexport function SQLGroupByRow({ fields, query, onQueryChange, db }: SQLGroupByRowProps) {\n  const { onSqlChange } = useSqlChange({ query, onQueryChange, db });\n\n  return <GroupByRow columns={fields} sql={query.sql!} onSqlChange={onSqlChange} />;\n}\n","import { uniqueId } from 'lodash';\nimport React, { useCallback } from 'react';\nimport { type SelectableValue, toOption } from '@grafana/data';\nimport { Input, RadioButtonGroup, Select } from '@grafana/ui';\nimport { type SQLExpression } from '../types';\nimport { setPropertyField } from '../utils/sql.utils';\nimport { Space } from '../Space';\nimport { EditorField } from '../EditorField';\nimport { InputGroup } from '../InputGroup';\n\ntype OrderByRowProps = {\n  sql: SQLExpression;\n  onSqlChange: (sql: SQLExpression) => void;\n  columns?: Array<SelectableValue<string>>;\n  showOffset?: boolean;\n};\n\nconst sortOrderOptions = [\n  { description: 'Sort by ascending', value: 'ASC', icon: 'sort-amount-up' } as const,\n  { description: 'Sort by descending', value: 'DESC', icon: 'sort-amount-down' } as const,\n];\n\nexport function OrderByRow({ sql, onSqlChange, columns, showOffset }: OrderByRowProps) {\n  const onSortOrderChange = useCallback(\n    (item: 'ASC' | 'DESC') => {\n      const newSql: SQLExpression = { ...sql, orderByDirection: item };\n      onSqlChange(newSql);\n    },\n    [onSqlChange, sql]\n  );\n\n  const onLimitChange = useCallback(\n    (event: React.FormEvent<HTMLInputElement>) => {\n      const newSql: SQLExpression = { ...sql, limit: Number.parseInt(event.currentTarget.value, 10) };\n      onSqlChange(newSql);\n    },\n    [onSqlChange, sql]\n  );\n\n  const onOffsetChange = useCallback(\n    (event: React.FormEvent<HTMLInputElement>) => {\n      const newSql: SQLExpression = { ...sql, offset: Number.parseInt(event.currentTarget.value, 10) };\n      onSqlChange(newSql);\n    },\n    [onSqlChange, sql]\n  );\n\n  const onOrderByChange = useCallback(\n    (item: SelectableValue<string>) => {\n      const newSql: SQLExpression = { ...sql, orderBy: setPropertyField(item?.value) };\n      if (item === null) {\n        newSql.orderByDirection = undefined;\n      }\n      onSqlChange(newSql);\n    },\n    [onSqlChange, sql]\n  );\n\n  return (\n    <>\n      <EditorField label=\"Order by\" width={25}>\n        <InputGroup>\n          <Select\n            aria-label=\"Order by\"\n            options={columns}\n            value={sql.orderBy?.property.name ? toOption(sql.orderBy.property.name) : null}\n            isClearable\n            menuShouldPortal\n            onChange={onOrderByChange}\n          />\n\n          <Space h={1.5} />\n\n          <RadioButtonGroup\n            options={sortOrderOptions}\n            disabled={!sql?.orderBy?.property.name}\n            value={sql.orderByDirection}\n            onChange={onSortOrderChange}\n          />\n        </InputGroup>\n      </EditorField>\n      <EditorField label=\"Limit\" optional width={25}>\n        <Input type=\"number\" min={0} id={uniqueId('limit-')} value={sql.limit || ''} onChange={onLimitChange} />\n      </EditorField>\n      {showOffset && (\n        <EditorField label=\"Offset\" optional width={25}>\n          <Input type=\"number\" id={uniqueId('offset-')} value={sql.offset || ''} onChange={onOffsetChange} />\n        </EditorField>\n      )}\n    </>\n  );\n}\n","import React from 'react';\nimport { type SelectableValue } from '@grafana/data';\nimport { OrderByRow } from './OrderByRow';\nimport { type SQLQuery, type DB, type QueryWithDefaults } from '../types';\nimport { useSqlChange } from '../utils/useSqlChange';\n\ntype SQLOrderByRowProps = {\n  fields: SelectableValue[];\n  query: QueryWithDefaults;\n  onQueryChange: (query: SQLQuery) => void;\n  db: DB;\n};\n\nexport function SQLOrderByRow({ fields, query, onQueryChange, db }: SQLOrderByRowProps) {\n  const { onSqlChange } = useSqlChange({ query, onQueryChange, db });\n  let columnsWithIndices: SelectableValue[] = [];\n\n  if (fields) {\n    const options = query.sql?.columns?.map((c, i) => {\n      const value = c.name ? `${c.name}(${c.parameters?.map((p) => p.name)})` : c.parameters?.map((p) => p.name);\n      return {\n        value,\n        label: `${i + 1} - ${value}`,\n      };\n    });\n    columnsWithIndices = [\n      {\n        value: '',\n        label: 'Selected columns',\n        options,\n        expanded: true,\n      },\n      ...fields,\n    ];\n  }\n\n  return <OrderByRow sql={query.sql!} onSqlChange={onSqlChange} columns={columnsWithIndices} />;\n}\n","import { css } from '@emotion/css';\nimport { uniqueId } from 'lodash';\nimport React, { useCallback } from 'react';\nimport { type SelectableValue, toOption } from '@grafana/data';\nimport { Button, Select, useStyles2 } from '@grafana/ui';\nimport { EditorField } from '../EditorField';\nimport { type QueryEditorFunctionExpression, QueryEditorExpressionType } from '../expressions';\nimport { type SQLExpression } from '../types';\nimport { createFunctionField } from '../utils/sql.utils';\nimport { EditorStack } from '../EditorStack';\n\ninterface SelectRowProps {\n  sql: SQLExpression;\n  onSqlChange: (sql: SQLExpression) => void;\n  columns?: Array<SelectableValue<string>>;\n  functions?: Array<SelectableValue<string>>;\n}\n\nconst asteriskValue = { label: '*', value: '*' };\n\nexport function SelectRow({ sql, columns, onSqlChange, functions }: SelectRowProps) {\n  const styles = useStyles2(getStyles);\n  const columnsWithAsterisk = [asteriskValue, ...(columns || [])];\n\n  const onColumnChange = useCallback(\n    (item: QueryEditorFunctionExpression, index: number) => (column: SelectableValue<string>) => {\n      let modifiedItem = { ...item };\n      if (!item.parameters?.length) {\n        modifiedItem.parameters = [{ type: QueryEditorExpressionType.FunctionParameter, name: column.value } as const];\n      } else {\n        modifiedItem.parameters = item.parameters.map((p) =>\n          p.type === QueryEditorExpressionType.FunctionParameter ? { ...p, name: column.value } : p\n        );\n      }\n\n      const newSql: SQLExpression = {\n        ...sql,\n        columns: sql.columns?.map((c, i) => (i === index ? modifiedItem : c)),\n      };\n\n      onSqlChange(newSql);\n    },\n    [onSqlChange, sql]\n  );\n\n  const onAggregationChange = useCallback(\n    (item: QueryEditorFunctionExpression, index: number) => (aggregation: SelectableValue<string>) => {\n      const newItem = {\n        ...item,\n        name: aggregation?.value,\n      };\n      const newSql: SQLExpression = {\n        ...sql,\n        columns: sql.columns?.map((c, i) => (i === index ? newItem : c)),\n      };\n\n      onSqlChange(newSql);\n    },\n    [onSqlChange, sql]\n  );\n\n  const removeColumn = useCallback(\n    (index: number) => () => {\n      const clone = [...sql.columns!];\n      clone.splice(index, 1);\n      const newSql: SQLExpression = {\n        ...sql,\n        columns: clone,\n      };\n      onSqlChange(newSql);\n    },\n    [onSqlChange, sql]\n  );\n\n  const addColumn = useCallback(() => {\n    const newSql: SQLExpression = { ...sql, columns: [...sql.columns!, createFunctionField()] };\n    onSqlChange(newSql);\n  }, [onSqlChange, sql]);\n\n  return (\n    <EditorStack gap={2} alignItems=\"end\" direction=\"column\">\n      {sql.columns?.map((item, index) => (\n        <div key={index}>\n          <EditorStack gap={2} alignItems=\"end\">\n            <EditorField label=\"Column\" width={25}>\n              <Select\n                value={getColumnValue(item)}\n                options={columnsWithAsterisk}\n                inputId={`select-column-${index}-${uniqueId()}`}\n                menuShouldPortal\n                allowCustomValue\n                onChange={onColumnChange(item, index)}\n              />\n            </EditorField>\n\n            <EditorField label=\"Aggregation\" optional width={25}>\n              <Select\n                value={item.name ? toOption(item.name) : null}\n                inputId={`select-aggregation-${index}-${uniqueId()}`}\n                isClearable\n                menuShouldPortal\n                allowCustomValue\n                options={functions}\n                onChange={onAggregationChange(item, index)}\n              />\n            </EditorField>\n            <Button\n              aria-label=\"Remove\"\n              type=\"button\"\n              icon=\"trash-alt\"\n              variant=\"secondary\"\n              size=\"md\"\n              onClick={removeColumn(index)}\n            />\n          </EditorStack>\n        </div>\n      ))}\n      <Button\n        type=\"button\"\n        onClick={addColumn}\n        variant=\"secondary\"\n        size=\"md\"\n        icon=\"plus\"\n        aria-label=\"Add\"\n        className={styles.addButton}\n      />\n    </EditorStack>\n  );\n}\n\nconst getStyles = () => {\n  return { addButton: css({ alignSelf: 'flex-start' }) };\n};\n\nfunction getColumnValue({ parameters }: QueryEditorFunctionExpression): SelectableValue<string> | null {\n  const column = parameters?.find((p) => p.type === QueryEditorExpressionType.FunctionParameter);\n  if (column?.name) {\n    return toOption(column.name);\n  }\n  return null;\n}\n","import React from 'react';\nimport { useAsync } from 'react-use';\nimport { type SelectableValue, toOption } from '@grafana/data';\nimport { SelectRow } from './SelectRow';\nimport { type SQLQuery, type DB, type QueryWithDefaults } from '../types';\nimport { useSqlChange } from '../utils/useSqlChange';\n\ninterface SQLSelectRowProps {\n  fields: SelectableValue[];\n  query: QueryWithDefaults;\n  onQueryChange: (query: SQLQuery) => void;\n  db: DB;\n}\n\nexport function SQLSelectRow({ fields, query, onQueryChange, db }: SQLSelectRowProps) {\n  const { onSqlChange } = useSqlChange({ query, onQueryChange, db });\n\n  const state = useAsync(async () => {\n    const functions = await db.functions();\n    return functions.map((f) => toOption(f.name));\n  }, [db]);\n\n  return <SelectRow columns={fields} sql={query.sql!} functions={state.value} onSqlChange={onSqlChange} />;\n}\n","/**\n * @license\n * MIT License\n * \n * Copyright (c) 2014-present, Lee Byron and other contributors.\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar IS_INDEXED_SYMBOL = '@@__IMMUTABLE_INDEXED__@@';\n/**\n * True if `maybeIndexed` is a Collection.Indexed, or any of its subclasses.\n *\n * ```js\n * import { isIndexed, Map, List, Stack, Set } from 'immutable';\n *\n * isIndexed([]); // false\n * isIndexed({}); // false\n * isIndexed(Map()); // false\n * isIndexed(List()); // true\n * isIndexed(Stack()); // true\n * isIndexed(Set()); // false\n * ```\n */\nfunction isIndexed(maybeIndexed) {\n    return Boolean(maybeIndexed &&\n        // @ts-expect-error: maybeIndexed is typed as `{}`, need to change in 6.0 to `maybeIndexed && typeof maybeIndexed === 'object' && IS_INDEXED_SYMBOL in maybeIndexed`\n        maybeIndexed[IS_INDEXED_SYMBOL]);\n}\n\nvar IS_KEYED_SYMBOL = '@@__IMMUTABLE_KEYED__@@';\n/**\n * True if `maybeKeyed` is a Collection.Keyed, or any of its subclasses.\n *\n * ```js\n * import { isKeyed, Map, List, Stack } from 'immutable';\n *\n * isKeyed([]); // false\n * isKeyed({}); // false\n * isKeyed(Map()); // true\n * isKeyed(List()); // false\n * isKeyed(Stack()); // false\n * ```\n */\nfunction isKeyed(maybeKeyed) {\n    return Boolean(maybeKeyed &&\n        // @ts-expect-error: maybeKeyed is typed as `{}`, need to change in 6.0 to `maybeKeyed && typeof maybeKeyed === 'object' && IS_KEYED_SYMBOL in maybeKeyed`\n        maybeKeyed[IS_KEYED_SYMBOL]);\n}\n\n/**\n * True if `maybeAssociative` is either a Keyed or Indexed Collection.\n *\n * ```js\n * import { isAssociative, Map, List, Stack, Set } from 'immutable';\n *\n * isAssociative([]); // false\n * isAssociative({}); // false\n * isAssociative(Map()); // true\n * isAssociative(List()); // true\n * isAssociative(Stack()); // true\n * isAssociative(Set()); // false\n * ```\n */\nfunction isAssociative(maybeAssociative) {\n    return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n}\n\n// Note: value is unchanged to not break immutable-devtools.\nvar IS_COLLECTION_SYMBOL = '@@__IMMUTABLE_ITERABLE__@@';\n/**\n * True if `maybeCollection` is a Collection, or any of its subclasses.\n *\n * ```js\n * import { isCollection, Map, List, Stack } from 'immutable';\n *\n * isCollection([]); // false\n * isCollection({}); // false\n * isCollection(Map()); // true\n * isCollection(List()); // true\n * isCollection(Stack()); // true\n * ```\n */\nfunction isCollection(maybeCollection) {\n    return Boolean(maybeCollection &&\n        // @ts-expect-error: maybeCollection is typed as `{}`, need to change in 6.0 to `maybeCollection && typeof maybeCollection === 'object' && IS_COLLECTION_SYMBOL in maybeCollection`\n        maybeCollection[IS_COLLECTION_SYMBOL]);\n}\n\nvar Collection = function Collection(value) {\n  // eslint-disable-next-line no-constructor-return\n  return isCollection(value) ? value : Seq(value);\n};\n\nvar KeyedCollection = /*@__PURE__*/(function (Collection) {\n  function KeyedCollection(value) {\n    // eslint-disable-next-line no-constructor-return\n    return isKeyed(value) ? value : KeyedSeq(value);\n  }\n\n  if ( Collection ) KeyedCollection.__proto__ = Collection;\n  KeyedCollection.prototype = Object.create( Collection && Collection.prototype );\n  KeyedCollection.prototype.constructor = KeyedCollection;\n\n  return KeyedCollection;\n}(Collection));\n\nvar IndexedCollection = /*@__PURE__*/(function (Collection) {\n  function IndexedCollection(value) {\n    // eslint-disable-next-line no-constructor-return\n    return isIndexed(value) ? value : IndexedSeq(value);\n  }\n\n  if ( Collection ) IndexedCollection.__proto__ = Collection;\n  IndexedCollection.prototype = Object.create( Collection && Collection.prototype );\n  IndexedCollection.prototype.constructor = IndexedCollection;\n\n  return IndexedCollection;\n}(Collection));\n\nvar SetCollection = /*@__PURE__*/(function (Collection) {\n  function SetCollection(value) {\n    // eslint-disable-next-line no-constructor-return\n    return isCollection(value) && !isAssociative(value) ? value : SetSeq(value);\n  }\n\n  if ( Collection ) SetCollection.__proto__ = Collection;\n  SetCollection.prototype = Object.create( Collection && Collection.prototype );\n  SetCollection.prototype.constructor = SetCollection;\n\n  return SetCollection;\n}(Collection));\n\nCollection.Keyed = KeyedCollection;\nCollection.Indexed = IndexedCollection;\nCollection.Set = SetCollection;\n\nvar ITERATE_KEYS = 0;\nvar ITERATE_VALUES = 1;\nvar ITERATE_ENTRIES = 2;\n// TODO Symbol is widely available in modern JavaScript environments, clean this\nvar REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nvar ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n// @ts-expect-error: properties are not supported in buble\nvar Iterator = function Iterator(next) {\n    // @ts-expect-error: properties are not supported in buble\n    this.next = next;\n};\nIterator.prototype.toString = function toString () {\n    return '[Iterator]';\n};\n// @ts-expect-error: static properties are not supported in buble\nIterator.KEYS = ITERATE_KEYS;\n// @ts-expect-error: static properties are not supported in buble\nIterator.VALUES = ITERATE_VALUES;\n// @ts-expect-error: static properties are not supported in buble\nIterator.ENTRIES = ITERATE_ENTRIES;\n// @ts-expect-error: properties are not supported in buble\nIterator.prototype.inspect = Iterator.prototype.toSource = function () {\n    return this.toString();\n};\n// @ts-expect-error don't know how to type this\nIterator.prototype[ITERATOR_SYMBOL] = function () {\n    return this;\n};\nfunction iteratorValue(type, k, v, iteratorResult) {\n    var value = type === ITERATE_KEYS ? k : type === ITERATE_VALUES ? v : [k, v];\n    // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- TODO enable eslint here\n    iteratorResult\n        ? (iteratorResult.value = value)\n        : (iteratorResult = {\n            // @ts-expect-error ensure value is not undefined\n            value: value,\n            done: false,\n        });\n    return iteratorResult;\n}\nfunction iteratorDone() {\n    return { value: undefined, done: true };\n}\nfunction hasIterator(maybeIterable) {\n    if (Array.isArray(maybeIterable)) {\n        // IE11 trick as it does not support `Symbol.iterator`\n        return true;\n    }\n    return !!getIteratorFn(maybeIterable);\n}\nfunction isIterator(maybeIterator) {\n    return !!(maybeIterator &&\n        // @ts-expect-error: maybeIterator is typed as `{}`\n        typeof maybeIterator.next === 'function');\n}\nfunction getIterator(iterable) {\n    var iteratorFn = getIteratorFn(iterable);\n    return iteratorFn && iteratorFn.call(iterable);\n}\nfunction getIteratorFn(iterable) {\n    var iteratorFn = iterable &&\n        // @ts-expect-error: maybeIterator is typed as `{}`\n        ((REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n            // @ts-expect-error: maybeIterator is typed as `{}`\n            iterable[FAUX_ITERATOR_SYMBOL]);\n    if (typeof iteratorFn === 'function') {\n        return iteratorFn;\n    }\n}\nfunction isEntriesIterable(maybeIterable) {\n    var iteratorFn = getIteratorFn(maybeIterable);\n    // @ts-expect-error: maybeIterator is typed as `{}`\n    return iteratorFn && iteratorFn === maybeIterable.entries;\n}\nfunction isKeysIterable(maybeIterable) {\n    var iteratorFn = getIteratorFn(maybeIterable);\n    // @ts-expect-error: maybeIterator is typed as `{}`\n    return iteratorFn && iteratorFn === maybeIterable.keys;\n}\n\n// Used for setting prototype methods that IE8 chokes on.\nvar DELETE = 'delete';\n// Constants describing the size of trie nodes.\nvar SHIFT = 5; // Resulted in best performance after ______?\nvar SIZE = 1 << SHIFT;\nvar MASK = SIZE - 1;\n// A consistent shared value representing \"not set\" which equals nothing other\n// than itself, and nothing that could be provided externally.\nvar NOT_SET = {};\n// Boolean references, Rough equivalent of `bool &`.\nfunction MakeRef() {\n    return { value: false };\n}\nfunction SetRef(ref) {\n    if (ref) {\n        ref.value = true;\n    }\n}\n// A function which returns a value representing an \"owner\" for transient writes\n// to tries. The return value will only ever equal itself, and will not equal\n// the return of any subsequent call of this function.\nfunction OwnerID() { }\nfunction ensureSize(iter) {\n    // @ts-expect-error size should exists on Collection\n    if (iter.size === undefined) {\n        // @ts-expect-error size should exists on Collection, __iterate does exist on Collection\n        iter.size = iter.__iterate(returnTrue);\n    }\n    // @ts-expect-error size should exists on Collection\n    return iter.size;\n}\nfunction wrapIndex(iter, index) {\n    // This implements \"is array index\" which the ECMAString spec defines as:\n    //\n    //     A String property name P is an array index if and only if\n    //     ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n    //     to 2^32−1.\n    //\n    // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n    if (typeof index !== 'number') {\n        var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n        if ('' + uint32Index !== index || uint32Index === 4294967295) {\n            return NaN;\n        }\n        index = uint32Index;\n    }\n    return index < 0 ? ensureSize(iter) + index : index;\n}\nfunction returnTrue() {\n    return true;\n}\nfunction wholeSlice(begin, end, size) {\n    return (((begin === 0 && !isNeg(begin)) ||\n        (size !== undefined && begin <= -size)) &&\n        (end === undefined || (size !== undefined && end >= size)));\n}\nfunction resolveBegin(begin, size) {\n    return resolveIndex(begin, size, 0);\n}\nfunction resolveEnd(end, size) {\n    return resolveIndex(end, size, size);\n}\nfunction resolveIndex(index, size, defaultIndex) {\n    // Sanitize indices using this shorthand for ToInt32(argument)\n    // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n    return index === undefined\n        ? defaultIndex\n        : isNeg(index)\n            ? size === Infinity\n                ? size\n                : Math.max(0, size + index) | 0\n            : size === undefined || size === index\n                ? index\n                : Math.min(size, index) | 0;\n}\nfunction isNeg(value) {\n    // Account for -0 which is negative, but not less than 0.\n    return value < 0 || (value === 0 && 1 / value === -Infinity);\n}\n\nvar IS_RECORD_SYMBOL = '@@__IMMUTABLE_RECORD__@@';\n/**\n * True if `maybeRecord` is a Record.\n */\nfunction isRecord(maybeRecord) {\n    return Boolean(maybeRecord &&\n        // @ts-expect-error: maybeRecord is typed as `{}`, need to change in 6.0 to `maybeRecord && typeof maybeRecord === 'object' && IS_RECORD_SYMBOL in maybeRecord`\n        maybeRecord[IS_RECORD_SYMBOL]);\n}\n\n/**\n * True if `maybeImmutable` is an Immutable Collection or Record.\n *\n * Note: Still returns true even if the collections is within a `withMutations()`.\n *\n * ```js\n * import { isImmutable, Map, List, Stack } from 'immutable';\n * isImmutable([]); // false\n * isImmutable({}); // false\n * isImmutable(Map()); // true\n * isImmutable(List()); // true\n * isImmutable(Stack()); // true\n * isImmutable(Map().asMutable()); // true\n * ```\n */\nfunction isImmutable(maybeImmutable) {\n    return isCollection(maybeImmutable) || isRecord(maybeImmutable);\n}\n\nvar IS_ORDERED_SYMBOL = '@@__IMMUTABLE_ORDERED__@@';\nfunction isOrdered(maybeOrdered) {\n    return Boolean(maybeOrdered &&\n        // @ts-expect-error: maybeOrdered is typed as `{}`, need to change in 6.0 to `maybeOrdered && typeof maybeOrdered === 'object' && IS_ORDERED_SYMBOL in maybeOrdered`\n        maybeOrdered[IS_ORDERED_SYMBOL]);\n}\n\nvar IS_SEQ_SYMBOL = '@@__IMMUTABLE_SEQ__@@';\n/**\n * True if `maybeSeq` is a Seq.\n */\nfunction isSeq(maybeSeq) {\n    return Boolean(maybeSeq &&\n        // @ts-expect-error: maybeSeq is typed as `{}`, need to change in 6.0 to `maybeSeq && typeof maybeSeq === 'object' && MAYBE_SEQ_SYMBOL in maybeSeq`\n        maybeSeq[IS_SEQ_SYMBOL]);\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction isArrayLike(value) {\n    if (Array.isArray(value) || typeof value === 'string') {\n        return true;\n    }\n    // @ts-expect-error \"Type 'unknown' is not assignable to type 'boolean'\" : convert to Boolean\n    return (value &&\n        typeof value === 'object' &&\n        // @ts-expect-error check that `'length' in value &&`\n        Number.isInteger(value.length) &&\n        // @ts-expect-error check that `'length' in value &&`\n        value.length >= 0 &&\n        // @ts-expect-error check that `'length' in value &&`\n        (value.length === 0\n            ? // Only {length: 0} is considered Array-like.\n                Object.keys(value).length === 1\n            : // An object is only Array-like if it has a property where the last value\n                // in the array-like may be found (which could be undefined).\n                // @ts-expect-error check that `'length' in value &&`\n                value.hasOwnProperty(value.length - 1)));\n}\n\nvar Seq = /*@__PURE__*/(function (Collection) {\n  function Seq(value) {\n    // eslint-disable-next-line no-constructor-return\n    return value === undefined || value === null\n      ? emptySequence()\n      : isImmutable(value)\n        ? value.toSeq()\n        : seqFromValue(value);\n  }\n\n  if ( Collection ) Seq.__proto__ = Collection;\n  Seq.prototype = Object.create( Collection && Collection.prototype );\n  Seq.prototype.constructor = Seq;\n\n  Seq.prototype.toSeq = function toSeq () {\n    return this;\n  };\n\n  Seq.prototype.toString = function toString () {\n    return this.__toString('Seq {', '}');\n  };\n\n  Seq.prototype.cacheResult = function cacheResult () {\n    if (!this._cache && this.__iterateUncached) {\n      this._cache = this.entrySeq().toArray();\n      this.size = this._cache.length;\n    }\n    return this;\n  };\n\n  // abstract __iterateUncached(fn, reverse)\n\n  Seq.prototype.__iterate = function __iterate (fn, reverse) {\n    var cache = this._cache;\n    if (cache) {\n      var size = cache.length;\n      var i = 0;\n      while (i !== size) {\n        var entry = cache[reverse ? size - ++i : i++];\n        if (fn(entry[1], entry[0], this) === false) {\n          break;\n        }\n      }\n      return i;\n    }\n    return this.__iterateUncached(fn, reverse);\n  };\n\n  // abstract __iteratorUncached(type, reverse)\n\n  Seq.prototype.__iterator = function __iterator (type, reverse) {\n    var cache = this._cache;\n    if (cache) {\n      var size = cache.length;\n      var i = 0;\n      return new Iterator(function () {\n        if (i === size) {\n          return iteratorDone();\n        }\n        var entry = cache[reverse ? size - ++i : i++];\n        return iteratorValue(type, entry[0], entry[1]);\n      });\n    }\n    return this.__iteratorUncached(type, reverse);\n  };\n\n  return Seq;\n}(Collection));\n\nvar KeyedSeq = /*@__PURE__*/(function (Seq) {\n  function KeyedSeq(value) {\n    // eslint-disable-next-line no-constructor-return\n    return value === undefined || value === null\n      ? emptySequence().toKeyedSeq()\n      : isCollection(value)\n        ? isKeyed(value)\n          ? value.toSeq()\n          : value.fromEntrySeq()\n        : isRecord(value)\n          ? value.toSeq()\n          : keyedSeqFromValue(value);\n  }\n\n  if ( Seq ) KeyedSeq.__proto__ = Seq;\n  KeyedSeq.prototype = Object.create( Seq && Seq.prototype );\n  KeyedSeq.prototype.constructor = KeyedSeq;\n\n  KeyedSeq.prototype.toKeyedSeq = function toKeyedSeq () {\n    return this;\n  };\n\n  return KeyedSeq;\n}(Seq));\n\nvar IndexedSeq = /*@__PURE__*/(function (Seq) {\n  function IndexedSeq(value) {\n    // eslint-disable-next-line no-constructor-return\n    return value === undefined || value === null\n      ? emptySequence()\n      : isCollection(value)\n        ? isKeyed(value)\n          ? value.entrySeq()\n          : value.toIndexedSeq()\n        : isRecord(value)\n          ? value.toSeq().entrySeq()\n          : indexedSeqFromValue(value);\n  }\n\n  if ( Seq ) IndexedSeq.__proto__ = Seq;\n  IndexedSeq.prototype = Object.create( Seq && Seq.prototype );\n  IndexedSeq.prototype.constructor = IndexedSeq;\n\n  IndexedSeq.of = function of (/*...values*/) {\n    return IndexedSeq(arguments);\n  };\n\n  IndexedSeq.prototype.toIndexedSeq = function toIndexedSeq () {\n    return this;\n  };\n\n  IndexedSeq.prototype.toString = function toString () {\n    return this.__toString('Seq [', ']');\n  };\n\n  return IndexedSeq;\n}(Seq));\n\nvar SetSeq = /*@__PURE__*/(function (Seq) {\n  function SetSeq(value) {\n    // eslint-disable-next-line no-constructor-return\n    return (\n      isCollection(value) && !isAssociative(value) ? value : IndexedSeq(value)\n    ).toSetSeq();\n  }\n\n  if ( Seq ) SetSeq.__proto__ = Seq;\n  SetSeq.prototype = Object.create( Seq && Seq.prototype );\n  SetSeq.prototype.constructor = SetSeq;\n\n  SetSeq.of = function of (/*...values*/) {\n    return SetSeq(arguments);\n  };\n\n  SetSeq.prototype.toSetSeq = function toSetSeq () {\n    return this;\n  };\n\n  return SetSeq;\n}(Seq));\n\nSeq.isSeq = isSeq;\nSeq.Keyed = KeyedSeq;\nSeq.Set = SetSeq;\nSeq.Indexed = IndexedSeq;\n\nSeq.prototype[IS_SEQ_SYMBOL] = true;\n\n// #pragma Root Sequences\n\nvar ArraySeq = /*@__PURE__*/(function (IndexedSeq) {\n  function ArraySeq(array) {\n    this._array = array;\n    this.size = array.length;\n  }\n\n  if ( IndexedSeq ) ArraySeq.__proto__ = IndexedSeq;\n  ArraySeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n  ArraySeq.prototype.constructor = ArraySeq;\n\n  ArraySeq.prototype.get = function get (index, notSetValue) {\n    return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n  };\n\n  ArraySeq.prototype.__iterate = function __iterate (fn, reverse) {\n    var array = this._array;\n    var size = array.length;\n    var i = 0;\n    while (i !== size) {\n      var ii = reverse ? size - ++i : i++;\n      if (fn(array[ii], ii, this) === false) {\n        break;\n      }\n    }\n    return i;\n  };\n\n  ArraySeq.prototype.__iterator = function __iterator (type, reverse) {\n    var array = this._array;\n    var size = array.length;\n    var i = 0;\n    return new Iterator(function () {\n      if (i === size) {\n        return iteratorDone();\n      }\n      var ii = reverse ? size - ++i : i++;\n      return iteratorValue(type, ii, array[ii]);\n    });\n  };\n\n  return ArraySeq;\n}(IndexedSeq));\n\nvar ObjectSeq = /*@__PURE__*/(function (KeyedSeq) {\n  function ObjectSeq(object) {\n    var keys = Object.keys(object).concat(\n      Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(object) : []\n    );\n    this._object = object;\n    this._keys = keys;\n    this.size = keys.length;\n  }\n\n  if ( KeyedSeq ) ObjectSeq.__proto__ = KeyedSeq;\n  ObjectSeq.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n  ObjectSeq.prototype.constructor = ObjectSeq;\n\n  ObjectSeq.prototype.get = function get (key, notSetValue) {\n    if (notSetValue !== undefined && !this.has(key)) {\n      return notSetValue;\n    }\n    return this._object[key];\n  };\n\n  ObjectSeq.prototype.has = function has (key) {\n    return hasOwnProperty.call(this._object, key);\n  };\n\n  ObjectSeq.prototype.__iterate = function __iterate (fn, reverse) {\n    var object = this._object;\n    var keys = this._keys;\n    var size = keys.length;\n    var i = 0;\n    while (i !== size) {\n      var key = keys[reverse ? size - ++i : i++];\n      if (fn(object[key], key, this) === false) {\n        break;\n      }\n    }\n    return i;\n  };\n\n  ObjectSeq.prototype.__iterator = function __iterator (type, reverse) {\n    var object = this._object;\n    var keys = this._keys;\n    var size = keys.length;\n    var i = 0;\n    return new Iterator(function () {\n      if (i === size) {\n        return iteratorDone();\n      }\n      var key = keys[reverse ? size - ++i : i++];\n      return iteratorValue(type, key, object[key]);\n    });\n  };\n\n  return ObjectSeq;\n}(KeyedSeq));\nObjectSeq.prototype[IS_ORDERED_SYMBOL] = true;\n\nvar CollectionSeq = /*@__PURE__*/(function (IndexedSeq) {\n  function CollectionSeq(collection) {\n    this._collection = collection;\n    this.size = collection.length || collection.size;\n  }\n\n  if ( IndexedSeq ) CollectionSeq.__proto__ = IndexedSeq;\n  CollectionSeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n  CollectionSeq.prototype.constructor = CollectionSeq;\n\n  CollectionSeq.prototype.__iterateUncached = function __iterateUncached (fn, reverse) {\n    if (reverse) {\n      return this.cacheResult().__iterate(fn, reverse);\n    }\n    var collection = this._collection;\n    var iterator = getIterator(collection);\n    var iterations = 0;\n    if (isIterator(iterator)) {\n      var step;\n      while (!(step = iterator.next()).done) {\n        if (fn(step.value, iterations++, this) === false) {\n          break;\n        }\n      }\n    }\n    return iterations;\n  };\n\n  CollectionSeq.prototype.__iteratorUncached = function __iteratorUncached (type, reverse) {\n    if (reverse) {\n      return this.cacheResult().__iterator(type, reverse);\n    }\n    var collection = this._collection;\n    var iterator = getIterator(collection);\n    if (!isIterator(iterator)) {\n      return new Iterator(iteratorDone);\n    }\n    var iterations = 0;\n    return new Iterator(function () {\n      var step = iterator.next();\n      return step.done ? step : iteratorValue(type, iterations++, step.value);\n    });\n  };\n\n  return CollectionSeq;\n}(IndexedSeq));\n\n// # pragma Helper functions\n\nvar EMPTY_SEQ;\n\nfunction emptySequence() {\n  return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n}\n\nfunction keyedSeqFromValue(value) {\n  var seq = maybeIndexedSeqFromValue(value);\n  if (seq) {\n    return seq.fromEntrySeq();\n  }\n  if (typeof value === 'object') {\n    return new ObjectSeq(value);\n  }\n  throw new TypeError(\n    'Expected Array or collection object of [k, v] entries, or keyed object: ' +\n      value\n  );\n}\n\nfunction indexedSeqFromValue(value) {\n  var seq = maybeIndexedSeqFromValue(value);\n  if (seq) {\n    return seq;\n  }\n  throw new TypeError(\n    'Expected Array or collection object of values: ' + value\n  );\n}\n\nfunction seqFromValue(value) {\n  var seq = maybeIndexedSeqFromValue(value);\n  if (seq) {\n    return isEntriesIterable(value)\n      ? seq.fromEntrySeq()\n      : isKeysIterable(value)\n        ? seq.toSetSeq()\n        : seq;\n  }\n  if (typeof value === 'object') {\n    return new ObjectSeq(value);\n  }\n  throw new TypeError(\n    'Expected Array or collection object of values, or keyed object: ' + value\n  );\n}\n\nfunction maybeIndexedSeqFromValue(value) {\n  return isArrayLike(value)\n    ? new ArraySeq(value)\n    : hasIterator(value)\n      ? new CollectionSeq(value)\n      : undefined;\n}\n\nfunction asImmutable() {\n  return this.__ensureOwner();\n}\n\nfunction asMutable() {\n  return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n}\n\n// TODO remove in v6 as Math.imul is widely available now: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/imul\nvar imul = typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2\n    ? Math.imul\n    : function imul(a, b) {\n        a |= 0; // int\n        b |= 0; // int\n        var c = a & 0xffff;\n        var d = b & 0xffff;\n        // Shift by 0 fixes the sign on the high part.\n        return (c * d + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0)) | 0; // int\n    };\n// v8 has an optimization for storing 31-bit signed numbers.\n// Values which have either 00 or 11 as the high order bits qualify.\n// This function drops the highest order bit in a signed number, maintaining\n// the sign bit.\nfunction smi(i32) {\n    return ((i32 >>> 1) & 0x40000000) | (i32 & 0xbfffffff);\n}\n\nvar defaultValueOf = Object.prototype.valueOf;\nfunction hash(o) {\n    // eslint-disable-next-line eqeqeq\n    if (o == null) {\n        return hashNullish(o);\n    }\n    // @ts-expect-error don't care about object beeing typed as `{}` here\n    if (typeof o.hashCode === 'function') {\n        // Drop any high bits from accidentally long hash codes.\n        // @ts-expect-error don't care about object beeing typed as `{}` here\n        return smi(o.hashCode(o));\n    }\n    var v = valueOf(o);\n    // eslint-disable-next-line eqeqeq\n    if (v == null) {\n        return hashNullish(v);\n    }\n    switch (typeof v) {\n        case 'boolean':\n            // The hash values for built-in constants are a 1 value for each 5-byte\n            // shift region expect for the first, which encodes the value. This\n            // reduces the odds of a hash collision for these common values.\n            return v ? 0x42108421 : 0x42108420;\n        case 'number':\n            return hashNumber(v);\n        case 'string':\n            return v.length > STRING_HASH_CACHE_MIN_STRLEN\n                ? cachedHashString(v)\n                : hashString(v);\n        case 'object':\n        case 'function':\n            return hashJSObj(v);\n        case 'symbol':\n            return hashSymbol(v);\n        default:\n            if (typeof v.toString === 'function') {\n                return hashString(v.toString());\n            }\n            throw new Error('Value type ' + typeof v + ' cannot be hashed.');\n    }\n}\nfunction hashNullish(nullish) {\n    return nullish === null ? 0x42108422 : /* undefined */ 0x42108423;\n}\n// Compress arbitrarily large numbers into smi hashes.\nfunction hashNumber(n) {\n    if (n !== n || n === Infinity) {\n        return 0;\n    }\n    var hash = n | 0;\n    if (hash !== n) {\n        hash ^= n * 0xffffffff;\n    }\n    while (n > 0xffffffff) {\n        n /= 0xffffffff;\n        hash ^= n;\n    }\n    return smi(hash);\n}\nfunction cachedHashString(string) {\n    var hashed = stringHashCache[string];\n    if (hashed === undefined) {\n        hashed = hashString(string);\n        if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n            STRING_HASH_CACHE_SIZE = 0;\n            stringHashCache = {};\n        }\n        STRING_HASH_CACHE_SIZE++;\n        stringHashCache[string] = hashed;\n    }\n    return hashed;\n}\n// http://jsperf.com/hashing-strings\nfunction hashString(string) {\n    // This is the hash from JVM\n    // The hash code for a string is computed as\n    // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n    // where s[i] is the ith character of the string and n is the length of\n    // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n    // (exclusive) by dropping high bits.\n    var hashed = 0;\n    for (var ii = 0; ii < string.length; ii++) {\n        hashed = (31 * hashed + string.charCodeAt(ii)) | 0;\n    }\n    return smi(hashed);\n}\n// Per-process seed for the secondary collision hash. Never exposed nor\n// serialized, so the public `hash()` stays deterministic. An odd base in\n// [3, 2^20) keeps `base * h` exact as a double (no `Math.imul`).\nvar COLLISION_HASH_BASE = ((Math.random() * 0x100000) | 1) % 0x100000 || 0x9e37;\n// Secondary hash to index entries within a `HashCollisionNode`, where every key\n// shares the same primary `hash()`. Using a different, seeded base scatters\n// crafted collision families (e.g. \"Aa\"/\"BB\", which only collide under base 31)\n// that an attacker cannot precompute without the seed. It only narrows\n// candidates — `is()` still decides equality — so non-string keys can safely\n// fall back to the (here constant) primary hash and a linear scan.\nfunction hashCollisionKey(key) {\n    if (typeof key !== 'string') {\n        return hash(key);\n    }\n    var hashed = 0;\n    for (var ii = 0; ii < key.length; ii++) {\n        hashed = (COLLISION_HASH_BASE * hashed + key.charCodeAt(ii)) | 0;\n    }\n    return hashed;\n}\nfunction hashSymbol(sym) {\n    var hashed = symbolMap[sym];\n    if (hashed !== undefined) {\n        return hashed;\n    }\n    hashed = nextHash();\n    symbolMap[sym] = hashed;\n    return hashed;\n}\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nfunction hashJSObj(obj) {\n    var hashed;\n    if (usingWeakMap) {\n        // @ts-expect-error weakMap is defined\n        hashed = weakMap.get(obj);\n        if (hashed !== undefined) {\n            return hashed;\n        }\n    }\n    // @ts-expect-error used for old code, will be removed\n    hashed = obj[UID_HASH_KEY];\n    if (hashed !== undefined) {\n        return hashed;\n    }\n    if (!canDefineProperty) {\n        // @ts-expect-error used for old code, will be removed\n        hashed = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n        if (hashed !== undefined) {\n            return hashed;\n        }\n        hashed = getIENodeHash(obj);\n        if (hashed !== undefined) {\n            return hashed;\n        }\n    }\n    hashed = nextHash();\n    if (usingWeakMap) {\n        // @ts-expect-error weakMap is defined\n        weakMap.set(obj, hashed);\n    }\n    else if (isExtensible !== undefined && isExtensible(obj) === false) {\n        throw new Error('Non-extensible objects are not allowed as keys.');\n    }\n    else if (canDefineProperty) {\n        Object.defineProperty(obj, UID_HASH_KEY, {\n            enumerable: false,\n            configurable: false,\n            writable: false,\n            value: hashed,\n        });\n    }\n    else if (obj.propertyIsEnumerable !== undefined &&\n        obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n        // Since we can't define a non-enumerable property on the object\n        // we'll hijack one of the less-used non-enumerable properties to\n        // save our hash on it. Since this is a function it will not show up in\n        // `JSON.stringify` which is what we want.\n        obj.propertyIsEnumerable = function () {\n            return this.constructor.prototype.propertyIsEnumerable.apply(this, \n            // eslint-disable-next-line prefer-rest-params\n            arguments);\n        };\n        // @ts-expect-error used for old code, will be removed\n        obj.propertyIsEnumerable[UID_HASH_KEY] = hashed;\n        // @ts-expect-error used for old code, will be removed\n    }\n    else if (obj.nodeType !== undefined) {\n        // At this point we couldn't get the IE `uniqueID` to use as a hash\n        // and we couldn't use a non-enumerable property to exploit the\n        // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n        // itself.\n        // @ts-expect-error used for old code, will be removed\n        obj[UID_HASH_KEY] = hashed;\n    }\n    else {\n        throw new Error('Unable to set a non-enumerable property on object.');\n    }\n    return hashed;\n}\n// Get references to ES5 object methods.\nvar isExtensible = Object.isExtensible;\n// True if Object.defineProperty works as expected. IE8 fails this test.\n// TODO remove this as widely available https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty\nvar canDefineProperty = (function () {\n    try {\n        Object.defineProperty({}, '@', {});\n        return true;\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    }\n    catch (e) {\n        return false;\n    }\n})();\n// IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n// and avoid memory leaks from the IE cloneNode bug.\n// TODO remove this method as only used if `canDefineProperty` is false\nfunction getIENodeHash(node) {\n    // @ts-expect-error don't care\n    if (node && node.nodeType > 0) {\n        // @ts-expect-error don't care\n        switch (node.nodeType) {\n            case 1: // Element\n                // @ts-expect-error don't care\n                return node.uniqueID;\n            case 9: // Document\n                // @ts-expect-error don't care\n                return node.documentElement && node.documentElement.uniqueID;\n        }\n    }\n}\nfunction valueOf(obj) {\n    return obj.valueOf !== defaultValueOf && typeof obj.valueOf === 'function'\n        ? // @ts-expect-error weird the \"obj\" parameter as `valueOf` should not have a parameter\n            obj.valueOf(obj)\n        : obj;\n}\nfunction nextHash() {\n    var nextHash = ++_objHashUID;\n    if (_objHashUID & 0x40000000) {\n        _objHashUID = 0;\n    }\n    return nextHash;\n}\n// If possible, use a WeakMap.\n// TODO using WeakMap should be true everywhere now that WeakMap is widely supported: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap\nvar usingWeakMap = typeof WeakMap === 'function';\nvar weakMap;\nif (usingWeakMap) {\n    weakMap = new WeakMap();\n}\nvar symbolMap = Object.create(null);\nvar _objHashUID = 0;\n// TODO remove string as Symbol is now widely supported: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol\nvar UID_HASH_KEY = '__immutablehash__';\nif (typeof Symbol === 'function') {\n    UID_HASH_KEY = Symbol(UID_HASH_KEY);\n}\nvar STRING_HASH_CACHE_MIN_STRLEN = 16;\nvar STRING_HASH_CACHE_MAX_SIZE = 255;\nvar STRING_HASH_CACHE_SIZE = 0;\nvar stringHashCache = {};\n\nvar ToKeyedSequence = /*@__PURE__*/(function (KeyedSeq) {\n  function ToKeyedSequence(indexed, useKeys) {\n    this._iter = indexed;\n    this._useKeys = useKeys;\n    this.size = indexed.size;\n  }\n\n  if ( KeyedSeq ) ToKeyedSequence.__proto__ = KeyedSeq;\n  ToKeyedSequence.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n  ToKeyedSequence.prototype.constructor = ToKeyedSequence;\n\n  ToKeyedSequence.prototype.get = function get (key, notSetValue) {\n    return this._iter.get(key, notSetValue);\n  };\n\n  ToKeyedSequence.prototype.has = function has (key) {\n    return this._iter.has(key);\n  };\n\n  ToKeyedSequence.prototype.valueSeq = function valueSeq () {\n    return this._iter.valueSeq();\n  };\n\n  ToKeyedSequence.prototype.reverse = function reverse () {\n    var this$1$1 = this;\n\n    var reversedSequence = reverseFactory(this, true);\n    if (!this._useKeys) {\n      reversedSequence.valueSeq = function () { return this$1$1._iter.toSeq().reverse(); };\n    }\n    return reversedSequence;\n  };\n\n  ToKeyedSequence.prototype.map = function map (mapper, context) {\n    var this$1$1 = this;\n\n    var mappedSequence = mapFactory(this, mapper, context);\n    if (!this._useKeys) {\n      mappedSequence.valueSeq = function () { return this$1$1._iter.toSeq().map(mapper, context); };\n    }\n    return mappedSequence;\n  };\n\n  ToKeyedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n    var this$1$1 = this;\n\n    return this._iter.__iterate(function (v, k) { return fn(v, k, this$1$1); }, reverse);\n  };\n\n  ToKeyedSequence.prototype.__iterator = function __iterator (type, reverse) {\n    return this._iter.__iterator(type, reverse);\n  };\n\n  return ToKeyedSequence;\n}(KeyedSeq));\nToKeyedSequence.prototype[IS_ORDERED_SYMBOL] = true;\n\nvar ToIndexedSequence = /*@__PURE__*/(function (IndexedSeq) {\n  function ToIndexedSequence(iter) {\n    this._iter = iter;\n    this.size = iter.size;\n  }\n\n  if ( IndexedSeq ) ToIndexedSequence.__proto__ = IndexedSeq;\n  ToIndexedSequence.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n  ToIndexedSequence.prototype.constructor = ToIndexedSequence;\n\n  ToIndexedSequence.prototype.includes = function includes (value) {\n    return this._iter.includes(value);\n  };\n\n  ToIndexedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n    var this$1$1 = this;\n\n    var i = 0;\n    // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- TODO enable eslint here\n    reverse && ensureSize(this);\n    return this._iter.__iterate(\n      function (v) { return fn(v, reverse ? this$1$1.size - ++i : i++, this$1$1); },\n      reverse\n    );\n  };\n\n  ToIndexedSequence.prototype.__iterator = function __iterator (type, reverse) {\n    var this$1$1 = this;\n\n    var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n    var i = 0;\n    // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- TODO enable eslint here\n    reverse && ensureSize(this);\n    return new Iterator(function () {\n      var step = iterator.next();\n      return step.done\n        ? step\n        : iteratorValue(\n            type,\n            reverse ? this$1$1.size - ++i : i++,\n            step.value,\n            step\n          );\n    });\n  };\n\n  return ToIndexedSequence;\n}(IndexedSeq));\n\nvar ToSetSequence = /*@__PURE__*/(function (SetSeq) {\n  function ToSetSequence(iter) {\n    this._iter = iter;\n    this.size = iter.size;\n  }\n\n  if ( SetSeq ) ToSetSequence.__proto__ = SetSeq;\n  ToSetSequence.prototype = Object.create( SetSeq && SetSeq.prototype );\n  ToSetSequence.prototype.constructor = ToSetSequence;\n\n  ToSetSequence.prototype.has = function has (key) {\n    return this._iter.includes(key);\n  };\n\n  ToSetSequence.prototype.__iterate = function __iterate (fn, reverse) {\n    var this$1$1 = this;\n\n    return this._iter.__iterate(function (v) { return fn(v, v, this$1$1); }, reverse);\n  };\n\n  ToSetSequence.prototype.__iterator = function __iterator (type, reverse) {\n    var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n    return new Iterator(function () {\n      var step = iterator.next();\n      return step.done\n        ? step\n        : iteratorValue(type, step.value, step.value, step);\n    });\n  };\n\n  return ToSetSequence;\n}(SetSeq));\n\nvar FromEntriesSequence = /*@__PURE__*/(function (KeyedSeq) {\n  function FromEntriesSequence(entries) {\n    this._iter = entries;\n    this.size = entries.size;\n  }\n\n  if ( KeyedSeq ) FromEntriesSequence.__proto__ = KeyedSeq;\n  FromEntriesSequence.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n  FromEntriesSequence.prototype.constructor = FromEntriesSequence;\n\n  FromEntriesSequence.prototype.entrySeq = function entrySeq () {\n    return this._iter.toSeq();\n  };\n\n  FromEntriesSequence.prototype.__iterate = function __iterate (fn, reverse) {\n    var this$1$1 = this;\n\n    return this._iter.__iterate(function (entry) {\n      // Check if entry exists first so array access doesn't throw for holes\n      // in the parent iteration.\n      if (entry) {\n        validateEntry(entry);\n        var indexedCollection = isCollection(entry);\n        return fn(\n          indexedCollection ? entry.get(1) : entry[1],\n          indexedCollection ? entry.get(0) : entry[0],\n          this$1$1\n        );\n      }\n    }, reverse);\n  };\n\n  FromEntriesSequence.prototype.__iterator = function __iterator (type, reverse) {\n    var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n    return new Iterator(function () {\n      while (true) {\n        var step = iterator.next();\n        if (step.done) {\n          return step;\n        }\n        var entry = step.value;\n        // Check if entry exists first so array access doesn't throw for holes\n        // in the parent iteration.\n        if (entry) {\n          validateEntry(entry);\n          var indexedCollection = isCollection(entry);\n          return iteratorValue(\n            type,\n            indexedCollection ? entry.get(0) : entry[0],\n            indexedCollection ? entry.get(1) : entry[1],\n            step\n          );\n        }\n      }\n    });\n  };\n\n  return FromEntriesSequence;\n}(KeyedSeq));\n\nToIndexedSequence.prototype.cacheResult =\n  ToKeyedSequence.prototype.cacheResult =\n  ToSetSequence.prototype.cacheResult =\n  FromEntriesSequence.prototype.cacheResult =\n    cacheResultThrough;\n\nfunction flipFactory(collection) {\n  var flipSequence = makeSequence(collection);\n  flipSequence._iter = collection;\n  flipSequence.size = collection.size;\n  flipSequence.flip = function () { return collection; };\n  flipSequence.reverse = function () {\n    var reversedSequence = collection.reverse.apply(this); // super.reverse()\n    reversedSequence.flip = function () { return collection.reverse(); };\n    return reversedSequence;\n  };\n  flipSequence.has = function (key) { return collection.includes(key); };\n  flipSequence.includes = function (key) { return collection.has(key); };\n  flipSequence.cacheResult = cacheResultThrough;\n  flipSequence.__iterateUncached = function (fn, reverse) {\n    var this$1$1 = this;\n\n    return collection.__iterate(function (v, k) { return fn(k, v, this$1$1) !== false; }, reverse);\n  };\n  flipSequence.__iteratorUncached = function (type, reverse) {\n    if (type === ITERATE_ENTRIES) {\n      var iterator = collection.__iterator(type, reverse);\n      return new Iterator(function () {\n        var step = iterator.next();\n        if (!step.done) {\n          var k = step.value[0];\n          step.value[0] = step.value[1];\n          step.value[1] = k;\n        }\n        return step;\n      });\n    }\n    return collection.__iterator(\n      type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n      reverse\n    );\n  };\n  return flipSequence;\n}\n\nfunction mapFactory(collection, mapper, context) {\n  var mappedSequence = makeSequence(collection);\n  mappedSequence.size = collection.size;\n  mappedSequence.has = function (key) { return collection.has(key); };\n  mappedSequence.get = function (key, notSetValue) {\n    var v = collection.get(key, NOT_SET);\n    return v === NOT_SET\n      ? notSetValue\n      : mapper.call(context, v, key, collection);\n  };\n  mappedSequence.__iterateUncached = function (fn, reverse) {\n    var this$1$1 = this;\n\n    return collection.__iterate(\n      function (v, k, c) { return fn(mapper.call(context, v, k, c), k, this$1$1) !== false; },\n      reverse\n    );\n  };\n  mappedSequence.__iteratorUncached = function (type, reverse) {\n    var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n    return new Iterator(function () {\n      var step = iterator.next();\n      if (step.done) {\n        return step;\n      }\n      var entry = step.value;\n      var key = entry[0];\n      return iteratorValue(\n        type,\n        key,\n        mapper.call(context, entry[1], key, collection),\n        step\n      );\n    });\n  };\n  return mappedSequence;\n}\n\nfunction reverseFactory(collection, useKeys) {\n  var reversedSequence = makeSequence(collection);\n  reversedSequence._iter = collection;\n  reversedSequence.size = collection.size;\n  reversedSequence.reverse = function () { return collection; };\n  if (collection.flip) {\n    reversedSequence.flip = function () {\n      var flipSequence = flipFactory(collection);\n      flipSequence.reverse = function () { return collection.flip(); };\n      return flipSequence;\n    };\n  }\n  reversedSequence.get = function (key, notSetValue) { return collection.get(useKeys ? key : -1 - key, notSetValue); };\n  reversedSequence.has = function (key) { return collection.has(useKeys ? key : -1 - key); };\n  reversedSequence.includes = function (value) { return collection.includes(value); };\n  reversedSequence.cacheResult = cacheResultThrough;\n  reversedSequence.__iterate = function (fn, reverse) {\n    var this$1$1 = this;\n\n    var i = 0;\n    // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- TODO enable eslint here\n    reverse && ensureSize(collection);\n    return collection.__iterate(\n      function (v, k) { return fn(v, useKeys ? k : reverse ? this$1$1.size - ++i : i++, this$1$1); },\n      !reverse\n    );\n  };\n  reversedSequence.__iterator = function (type, reverse) {\n    var i = 0;\n    // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- TODO enable eslint here\n    reverse && ensureSize(collection);\n    var iterator = collection.__iterator(ITERATE_ENTRIES, !reverse);\n    return new Iterator(function () {\n      var step = iterator.next();\n      if (step.done) {\n        return step;\n      }\n      var entry = step.value;\n      return iteratorValue(\n        type,\n        // `__iterator` is an arrow function, so `this` is not the reversed\n        // sequence here — read `reversedSequence.size` explicitly.\n        useKeys ? entry[0] : reverse ? reversedSequence.size - ++i : i++,\n        entry[1],\n        step\n      );\n    });\n  };\n  return reversedSequence;\n}\n\nfunction filterFactory(collection, predicate, context, useKeys) {\n  var filterSequence = makeSequence(collection);\n  if (useKeys) {\n    filterSequence.has = function (key) {\n      var v = collection.get(key, NOT_SET);\n      return v !== NOT_SET && !!predicate.call(context, v, key, collection);\n    };\n    filterSequence.get = function (key, notSetValue) {\n      var v = collection.get(key, NOT_SET);\n      return v !== NOT_SET && predicate.call(context, v, key, collection)\n        ? v\n        : notSetValue;\n    };\n  }\n  filterSequence.__iterateUncached = function (fn, reverse) {\n    var this$1$1 = this;\n\n    var iterations = 0;\n    collection.__iterate(function (v, k, c) {\n      if (predicate.call(context, v, k, c)) {\n        iterations++;\n        return fn(v, useKeys ? k : iterations - 1, this$1$1);\n      }\n    }, reverse);\n    return iterations;\n  };\n  filterSequence.__iteratorUncached = function (type, reverse) {\n    var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n    var iterations = 0;\n    return new Iterator(function () {\n      while (true) {\n        var step = iterator.next();\n        if (step.done) {\n          return step;\n        }\n        var entry = step.value;\n        var key = entry[0];\n        var value = entry[1];\n        if (predicate.call(context, value, key, collection)) {\n          return iteratorValue(type, useKeys ? key : iterations++, value, step);\n        }\n      }\n    });\n  };\n  return filterSequence;\n}\n\nfunction countByFactory(collection, grouper, context) {\n  var groups = Map().asMutable();\n  collection.__iterate(function (v, k) {\n    groups.update(grouper.call(context, v, k, collection), 0, function (a) { return a + 1; });\n  });\n  return groups.asImmutable();\n}\n\nfunction groupByFactory(collection, grouper, context) {\n  var isKeyedIter = isKeyed(collection);\n  var groups = (isOrdered(collection) ? OrderedMap() : Map()).asMutable();\n  collection.__iterate(function (v, k) {\n    groups.update(\n      grouper.call(context, v, k, collection),\n      function (a) { return ((a = a || []), a.push(isKeyedIter ? [k, v] : v), a); }\n    );\n  });\n  var coerce = collectionClass(collection);\n  return groups.map(function (arr) { return reify(collection, coerce(arr)); }).asImmutable();\n}\n\nfunction partitionFactory(collection, predicate, context) {\n  var isKeyedIter = isKeyed(collection);\n  var groups = [[], []];\n  collection.__iterate(function (v, k) {\n    groups[predicate.call(context, v, k, collection) ? 1 : 0].push(\n      isKeyedIter ? [k, v] : v\n    );\n  });\n  var coerce = collectionClass(collection);\n  return groups.map(function (arr) { return reify(collection, coerce(arr)); });\n}\n\nfunction sliceFactory(collection, begin, end, useKeys) {\n  var originalSize = collection.size;\n\n  if (wholeSlice(begin, end, originalSize)) {\n    return collection;\n  }\n\n  // begin or end can not be resolved if they were provided as negative numbers and\n  // this collection's size is unknown. In that case, cache first so there is\n  // a known size and these do not resolve to NaN.\n  if (typeof originalSize === 'undefined' && (begin < 0 || end < 0)) {\n    return sliceFactory(collection.toSeq().cacheResult(), begin, end, useKeys);\n  }\n\n  var resolvedBegin = resolveBegin(begin, originalSize);\n  var resolvedEnd = resolveEnd(end, originalSize);\n\n  // Note: resolvedEnd is undefined when the original sequence's length is\n  // unknown and this slice did not supply an end and should contain all\n  // elements after resolvedBegin.\n  // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n  var resolvedSize = resolvedEnd - resolvedBegin;\n  var sliceSize;\n  if (resolvedSize === resolvedSize) {\n    sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n  }\n\n  var sliceSeq = makeSequence(collection);\n\n  // If collection.size is undefined, the size of the realized sliceSeq is\n  // unknown at this point unless the number of items to slice is 0\n  sliceSeq.size =\n    sliceSize === 0 ? sliceSize : (collection.size && sliceSize) || undefined;\n\n  if (!useKeys && isSeq(collection) && sliceSize >= 0) {\n    sliceSeq.get = function (index, notSetValue) {\n      index = wrapIndex(this, index);\n      return index >= 0 && index < sliceSize\n        ? collection.get(index + resolvedBegin, notSetValue)\n        : notSetValue;\n    };\n  }\n\n  sliceSeq.__iterateUncached = function (fn, reverse) {\n    var this$1$1 = this;\n\n    if (sliceSize === 0) {\n      return 0;\n    }\n    if (reverse) {\n      return this.cacheResult().__iterate(fn, reverse);\n    }\n    var skipped = 0;\n    var isSkipping = true;\n    var iterations = 0;\n    collection.__iterate(function (v, k) {\n      if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n        iterations++;\n        return (\n          fn(v, useKeys ? k : iterations - 1, this$1$1) !== false &&\n          iterations !== sliceSize\n        );\n      }\n    });\n    return iterations;\n  };\n\n  sliceSeq.__iteratorUncached = function (type, reverse) {\n    if (sliceSize !== 0 && reverse) {\n      return this.cacheResult().__iterator(type, reverse);\n    }\n    // Don't bother instantiating parent iterator if taking 0.\n    if (sliceSize === 0) {\n      return new Iterator(iteratorDone);\n    }\n    var iterator = collection.__iterator(type, reverse);\n    var skipped = 0;\n    var iterations = 0;\n    return new Iterator(function () {\n      while (skipped++ < resolvedBegin) {\n        iterator.next();\n      }\n      if (++iterations > sliceSize) {\n        return iteratorDone();\n      }\n      var step = iterator.next();\n      if (useKeys || type === ITERATE_VALUES || step.done) {\n        return step;\n      }\n      if (type === ITERATE_KEYS) {\n        return iteratorValue(type, iterations - 1, undefined, step);\n      }\n      return iteratorValue(type, iterations - 1, step.value[1], step);\n    });\n  };\n\n  return sliceSeq;\n}\n\nfunction takeWhileFactory(collection, predicate, context) {\n  var takeSequence = makeSequence(collection);\n  takeSequence.__iterateUncached = function (fn, reverse) {\n    var this$1$1 = this;\n\n    if (reverse) {\n      return this.cacheResult().__iterate(fn, reverse);\n    }\n    var iterations = 0;\n    collection.__iterate(\n      function (v, k, c) { return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$1$1); }\n    );\n    return iterations;\n  };\n  takeSequence.__iteratorUncached = function (type, reverse) {\n    var this$1$1 = this;\n\n    if (reverse) {\n      return this.cacheResult().__iterator(type, reverse);\n    }\n    var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n    var iterating = true;\n    return new Iterator(function () {\n      if (!iterating) {\n        return iteratorDone();\n      }\n      var step = iterator.next();\n      if (step.done) {\n        return step;\n      }\n      var entry = step.value;\n      var k = entry[0];\n      var v = entry[1];\n      if (!predicate.call(context, v, k, this$1$1)) {\n        iterating = false;\n        return iteratorDone();\n      }\n      return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n    });\n  };\n  return takeSequence;\n}\n\nfunction skipWhileFactory(collection, predicate, context, useKeys) {\n  var skipSequence = makeSequence(collection);\n  skipSequence.__iterateUncached = function (fn, reverse) {\n    var this$1$1 = this;\n\n    if (reverse) {\n      return this.cacheResult().__iterate(fn, reverse);\n    }\n    var isSkipping = true;\n    var iterations = 0;\n    collection.__iterate(function (v, k, c) {\n      if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n        iterations++;\n        return fn(v, useKeys ? k : iterations - 1, this$1$1);\n      }\n    });\n    return iterations;\n  };\n  skipSequence.__iteratorUncached = function (type, reverse) {\n    var this$1$1 = this;\n\n    if (reverse) {\n      return this.cacheResult().__iterator(type, reverse);\n    }\n    var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n    var skipping = true;\n    var iterations = 0;\n    return new Iterator(function () {\n      var step;\n      var k;\n      var v;\n      do {\n        step = iterator.next();\n        if (step.done) {\n          if (useKeys || type === ITERATE_VALUES) {\n            return step;\n          }\n          if (type === ITERATE_KEYS) {\n            return iteratorValue(type, iterations++, undefined, step);\n          }\n          return iteratorValue(type, iterations++, step.value[1], step);\n        }\n        var entry = step.value;\n        k = entry[0];\n        v = entry[1];\n        // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- TODO enable eslint here\n        skipping && (skipping = predicate.call(context, v, k, this$1$1));\n      } while (skipping);\n      return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n    });\n  };\n  return skipSequence;\n}\n\nvar ConcatSeq = /*@__PURE__*/(function (Seq) {\n  function ConcatSeq(iterables) {\n    this._wrappedIterables = iterables.flatMap(function (iterable) {\n      if (iterable._wrappedIterables) {\n        return iterable._wrappedIterables;\n      }\n      return [iterable];\n    });\n    this.size = this._wrappedIterables.reduce(function (sum, iterable) {\n      if (sum !== undefined) {\n        var size = iterable.size;\n        if (size !== undefined) {\n          return sum + size;\n        }\n      }\n    }, 0);\n    this[IS_KEYED_SYMBOL] = this._wrappedIterables[0][IS_KEYED_SYMBOL];\n    this[IS_INDEXED_SYMBOL] = this._wrappedIterables[0][IS_INDEXED_SYMBOL];\n    this[IS_ORDERED_SYMBOL] = this._wrappedIterables[0][IS_ORDERED_SYMBOL];\n  }\n\n  if ( Seq ) ConcatSeq.__proto__ = Seq;\n  ConcatSeq.prototype = Object.create( Seq && Seq.prototype );\n  ConcatSeq.prototype.constructor = ConcatSeq;\n\n  ConcatSeq.prototype.__iterateUncached = function __iterateUncached (fn, reverse) {\n    if (this._wrappedIterables.length === 0) {\n      return;\n    }\n\n    if (reverse) {\n      return this.cacheResult().__iterate(fn, reverse);\n    }\n\n    var iterableIndex = 0;\n    var useKeys = isKeyed(this);\n    var iteratorType = useKeys ? ITERATE_ENTRIES : ITERATE_VALUES;\n    var currentIterator = this._wrappedIterables[iterableIndex].__iterator(\n      iteratorType,\n      reverse\n    );\n\n    var keepGoing = true;\n    var index = 0;\n    while (keepGoing) {\n      var next = currentIterator.next();\n      while (next.done) {\n        iterableIndex++;\n        if (iterableIndex === this._wrappedIterables.length) {\n          return index;\n        }\n        currentIterator = this._wrappedIterables[iterableIndex].__iterator(\n          iteratorType,\n          reverse\n        );\n        next = currentIterator.next();\n      }\n      var fnResult = useKeys\n        ? fn(next.value[1], next.value[0], this)\n        : fn(next.value, index, this);\n      keepGoing = fnResult !== false;\n      index++;\n    }\n    return index;\n  };\n\n  ConcatSeq.prototype.__iteratorUncached = function __iteratorUncached (type, reverse) {\n    var this$1$1 = this;\n\n    if (this._wrappedIterables.length === 0) {\n      return new Iterator(iteratorDone);\n    }\n\n    if (reverse) {\n      return this.cacheResult().__iterator(type, reverse);\n    }\n\n    var iterableIndex = 0;\n    var currentIterator = this._wrappedIterables[iterableIndex].__iterator(\n      type,\n      reverse\n    );\n    return new Iterator(function () {\n      var next = currentIterator.next();\n      while (next.done) {\n        iterableIndex++;\n        if (iterableIndex === this$1$1._wrappedIterables.length) {\n          return next;\n        }\n        currentIterator = this$1$1._wrappedIterables[iterableIndex].__iterator(\n          type,\n          reverse\n        );\n        next = currentIterator.next();\n      }\n      return next;\n    });\n  };\n\n  return ConcatSeq;\n}(Seq));\n\nfunction concatFactory(collection, values) {\n  var isKeyedCollection = isKeyed(collection);\n  var iters = [collection]\n    .concat(values)\n    .map(function (v) {\n      if (!isCollection(v)) {\n        v = isKeyedCollection\n          ? keyedSeqFromValue(v)\n          : indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n      } else if (isKeyedCollection) {\n        v = KeyedCollection(v);\n      }\n      return v;\n    })\n    .filter(function (v) { return v.size !== 0; });\n\n  if (iters.length === 0) {\n    return collection;\n  }\n\n  if (iters.length === 1) {\n    var singleton = iters[0];\n    if (\n      singleton === collection ||\n      (isKeyedCollection && isKeyed(singleton)) ||\n      (isIndexed(collection) && isIndexed(singleton))\n    ) {\n      return singleton;\n    }\n  }\n\n  return new ConcatSeq(iters);\n}\n\nfunction flattenFactory(collection, depth, useKeys) {\n  var flatSequence = makeSequence(collection);\n  flatSequence.__iterateUncached = function (fn, reverse) {\n    if (reverse) {\n      return this.cacheResult().__iterate(fn, reverse);\n    }\n    var iterations = 0;\n    var stopped = false;\n    function flatDeep(iter, currentDepth) {\n      iter.__iterate(function (v, k) {\n        if ((!depth || currentDepth < depth) && isCollection(v)) {\n          flatDeep(v, currentDepth + 1);\n        } else {\n          iterations++;\n          if (fn(v, useKeys ? k : iterations - 1, flatSequence) === false) {\n            stopped = true;\n          }\n        }\n        return !stopped;\n      }, reverse);\n    }\n    flatDeep(collection, 0);\n    return iterations;\n  };\n  flatSequence.__iteratorUncached = function (type, reverse) {\n    if (reverse) {\n      return this.cacheResult().__iterator(type, reverse);\n    }\n    var iterator = collection.__iterator(type, reverse);\n    var stack = [];\n    var iterations = 0;\n    return new Iterator(function () {\n      while (iterator) {\n        var step = iterator.next();\n        if (step.done !== false) {\n          iterator = stack.pop();\n          continue;\n        }\n        var v = step.value;\n        if (type === ITERATE_ENTRIES) {\n          v = v[1];\n        }\n        if ((!depth || stack.length < depth) && isCollection(v)) {\n          stack.push(iterator);\n          iterator = v.__iterator(type, reverse);\n        } else {\n          return useKeys ? step : iteratorValue(type, iterations++, v, step);\n        }\n      }\n      return iteratorDone();\n    });\n  };\n  return flatSequence;\n}\n\nfunction flatMapFactory(collection, mapper, context) {\n  var coerce = collectionClass(collection);\n  return collection\n    .toSeq()\n    .map(function (v, k) { return coerce(mapper.call(context, v, k, collection)); })\n    .flatten(true);\n}\n\nfunction interposeFactory(collection, separator) {\n  var interposedSequence = makeSequence(collection);\n  interposedSequence.size = collection.size && collection.size * 2 - 1;\n  interposedSequence.__iterateUncached = function (fn, reverse) {\n    var this$1$1 = this;\n\n    var iterations = 0;\n    collection.__iterate(\n      function (v) { return (!iterations || fn(separator, iterations++, this$1$1) !== false) &&\n        fn(v, iterations++, this$1$1) !== false; },\n      reverse\n    );\n    return iterations;\n  };\n  interposedSequence.__iteratorUncached = function (type, reverse) {\n    var iterator = collection.__iterator(ITERATE_VALUES, reverse);\n    var iterations = 0;\n    var step;\n    return new Iterator(function () {\n      if (!step || iterations % 2) {\n        step = iterator.next();\n        if (step.done) {\n          return step;\n        }\n      }\n      return iterations % 2\n        ? iteratorValue(type, iterations++, separator)\n        : iteratorValue(type, iterations++, step.value, step);\n    });\n  };\n  return interposedSequence;\n}\n\nfunction sortFactory(collection, comparator, mapper) {\n  if (!comparator) {\n    comparator = defaultComparator;\n  }\n  var isKeyedCollection = isKeyed(collection);\n  var index = 0;\n  var entries = collection\n    .toSeq()\n    .map(function (v, k) { return [k, v, index++, mapper ? mapper(v, k, collection) : v]; })\n    .valueSeq()\n    .toArray();\n  entries\n    .sort(function (a, b) { return comparator(a[3], b[3]) || a[2] - b[2]; })\n    .forEach(\n      isKeyedCollection\n        ? function (v, i) {\n            entries[i].length = 2;\n          }\n        : function (v, i) {\n            entries[i] = v[1];\n          }\n    );\n  return isKeyedCollection\n    ? KeyedSeq(entries)\n    : isIndexed(collection)\n      ? IndexedSeq(entries)\n      : SetSeq(entries);\n}\n\nfunction maxFactory(collection, comparator, mapper) {\n  if (!comparator) {\n    comparator = defaultComparator;\n  }\n  if (mapper) {\n    var entry = collection\n      .toSeq()\n      .map(function (v, k) { return [v, mapper(v, k, collection)]; })\n      .reduce(function (a, b) { return (maxCompare(comparator, a[1], b[1]) ? b : a); });\n    return entry && entry[0];\n  }\n  return collection.reduce(function (a, b) { return (maxCompare(comparator, a, b) ? b : a); });\n}\n\nfunction maxCompare(comparator, a, b) {\n  var comp = comparator(b, a);\n  // b is considered the new max if the comparator declares them equal, but\n  // they are not equal and b is in fact a nullish value.\n  return (\n    (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) ||\n    comp > 0\n  );\n}\n\nfunction zipWithFactory(keyIter, zipper, iters, zipAll) {\n  var zipSequence = makeSequence(keyIter);\n  var sizes = new ArraySeq(iters).map(function (i) { return i.size; });\n  zipSequence.size = zipAll ? sizes.max() : sizes.min();\n  // Note: this a generic base implementation of __iterate in terms of\n  // __iterator which may be more generically useful in the future.\n  zipSequence.__iterate = function (fn, reverse) {\n    /* generic:\n    var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n    var step;\n    var iterations = 0;\n    while (!(step = iterator.next()).done) {\n      iterations++;\n      if (fn(step.value[1], step.value[0], this) === false) {\n        break;\n      }\n    }\n    return iterations;\n    */\n    // indexed:\n    var iterator = this.__iterator(ITERATE_VALUES, reverse);\n    var step;\n    var iterations = 0;\n    while (!(step = iterator.next()).done) {\n      if (fn(step.value, iterations++, this) === false) {\n        break;\n      }\n    }\n    return iterations;\n  };\n  zipSequence.__iteratorUncached = function (type, reverse) {\n    var iterators = iters.map(\n      function (i) { return ((i = Collection(i)), getIterator(reverse ? i.reverse() : i)); }\n    );\n    var iterations = 0;\n    var isDone = false;\n    return new Iterator(function () {\n      var steps;\n      if (!isDone) {\n        steps = iterators.map(function (i) { return i.next(); });\n        isDone = zipAll\n          ? steps.every(function (s) { return s.done; })\n          : steps.some(function (s) { return s.done; });\n      }\n      if (isDone) {\n        return iteratorDone();\n      }\n      return iteratorValue(\n        type,\n        iterations++,\n        zipper.apply(\n          null,\n          steps.map(function (s) { return s.value; })\n        )\n      );\n    });\n  };\n  return zipSequence;\n}\n\n// #pragma Helper Functions\n\nfunction reify(iter, seq) {\n  return iter === seq ? iter : isSeq(iter) ? seq : iter.constructor(seq);\n}\n\nfunction validateEntry(entry) {\n  if (entry !== Object(entry)) {\n    throw new TypeError('Expected [K, V] tuple: ' + entry);\n  }\n}\n\nfunction collectionClass(collection) {\n  return isKeyed(collection)\n    ? KeyedCollection\n    : isIndexed(collection)\n      ? IndexedCollection\n      : SetCollection;\n}\n\nfunction makeSequence(collection) {\n  return Object.create(\n    (isKeyed(collection)\n      ? KeyedSeq\n      : isIndexed(collection)\n        ? IndexedSeq\n        : SetSeq\n    ).prototype\n  );\n}\n\nfunction cacheResultThrough() {\n  if (this._iter.cacheResult) {\n    this._iter.cacheResult();\n    this.size = this._iter.size;\n    return this;\n  }\n  return Seq.prototype.cacheResult.call(this);\n}\n\nfunction defaultComparator(a, b) {\n  if (a === undefined && b === undefined) {\n    return 0;\n  }\n\n  if (a === undefined) {\n    return 1;\n  }\n\n  if (b === undefined) {\n    return -1;\n  }\n\n  return a > b ? 1 : a < b ? -1 : 0;\n}\n\n/**\n * True if `maybeValue` is a JavaScript Object which has *both* `equals()`\n * and `hashCode()` methods.\n *\n * Any two instances of *value objects* can be compared for value equality with\n * `Immutable.is()` and can be used as keys in a `Map` or members in a `Set`.\n */\nfunction isValueObject(maybeValue) {\n    return Boolean(maybeValue &&\n        // @ts-expect-error: maybeValue is typed as `{}`\n        typeof maybeValue.equals === 'function' &&\n        // @ts-expect-error: maybeValue is typed as `{}`\n        typeof maybeValue.hashCode === 'function');\n}\n\n/**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n *     var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n *     var date2 = new Date(1234567890000);\n *     date1.valueOf(); // 1234567890000\n *     assert( date1 !== date2 );\n *     assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n *     assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n *     if (a.equals(b)) {\n *       assert( a.hashCode() === b.hashCode() );\n *     }\n *\n * All Immutable collections are Value Objects: they implement `equals()`\n * and `hashCode()`.\n */\nfunction is(valueA, valueB) {\n    if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n        return true;\n    }\n    if (!valueA || !valueB) {\n        return false;\n    }\n    if (typeof valueA.valueOf === 'function' &&\n        typeof valueB.valueOf === 'function') {\n        valueA = valueA.valueOf();\n        valueB = valueB.valueOf();\n        if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n            return true;\n        }\n        if (!valueA || !valueB) {\n            return false;\n        }\n    }\n    return !!(isValueObject(valueA) &&\n        isValueObject(valueB) &&\n        valueA.equals(valueB));\n}\n\nfunction update$1(collection, key, notSetValue, updater) {\n    return updateIn(\n    // @ts-expect-error Index signature for type string is missing in type V[]\n    collection, [key], notSetValue, updater);\n}\n\nfunction merge$1() {\n  var iters = [], len = arguments.length;\n  while ( len-- ) iters[ len ] = arguments[ len ];\n\n  return mergeIntoKeyedWith(this, iters);\n}\n\nfunction mergeWith$1(merger) {\n  var iters = [], len = arguments.length - 1;\n  while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n  if (typeof merger !== 'function') {\n    throw new TypeError('Invalid merger function: ' + merger);\n  }\n  return mergeIntoKeyedWith(this, iters, merger);\n}\n\nfunction mergeIntoKeyedWith(collection, collections, merger) {\n  var iters = [];\n  for (var ii = 0; ii < collections.length; ii++) {\n    var collection$1 = KeyedCollection(collections[ii]);\n    if (collection$1.size !== 0) {\n      iters.push(collection$1);\n    }\n  }\n  if (iters.length === 0) {\n    return collection;\n  }\n  if (\n    collection.toSeq().size === 0 &&\n    !collection.__ownerID &&\n    iters.length === 1\n  ) {\n    return isRecord(collection)\n      ? collection // Record is empty and will not be updated: return the same instance\n      : collection.constructor(iters[0]);\n  }\n  return collection.withMutations(function (collection) {\n    var mergeIntoCollection = merger\n      ? function (value, key) {\n          update$1(collection, key, NOT_SET, function (oldVal) { return oldVal === NOT_SET ? value : merger(oldVal, value, key); }\n          );\n        }\n      : function (value, key) {\n          collection.set(key, value);\n        };\n    for (var ii = 0; ii < iters.length; ii++) {\n      iters[ii].forEach(mergeIntoCollection);\n    }\n  });\n}\n\nvar toString = Object.prototype.toString;\nfunction isPlainObject(value) {\n    // The base prototype's toString deals with Argument objects and native namespaces like Math\n    if (!value ||\n        typeof value !== 'object' ||\n        toString.call(value) !== '[object Object]') {\n        return false;\n    }\n    var proto = Object.getPrototypeOf(value);\n    if (proto === null) {\n        return true;\n    }\n    // Iteratively going up the prototype chain is needed for cross-realm environments (differing contexts, iframes, etc)\n    var parentProto = proto;\n    var nextProto = Object.getPrototypeOf(proto);\n    while (nextProto !== null) {\n        parentProto = nextProto;\n        nextProto = Object.getPrototypeOf(parentProto);\n    }\n    return parentProto === proto;\n}\n\n/**\n * Returns true if the value is a potentially-persistent data structure, either\n * provided by Immutable.js or a plain Array or Object.\n */\nfunction isDataStructure(value) {\n    return (typeof value === 'object' &&\n        (isImmutable(value) || Array.isArray(value) || isPlainObject(value)));\n}\n\nfunction isProtoKey(key) {\n    return (typeof key === 'string' && (key === '__proto__' || key === 'constructor'));\n}\n\n// http://jsperf.com/copy-array-inline\nfunction arrCopy(arr, offset) {\n    offset = offset || 0;\n    var len = Math.max(0, arr.length - offset);\n    var newArr = new Array(len);\n    for (var ii = 0; ii < len; ii++) {\n        // @ts-expect-error We may want to guard for undefined values with `if (arr[ii + offset] !== undefined`, but ths should not happen by design\n        newArr[ii] = arr[ii + offset];\n    }\n    return newArr;\n}\n\nfunction shallowCopy(from) {\n    if (Array.isArray(from)) {\n        return arrCopy(from);\n    }\n    var to = {};\n    for (var key in from) {\n        if (isProtoKey(key)) {\n            continue;\n        }\n        if (hasOwnProperty.call(from, key)) {\n            to[key] = from[key];\n        }\n    }\n    return to;\n}\n\nfunction merge(collection) {\n  var sources = [], len = arguments.length - 1;\n  while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n  return mergeWithSources(collection, sources);\n}\n\nfunction mergeWith(merger, collection) {\n  var sources = [], len = arguments.length - 2;\n  while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n  return mergeWithSources(collection, sources, merger);\n}\n\nfunction mergeDeep$1(collection) {\n  var sources = [], len = arguments.length - 1;\n  while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n  return mergeDeepWithSources(collection, sources);\n}\n\nfunction mergeDeepWith$1(merger, collection) {\n  var sources = [], len = arguments.length - 2;\n  while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n  return mergeDeepWithSources(collection, sources, merger);\n}\n\nfunction mergeDeepWithSources(collection, sources, merger) {\n  return mergeWithSources(collection, sources, deepMergerWith(merger));\n}\n\nfunction mergeWithSources(collection, sources, merger) {\n  if (!isDataStructure(collection)) {\n    throw new TypeError(\n      'Cannot merge into non-data-structure value: ' + collection\n    );\n  }\n  if (isImmutable(collection)) {\n    return typeof merger === 'function' && collection.mergeWith\n      ? collection.mergeWith.apply(collection, [ merger ].concat( sources ))\n      : collection.merge\n        ? collection.merge.apply(collection, sources)\n        : collection.concat.apply(collection, sources);\n  }\n  var isArray = Array.isArray(collection);\n  var merged = collection;\n  var Collection = isArray ? IndexedCollection : KeyedCollection;\n  var mergeItem = isArray\n    ? function (value) {\n        // Copy on write\n        if (merged === collection) {\n          merged = shallowCopy(merged);\n        }\n        merged.push(value);\n      }\n    : function (value, key) {\n        if (isProtoKey(key)) {\n          return;\n        }\n\n        var hasVal = hasOwnProperty.call(merged, key);\n        var nextVal =\n          hasVal && merger ? merger(merged[key], value, key) : value;\n        if (!hasVal || nextVal !== merged[key]) {\n          // Copy on write\n          if (merged === collection) {\n            merged = shallowCopy(merged);\n          }\n          merged[key] = nextVal;\n        }\n      };\n  for (var i = 0; i < sources.length; i++) {\n    Collection(sources[i]).forEach(mergeItem);\n  }\n  return merged;\n}\n\nfunction deepMergerWith(merger) {\n  function deepMerger(oldValue, newValue, key) {\n    return isDataStructure(oldValue) &&\n      isDataStructure(newValue) &&\n      areMergeable(oldValue, newValue)\n      ? mergeWithSources(oldValue, [newValue], deepMerger)\n      : merger\n        ? merger(oldValue, newValue, key)\n        : newValue;\n  }\n  return deepMerger;\n}\n\n/**\n * It's unclear what the desired behavior is for merging two collections that\n * fall into separate categories between keyed, indexed, or set-like, so we only\n * consider them mergeable if they fall into the same category.\n */\nfunction areMergeable(oldDataStructure, newDataStructure) {\n  var oldSeq = Seq(oldDataStructure);\n  var newSeq = Seq(newDataStructure);\n  // This logic assumes that a sequence can only fall into one of the three\n  // categories mentioned above (since there's no `isSetLike()` method).\n  return (\n    isIndexed(oldSeq) === isIndexed(newSeq) &&\n    isKeyed(oldSeq) === isKeyed(newSeq)\n  );\n}\n\nfunction mergeDeep() {\n  var iters = [], len = arguments.length;\n  while ( len-- ) iters[ len ] = arguments[ len ];\n\n  return mergeDeepWithSources(this, iters);\n}\n\nfunction mergeDeepWith(merger) {\n  var iters = [], len = arguments.length - 1;\n  while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n  return mergeDeepWithSources(this, iters, merger);\n}\n\nfunction mergeDeepIn(keyPath) {\n  var iters = [], len = arguments.length - 1;\n  while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n  return updateIn(this, keyPath, emptyMap(), function (m) { return mergeDeepWithSources(m, iters); }\n  );\n}\n\nfunction mergeIn(keyPath) {\n  var iters = [], len = arguments.length - 1;\n  while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n  return updateIn(this, keyPath, emptyMap(), function (m) { return mergeWithSources(m, iters); });\n}\n\n/**\n * Returns a copy of the collection with the value at the key path set to the\n * provided value.\n *\n * A functional alternative to `collection.setIn(keypath)` which will also\n * work with plain Objects and Arrays.\n */\nfunction setIn$1(collection, keyPath, value) {\n    return updateIn(collection, keyPath, NOT_SET, function () { return value; });\n}\n\nfunction setIn(keyPath, v) {\n  return setIn$1(this, keyPath, v);\n}\n\nfunction update(key, notSetValue, updater) {\n  return arguments.length === 1\n    ? key(this)\n    : update$1(this, key, notSetValue, updater);\n}\n\nfunction updateIn$1(keyPath, notSetValue, updater) {\n  return updateIn(this, keyPath, notSetValue, updater);\n}\n\nfunction wasAltered() {\n  return this.__altered;\n}\n\nfunction withMutations(fn) {\n  var mutable = this.asMutable();\n  fn(mutable);\n  return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n}\n\nvar IS_MAP_SYMBOL = '@@__IMMUTABLE_MAP__@@';\n/**\n * True if `maybeMap` is a Map.\n *\n * Also true for OrderedMaps.\n */\nfunction isMap(maybeMap) {\n    return Boolean(maybeMap &&\n        // @ts-expect-error: maybeMap is typed as `{}`, need to change in 6.0 to `maybeMap && typeof maybeMap === 'object' && IS_MAP_SYMBOL in maybeMap`\n        maybeMap[IS_MAP_SYMBOL]);\n}\n\nfunction invariant(condition, error) {\n    if (!condition)\n        { throw new Error(error); }\n}\n\nfunction assertNotInfinite(size) {\n    invariant(size !== Infinity, 'Cannot perform this action with an infinite size.');\n}\n\nvar Map = /*@__PURE__*/(function (KeyedCollection) {\n  function Map(value) {\n    // eslint-disable-next-line no-constructor-return\n    return value === undefined || value === null\n      ? emptyMap()\n      : isMap(value) && !isOrdered(value)\n        ? value\n        : emptyMap().withMutations(function (map) {\n            var iter = KeyedCollection(value);\n            assertNotInfinite(iter.size);\n            iter.forEach(function (v, k) { return map.set(k, v); });\n          });\n  }\n\n  if ( KeyedCollection ) Map.__proto__ = KeyedCollection;\n  Map.prototype = Object.create( KeyedCollection && KeyedCollection.prototype );\n  Map.prototype.constructor = Map;\n\n  Map.prototype.toString = function toString () {\n    return this.__toString('Map {', '}');\n  };\n\n  // @pragma Access\n\n  Map.prototype.get = function get (k, notSetValue) {\n    return this._root\n      ? this._root.get(0, undefined, k, notSetValue)\n      : notSetValue;\n  };\n\n  // @pragma Modification\n\n  Map.prototype.set = function set (k, v) {\n    return updateMap(this, k, v);\n  };\n\n  Map.prototype.remove = function remove (k) {\n    return updateMap(this, k, NOT_SET);\n  };\n\n  Map.prototype.deleteAll = function deleteAll (keys) {\n    var collection = Collection(keys);\n\n    if (collection.size === 0) {\n      return this;\n    }\n\n    return this.withMutations(function (map) {\n      collection.forEach(function (key) { return map.remove(key); });\n    });\n  };\n\n  Map.prototype.clear = function clear () {\n    if (this.size === 0) {\n      return this;\n    }\n    if (this.__ownerID) {\n      this.size = 0;\n      this._root = null;\n      this.__hash = undefined;\n      this.__altered = true;\n      return this;\n    }\n    return emptyMap();\n  };\n\n  // @pragma Composition\n\n  Map.prototype.sort = function sort (comparator) {\n    // Late binding\n    return OrderedMap(sortFactory(this, comparator));\n  };\n\n  Map.prototype.sortBy = function sortBy (mapper, comparator) {\n    // Late binding\n    return OrderedMap(sortFactory(this, comparator, mapper));\n  };\n\n  Map.prototype.map = function map (mapper, context) {\n    var this$1$1 = this;\n\n    return this.withMutations(function (map) {\n      map.forEach(function (value, key) {\n        map.set(key, mapper.call(context, value, key, this$1$1));\n      });\n    });\n  };\n\n  // @pragma Mutability\n\n  Map.prototype.__iterator = function __iterator (type, reverse) {\n    return new MapIterator(this, type, reverse);\n  };\n\n  Map.prototype.__iterate = function __iterate (fn, reverse) {\n    var this$1$1 = this;\n\n    var iterations = 0;\n    // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- TODO enable eslint here\n    this._root &&\n      this._root.iterate(function (entry) {\n        iterations++;\n        return fn(entry[1], entry[0], this$1$1);\n      }, reverse);\n    return iterations;\n  };\n\n  Map.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n    if (ownerID === this.__ownerID) {\n      return this;\n    }\n    if (!ownerID) {\n      if (this.size === 0) {\n        return emptyMap();\n      }\n      this.__ownerID = ownerID;\n      this.__altered = false;\n      return this;\n    }\n    return makeMap(this.size, this._root, ownerID, this.__hash);\n  };\n\n  return Map;\n}(KeyedCollection));\n\nMap.isMap = isMap;\n\nvar MapPrototype = Map.prototype;\nMapPrototype[IS_MAP_SYMBOL] = true;\nMapPrototype[DELETE] = MapPrototype.remove;\nMapPrototype.removeAll = MapPrototype.deleteAll;\nMapPrototype.setIn = setIn;\nMapPrototype.removeIn = MapPrototype.deleteIn = deleteIn;\nMapPrototype.update = update;\nMapPrototype.updateIn = updateIn$1;\nMapPrototype.merge = MapPrototype.concat = merge$1;\nMapPrototype.mergeWith = mergeWith$1;\nMapPrototype.mergeDeep = mergeDeep;\nMapPrototype.mergeDeepWith = mergeDeepWith;\nMapPrototype.mergeIn = mergeIn;\nMapPrototype.mergeDeepIn = mergeDeepIn;\nMapPrototype.withMutations = withMutations;\nMapPrototype.wasAltered = wasAltered;\nMapPrototype.asImmutable = asImmutable;\nMapPrototype['@@transducer/init'] = MapPrototype.asMutable = asMutable;\nMapPrototype['@@transducer/step'] = function (result, arr) {\n  return result.set(arr[0], arr[1]);\n};\nMapPrototype['@@transducer/result'] = function (obj) {\n  return obj.asImmutable();\n};\n\n// #pragma Trie Nodes\n\nvar ArrayMapNode = function ArrayMapNode(ownerID, entries) {\n  this.ownerID = ownerID;\n  this.entries = entries;\n};\n\nArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n  var entries = this.entries;\n  for (var ii = 0, len = entries.length; ii < len; ii++) {\n    if (is(key, entries[ii][0])) {\n      return entries[ii][1];\n    }\n  }\n  return notSetValue;\n};\n\nArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n  var removed = value === NOT_SET;\n\n  var entries = this.entries;\n  var idx = 0;\n  var len = entries.length;\n  for (; idx < len; idx++) {\n    if (is(key, entries[idx][0])) {\n      break;\n    }\n  }\n  var exists = idx < len;\n\n  if (exists ? entries[idx][1] === value : removed) {\n    return this;\n  }\n\n  SetRef(didAlter);\n  // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- TODO enable eslint here\n  (removed || !exists) && SetRef(didChangeSize);\n\n  if (removed && entries.length === 1) {\n    return; // undefined\n  }\n\n  if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n    return createNodes(ownerID, entries, key, value);\n  }\n\n  var isEditable = ownerID && ownerID === this.ownerID;\n  var newEntries = isEditable ? entries : arrCopy(entries);\n\n  if (exists) {\n    if (removed) {\n      // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- TODO enable eslint here\n      idx === len - 1\n        ? newEntries.pop()\n        : (newEntries[idx] = newEntries.pop());\n    } else {\n      newEntries[idx] = [key, value];\n    }\n  } else {\n    newEntries.push([key, value]);\n  }\n\n  if (isEditable) {\n    this.entries = newEntries;\n    return this;\n  }\n\n  return new ArrayMapNode(ownerID, newEntries);\n};\n\nvar BitmapIndexedNode = function BitmapIndexedNode(ownerID, bitmap, nodes) {\n  this.ownerID = ownerID;\n  this.bitmap = bitmap;\n  this.nodes = nodes;\n};\n\nBitmapIndexedNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n  if (keyHash === undefined) {\n    keyHash = hash(key);\n  }\n  var bit = 1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK);\n  var bitmap = this.bitmap;\n  return (bitmap & bit) === 0\n    ? notSetValue\n    : this.nodes[popCount(bitmap & (bit - 1))].get(\n        shift + SHIFT,\n        keyHash,\n        key,\n        notSetValue\n      );\n};\n\nBitmapIndexedNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n  if (keyHash === undefined) {\n    keyHash = hash(key);\n  }\n  var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n  var bit = 1 << keyHashFrag;\n  var bitmap = this.bitmap;\n  var exists = (bitmap & bit) !== 0;\n\n  if (!exists && value === NOT_SET) {\n    return this;\n  }\n\n  var idx = popCount(bitmap & (bit - 1));\n  var nodes = this.nodes;\n  var node = exists ? nodes[idx] : undefined;\n  var newNode = updateNode(\n    node,\n    ownerID,\n    shift + SHIFT,\n    keyHash,\n    key,\n    value,\n    didChangeSize,\n    didAlter\n  );\n\n  if (newNode === node) {\n    return this;\n  }\n\n  if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n    return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n  }\n\n  if (\n    exists &&\n    !newNode &&\n    nodes.length === 2 &&\n    isLeafNode(nodes[idx ^ 1])\n  ) {\n    return nodes[idx ^ 1];\n  }\n\n  if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n    return newNode;\n  }\n\n  var isEditable = ownerID && ownerID === this.ownerID;\n  var newBitmap = exists ? (newNode ? bitmap : bitmap ^ bit) : bitmap | bit;\n  var newNodes = exists\n    ? newNode\n      ? setAt(nodes, idx, newNode, isEditable)\n      : spliceOut(nodes, idx, isEditable)\n    : spliceIn(nodes, idx, newNode, isEditable);\n\n  if (isEditable) {\n    this.bitmap = newBitmap;\n    this.nodes = newNodes;\n    return this;\n  }\n\n  return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n};\n\nvar HashArrayMapNode = function HashArrayMapNode(ownerID, count, nodes) {\n  this.ownerID = ownerID;\n  this.count = count;\n  this.nodes = nodes;\n};\n\nHashArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n  if (keyHash === undefined) {\n    keyHash = hash(key);\n  }\n  var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n  var node = this.nodes[idx];\n  return node\n    ? node.get(shift + SHIFT, keyHash, key, notSetValue)\n    : notSetValue;\n};\n\nHashArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n  if (keyHash === undefined) {\n    keyHash = hash(key);\n  }\n  var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n  var removed = value === NOT_SET;\n  var nodes = this.nodes;\n  var node = nodes[idx];\n\n  if (removed && !node) {\n    return this;\n  }\n\n  var newNode = updateNode(\n    node,\n    ownerID,\n    shift + SHIFT,\n    keyHash,\n    key,\n    value,\n    didChangeSize,\n    didAlter\n  );\n  if (newNode === node) {\n    return this;\n  }\n\n  var newCount = this.count;\n  if (!node) {\n    newCount++;\n  } else if (!newNode) {\n    newCount--;\n    if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n      return packNodes(ownerID, nodes, newCount, idx);\n    }\n  }\n\n  var isEditable = ownerID && ownerID === this.ownerID;\n  var newNodes = setAt(nodes, idx, newNode, isEditable);\n\n  if (isEditable) {\n    this.count = newCount;\n    this.nodes = newNodes;\n    return this;\n  }\n\n  return new HashArrayMapNode(ownerID, newCount, newNodes);\n};\n\n/**\n * Trie leaf gathering entries whose keys all share the same 32-bit `hash()`.\n * The trie routes by hash, so colliding keys cannot be separated and land here\n * in a flat `entries` array, disambiguated by `is()`.\n *\n * To guard against hash-flooding DoS (CWE-407), large buckets build a secondary\n * index keyed by a per-process seeded hash (`hashCollisionKey`). `is()` still\n * decides equality, so the index can only ever narrow candidates, never lose a key.\n */\nvar HashCollisionNode = function HashCollisionNode(ownerID, keyHash, entries) {\n  this.ownerID = ownerID;\n  this.keyHash = keyHash;\n  this.entries = entries;\n  // Lazy `{ [secondaryHash]: number[] }`, built only past\n  // MIN_HASH_COLLISION_INDEX_SIZE so small buckets keep their linear path.\n  this._index = undefined;\n};\n\n// Returns the position of `key` in `this.entries`, or -1. Uses the secondary\n// index when present; builds it only when `buildIndex` is true (reads and\n// transient inserts, where the node is reused so the O(n) build amortizes).\n// Persistent inserts already pay an O(n) copy, so a throwaway index is skipped.\nHashCollisionNode.prototype._positionOf = function _positionOf (key, buildIndex) {\n  var entries = this.entries;\n  var index = this._index;\n  if (\n    index === undefined &&\n    buildIndex &&\n    entries.length >= MIN_HASH_COLLISION_INDEX_SIZE\n  ) {\n    index = this._buildIndex();\n  }\n  if (index !== undefined) {\n    var positions = index[hashCollisionKey(key)];\n    if (positions !== undefined) {\n      for (var jj = 0; jj < positions.length; jj++) {\n        var ii = positions[jj];\n        if (is(key, entries[ii][0])) {\n          return ii;\n        }\n      }\n    }\n    return -1;\n  }\n  for (var ii$1 = 0, len = entries.length; ii$1 < len; ii$1++) {\n    if (is(key, entries[ii$1][0])) {\n      return ii$1;\n    }\n  }\n  return -1;\n};\n\n// Builds and memoizes the secondary index. A plain object, not `Map` — which\n// in this module resolves to the *Immutable* Map, not the native one.\nHashCollisionNode.prototype._buildIndex = function _buildIndex () {\n  var index = Object.create(null);\n  var entries = this.entries;\n  for (var ii = 0, len = entries.length; ii < len; ii++) {\n    var secondaryHash = hashCollisionKey(entries[ii][0]);\n    var positions = index[secondaryHash];\n    if (positions !== undefined) {\n      positions.push(ii);\n    } else {\n      index[secondaryHash] = [ii];\n    }\n  }\n  this._index = index;\n  return index;\n};\n\nHashCollisionNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n  var idx = this._positionOf(key, true);\n  return idx === -1 ? notSetValue : this.entries[idx][1];\n};\n\nHashCollisionNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n  if (keyHash === undefined) {\n    keyHash = hash(key);\n  }\n\n  var removed = value === NOT_SET;\n\n  if (keyHash !== this.keyHash) {\n    if (removed) {\n      return this;\n    }\n    SetRef(didAlter);\n    SetRef(didChangeSize);\n    return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n  }\n\n  var entries = this.entries;\n  var len = entries.length;\n  var isEditable = ownerID && ownerID === this.ownerID;\n  var foundIdx = this._positionOf(key, isEditable);\n  var idx = foundIdx === -1 ? len : foundIdx;\n  var exists = foundIdx !== -1;\n\n  if (exists ? entries[idx][1] === value : removed) {\n    return this;\n  }\n\n  SetRef(didAlter);\n  // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- TODO enable eslint here\n  (removed || !exists) && SetRef(didChangeSize);\n\n  if (removed && len === 2) {\n    return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n  }\n\n  var newEntries = isEditable ? entries : arrCopy(entries);\n\n  if (exists) {\n    if (removed) {\n      // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- TODO enable eslint here\n      idx === len - 1\n        ? newEntries.pop()\n        : (newEntries[idx] = newEntries.pop());\n      // The swap-pop reshuffles positions; drop the stale index (rebuilt lazily).\n      if (isEditable) {\n        this._index = undefined;\n      }\n    } else {\n      // Same key, same position: the index stays valid.\n      newEntries[idx] = [key, value];\n    }\n  } else {\n    newEntries.push([key, value]);\n    // Keep the index in sync on the transient insert path. Persistent inserts\n    // return a fresh node below whose index rebuilds lazily, so skip them.\n    if (isEditable && this._index !== undefined) {\n      var secondaryHash = hashCollisionKey(key);\n      var positions = this._index[secondaryHash];\n      if (positions !== undefined) {\n        positions.push(len);\n      } else {\n        this._index[secondaryHash] = [len];\n      }\n    }\n  }\n\n  if (isEditable) {\n    this.entries = newEntries;\n    return this;\n  }\n\n  return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n};\n\nvar ValueNode = function ValueNode(ownerID, keyHash, entry) {\n  this.ownerID = ownerID;\n  this.keyHash = keyHash;\n  this.entry = entry;\n};\n\nValueNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n  return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n};\n\nValueNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n  var removed = value === NOT_SET;\n  var keyMatch = is(key, this.entry[0]);\n  if (keyMatch ? value === this.entry[1] : removed) {\n    return this;\n  }\n\n  SetRef(didAlter);\n\n  if (removed) {\n    SetRef(didChangeSize);\n    return; // undefined\n  }\n\n  if (keyMatch) {\n    if (ownerID && ownerID === this.ownerID) {\n      this.entry[1] = value;\n      return this;\n    }\n    return new ValueNode(ownerID, this.keyHash, [key, value]);\n  }\n\n  SetRef(didChangeSize);\n  return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n};\n\n// #pragma Iterators\n\nArrayMapNode.prototype.iterate = HashCollisionNode.prototype.iterate =\n  function (fn, reverse) {\n    var entries = this.entries;\n    for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n      if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n        return false;\n      }\n    }\n  };\n\nBitmapIndexedNode.prototype.iterate = HashArrayMapNode.prototype.iterate =\n  function (fn, reverse) {\n    var nodes = this.nodes;\n    for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n      var node = nodes[reverse ? maxIndex - ii : ii];\n      if (node && node.iterate(fn, reverse) === false) {\n        return false;\n      }\n    }\n  };\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nValueNode.prototype.iterate = function (fn, reverse) {\n  return fn(this.entry);\n};\n\nvar MapIterator = /*@__PURE__*/(function (Iterator) {\n  function MapIterator(map, type, reverse) {\n    this._type = type;\n    this._reverse = reverse;\n    this._stack = map._root && mapIteratorFrame(map._root);\n  }\n\n  if ( Iterator ) MapIterator.__proto__ = Iterator;\n  MapIterator.prototype = Object.create( Iterator && Iterator.prototype );\n  MapIterator.prototype.constructor = MapIterator;\n\n  MapIterator.prototype.next = function next () {\n    var type = this._type;\n    var stack = this._stack;\n    while (stack) {\n      var node = stack.node;\n      var index = stack.index++;\n      var maxIndex = (void 0);\n      if (node.entry) {\n        if (index === 0) {\n          return mapIteratorValue(type, node.entry);\n        }\n      } else if (node.entries) {\n        maxIndex = node.entries.length - 1;\n        if (index <= maxIndex) {\n          return mapIteratorValue(\n            type,\n            node.entries[this._reverse ? maxIndex - index : index]\n          );\n        }\n      } else {\n        maxIndex = node.nodes.length - 1;\n        if (index <= maxIndex) {\n          var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n          if (subNode) {\n            if (subNode.entry) {\n              return mapIteratorValue(type, subNode.entry);\n            }\n            stack = this._stack = mapIteratorFrame(subNode, stack);\n          }\n          continue;\n        }\n      }\n      stack = this._stack = this._stack.__prev;\n    }\n    return iteratorDone();\n  };\n\n  return MapIterator;\n}(Iterator));\n\nfunction mapIteratorValue(type, entry) {\n  return iteratorValue(type, entry[0], entry[1]);\n}\n\nfunction mapIteratorFrame(node, prev) {\n  return {\n    node: node,\n    index: 0,\n    __prev: prev,\n  };\n}\n\nfunction makeMap(size, root, ownerID, hash) {\n  var map = Object.create(MapPrototype);\n  map.size = size;\n  map._root = root;\n  map.__ownerID = ownerID;\n  map.__hash = hash;\n  map.__altered = false;\n  return map;\n}\n\nvar EMPTY_MAP;\nfunction emptyMap() {\n  return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n}\n\nfunction updateMap(map, k, v) {\n  var newRoot;\n  var newSize;\n  if (!map._root) {\n    if (v === NOT_SET) {\n      return map;\n    }\n    newSize = 1;\n    newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n  } else {\n    var didChangeSize = MakeRef();\n    var didAlter = MakeRef();\n    newRoot = updateNode(\n      map._root,\n      map.__ownerID,\n      0,\n      undefined,\n      k,\n      v,\n      didChangeSize,\n      didAlter\n    );\n    if (!didAlter.value) {\n      return map;\n    }\n    newSize = map.size + (didChangeSize.value ? (v === NOT_SET ? -1 : 1) : 0);\n  }\n  if (map.__ownerID) {\n    map.size = newSize;\n    map._root = newRoot;\n    map.__hash = undefined;\n    map.__altered = true;\n    return map;\n  }\n  return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n}\n\nfunction updateNode(\n  node,\n  ownerID,\n  shift,\n  keyHash,\n  key,\n  value,\n  didChangeSize,\n  didAlter\n) {\n  if (!node) {\n    if (value === NOT_SET) {\n      return node;\n    }\n    SetRef(didAlter);\n    SetRef(didChangeSize);\n    return new ValueNode(ownerID, keyHash, [key, value]);\n  }\n  return node.update(\n    ownerID,\n    shift,\n    keyHash,\n    key,\n    value,\n    didChangeSize,\n    didAlter\n  );\n}\n\nfunction isLeafNode(node) {\n  return (\n    node.constructor === ValueNode || node.constructor === HashCollisionNode\n  );\n}\n\nfunction mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n  if (node.keyHash === keyHash) {\n    return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n  }\n\n  var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n  var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n  var newNode;\n  var nodes =\n    idx1 === idx2\n      ? [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)]\n      : ((newNode = new ValueNode(ownerID, keyHash, entry)),\n        idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n  return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n}\n\nfunction createNodes(ownerID, entries, key, value) {\n  if (!ownerID) {\n    ownerID = new OwnerID();\n  }\n  var node = new ValueNode(ownerID, hash(key), [key, value]);\n  for (var ii = 0; ii < entries.length; ii++) {\n    var entry = entries[ii];\n    node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n  }\n  return node;\n}\n\nfunction packNodes(ownerID, nodes, count, excluding) {\n  var bitmap = 0;\n  var packedII = 0;\n  var packedNodes = new Array(count);\n  for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n    var node = nodes[ii];\n    if (node !== undefined && ii !== excluding) {\n      bitmap |= bit;\n      packedNodes[packedII++] = node;\n    }\n  }\n  return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n}\n\nfunction expandNodes(ownerID, nodes, bitmap, including, node) {\n  var count = 0;\n  var expandedNodes = new Array(SIZE);\n  for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n    expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n  }\n  expandedNodes[including] = node;\n  return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n}\n\nfunction popCount(x) {\n  x -= (x >> 1) & 0x55555555;\n  x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n  x = (x + (x >> 4)) & 0x0f0f0f0f;\n  x += x >> 8;\n  x += x >> 16;\n  return x & 0x7f;\n}\n\nfunction setAt(array, idx, val, canEdit) {\n  var newArray = canEdit ? array : arrCopy(array);\n  newArray[idx] = val;\n  return newArray;\n}\n\nfunction spliceIn(array, idx, val, canEdit) {\n  var newLen = array.length + 1;\n  if (canEdit && idx + 1 === newLen) {\n    array[idx] = val;\n    return array;\n  }\n  var newArray = new Array(newLen);\n  var after = 0;\n  for (var ii = 0; ii < newLen; ii++) {\n    if (ii === idx) {\n      newArray[ii] = val;\n      after = -1;\n    } else {\n      newArray[ii] = array[ii + after];\n    }\n  }\n  return newArray;\n}\n\nfunction spliceOut(array, idx, canEdit) {\n  var newLen = array.length - 1;\n  if (canEdit && idx === newLen) {\n    array.pop();\n    return array;\n  }\n  var newArray = new Array(newLen);\n  var after = 0;\n  for (var ii = 0; ii < newLen; ii++) {\n    if (ii === idx) {\n      after = 1;\n    }\n    newArray[ii] = array[ii + after];\n  }\n  return newArray;\n}\n\nvar MAX_ARRAY_MAP_SIZE = SIZE / 4;\nvar MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\nvar MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n// Above this many colliding entries, a `HashCollisionNode` builds a seeded\n// secondary index instead of scanning linearly. Kept small so the rare,\n// naturally-occurring collision buckets stay overhead-free, while adversarial\n// hash-flooding (thousands of keys sharing one hash) degrades gracefully.\nvar MIN_HASH_COLLISION_INDEX_SIZE = 16;\n\nfunction coerceKeyPath(keyPath) {\n    if (isArrayLike(keyPath) && typeof keyPath !== 'string') {\n        return keyPath;\n    }\n    if (isOrdered(keyPath)) {\n        return keyPath.toArray();\n    }\n    throw new TypeError('Invalid keyPath: expected Ordered Collection or Array: ' + keyPath);\n}\n\n/**\n * Converts a value to a string, adding quotes if a string was provided.\n */\nfunction quoteString(value) {\n    try {\n        return typeof value === 'string' ? JSON.stringify(value) : String(value);\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    }\n    catch (_ignoreError) {\n        return JSON.stringify(value);\n    }\n}\n\n/**\n * Returns true if the key is defined in the provided collection.\n *\n * A functional alternative to `collection.has(key)` which will also work with\n * plain Objects and Arrays as an alternative for\n * `collection.hasOwnProperty(key)`.\n */\nfunction has(collection, key) {\n    return isImmutable(collection)\n        ? // @ts-expect-error key might be a number or symbol, which is not handled be Record key type\n            collection.has(key)\n        : // @ts-expect-error key might be anything else than PropertyKey, and will return false in that case but runtime is OK\n            isDataStructure(collection) && hasOwnProperty.call(collection, key);\n}\n\nfunction get(collection, key, notSetValue) {\n    return isImmutable(collection)\n        ? collection.get(key, notSetValue)\n        : !has(collection, key)\n            ? notSetValue\n            : // @ts-expect-error weird \"get\" here,\n                typeof collection.get === 'function'\n                    ? // @ts-expect-error weird \"get\" here,\n                        collection.get(key)\n                    : // @ts-expect-error key is unknown here,\n                        collection[key];\n}\n\nfunction remove(collection, key) {\n    if (!isDataStructure(collection)) {\n        throw new TypeError('Cannot update non-data-structure value: ' + collection);\n    }\n    if (isImmutable(collection)) {\n        // @ts-expect-error weird \"remove\" here,\n        if (!collection.remove) {\n            throw new TypeError('Cannot update immutable value without .remove() method: ' + collection);\n        }\n        // @ts-expect-error weird \"remove\" here,\n        return collection.remove(key);\n    }\n    // @ts-expect-error assert that key is a string, a number or a symbol here\n    if (!hasOwnProperty.call(collection, key)) {\n        return collection;\n    }\n    var collectionCopy = shallowCopy(collection);\n    if (Array.isArray(collectionCopy)) {\n        // @ts-expect-error assert that key is a number here\n        collectionCopy.splice(key, 1);\n    }\n    else {\n        // @ts-expect-error assert that key is a string, a number or a symbol here\n        delete collectionCopy[key];\n    }\n    return collectionCopy;\n}\n\nfunction set(collection, key, value) {\n    if (isProtoKey(key)) {\n        return collection;\n    }\n    if (!isDataStructure(collection)) {\n        throw new TypeError('Cannot update non-data-structure value: ' + collection);\n    }\n    if (isImmutable(collection)) {\n        // @ts-expect-error weird \"set\" here,\n        if (!collection.set) {\n            throw new TypeError('Cannot update immutable value without .set() method: ' + collection);\n        }\n        // @ts-expect-error weird \"set\" here,\n        return collection.set(key, value);\n    }\n    // @ts-expect-error mix of key and string here. Probably need a more fine type here\n    if (hasOwnProperty.call(collection, key) && value === collection[key]) {\n        return collection;\n    }\n    var collectionCopy = shallowCopy(collection);\n    // @ts-expect-error mix of key and string here. Probably need a more fine type here\n    collectionCopy[key] = value;\n    return collectionCopy;\n}\n\nfunction updateIn(collection, keyPath, notSetValue, updater) {\n    if (!updater) {\n        // handle the fact that `notSetValue` is optional here, in that case `updater` is the updater function\n        // @ts-expect-error updater is a function here\n        updater = notSetValue;\n        notSetValue = undefined;\n    }\n    var updatedValue = updateInDeeply(isImmutable(collection), \n    // @ts-expect-error type issues with Record and mixed types\n    collection, coerceKeyPath(keyPath), 0, notSetValue, updater);\n    // @ts-expect-error mixed return type\n    return updatedValue === NOT_SET ? notSetValue : updatedValue;\n}\nfunction updateInDeeply(inImmutable, existing, keyPath, i, notSetValue, updater) {\n    var wasNotSet = existing === NOT_SET;\n    if (i === keyPath.length) {\n        var existingValue = wasNotSet ? notSetValue : existing;\n        // @ts-expect-error mixed type with optional value\n        var newValue = updater(existingValue);\n        // @ts-expect-error mixed type\n        return newValue === existingValue ? existing : newValue;\n    }\n    if (!wasNotSet && !isDataStructure(existing)) {\n        throw new TypeError('Cannot update within non-data-structure value in path [' +\n            Array.from(keyPath).slice(0, i).map(quoteString) +\n            ']: ' +\n            existing);\n    }\n    var key = keyPath[i];\n    var nextExisting = wasNotSet ? NOT_SET : get(existing, key, NOT_SET);\n    var nextUpdated = updateInDeeply(nextExisting === NOT_SET ? inImmutable : isImmutable(nextExisting), \n    // @ts-expect-error mixed type\n    nextExisting, keyPath, i + 1, notSetValue, updater);\n    return nextUpdated === nextExisting\n        ? existing\n        : nextUpdated === NOT_SET\n            ? remove(existing, key)\n            : set(wasNotSet ? (inImmutable ? emptyMap() : {}) : existing, key, nextUpdated);\n}\n\n/**\n * Returns a copy of the collection with the value at the key path removed.\n *\n * A functional alternative to `collection.removeIn(keypath)` which will also\n * work with plain Objects and Arrays.\n */\nfunction removeIn(collection, keyPath) {\n    return updateIn(collection, keyPath, function () { return NOT_SET; });\n}\n\nfunction deleteIn(keyPath) {\n  return removeIn(this, keyPath);\n}\n\nvar IS_LIST_SYMBOL = '@@__IMMUTABLE_LIST__@@';\n/**\n * True if `maybeList` is a List.\n */\nfunction isList(maybeList) {\n    return Boolean(maybeList &&\n        // @ts-expect-error: maybeList is typed as `{}`, need to change in 6.0 to `maybeList && typeof maybeList === 'object' && IS_LIST_SYMBOL in maybeList`\n        maybeList[IS_LIST_SYMBOL]);\n}\n\nvar List = /*@__PURE__*/(function (IndexedCollection) {\n  function List(value) {\n    var empty = emptyList();\n    if (value === undefined || value === null) {\n      // eslint-disable-next-line no-constructor-return\n      return empty;\n    }\n    if (isList(value)) {\n      // eslint-disable-next-line no-constructor-return\n      return value;\n    }\n    var iter = IndexedCollection(value);\n    var size = iter.size;\n    if (size === 0) {\n      // eslint-disable-next-line no-constructor-return\n      return empty;\n    }\n    assertNotInfinite(size);\n    if (size > 0 && size < SIZE) {\n      // eslint-disable-next-line no-constructor-return\n      return makeList(0, size, SHIFT, undefined, new VNode(iter.toArray()));\n    }\n    // eslint-disable-next-line no-constructor-return\n    return empty.withMutations(function (list) {\n      list.setSize(size);\n      iter.forEach(function (v, i) { return list.set(i, v); });\n    });\n  }\n\n  if ( IndexedCollection ) List.__proto__ = IndexedCollection;\n  List.prototype = Object.create( IndexedCollection && IndexedCollection.prototype );\n  List.prototype.constructor = List;\n\n  List.of = function of (/*...values*/) {\n    return this(arguments);\n  };\n\n  List.prototype.toString = function toString () {\n    return this.__toString('List [', ']');\n  };\n\n  // @pragma Access\n\n  List.prototype.get = function get (index, notSetValue) {\n    index = wrapIndex(this, index);\n    if (index >= 0 && index < this.size) {\n      index += this._origin;\n      var node = listNodeFor(this, index);\n      return node && node.array[index & MASK];\n    }\n    return notSetValue;\n  };\n\n  // @pragma Modification\n\n  List.prototype.set = function set (index, value) {\n    return updateList(this, index, value);\n  };\n\n  List.prototype.remove = function remove (index) {\n    return !this.has(index)\n      ? this\n      : index === 0\n        ? this.shift()\n        : index === this.size - 1\n          ? this.pop()\n          : this.splice(index, 1);\n  };\n\n  List.prototype.insert = function insert (index, value) {\n    return this.splice(index, 0, value);\n  };\n\n  List.prototype.clear = function clear () {\n    if (this.size === 0) {\n      return this;\n    }\n    if (this.__ownerID) {\n      this.size = this._origin = this._capacity = 0;\n      this._level = SHIFT;\n      this._root = this._tail = this.__hash = undefined;\n      this.__altered = true;\n      return this;\n    }\n    return emptyList();\n  };\n\n  List.prototype.push = function push (/*...values*/) {\n    var values = arguments;\n    var oldSize = this.size;\n    return this.withMutations(function (list) {\n      setListBounds(list, 0, oldSize + values.length);\n      for (var ii = 0; ii < values.length; ii++) {\n        list.set(oldSize + ii, values[ii]);\n      }\n    });\n  };\n\n  List.prototype.pop = function pop () {\n    return setListBounds(this, 0, -1);\n  };\n\n  List.prototype.unshift = function unshift (/*...values*/) {\n    var values = arguments;\n    return this.withMutations(function (list) {\n      setListBounds(list, -values.length);\n      for (var ii = 0; ii < values.length; ii++) {\n        list.set(ii, values[ii]);\n      }\n    });\n  };\n\n  List.prototype.shift = function shift () {\n    return setListBounds(this, 1);\n  };\n\n  List.prototype.shuffle = function shuffle (random) {\n    if ( random === void 0 ) random = Math.random;\n\n    return this.withMutations(function (mutable) {\n      // implementation of the Fisher-Yates shuffle: https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle\n      var current = mutable.size;\n      var destination;\n      var tmp;\n\n      while (current) {\n        destination = Math.floor(random() * current--);\n\n        tmp = mutable.get(destination);\n        mutable.set(destination, mutable.get(current));\n        mutable.set(current, tmp);\n      }\n    });\n  };\n\n  // @pragma Composition\n\n  List.prototype.concat = function concat (/*...collections*/) {\n    var arguments$1 = arguments;\n\n    var seqs = [];\n    for (var i = 0; i < arguments.length; i++) {\n      var argument = arguments$1[i];\n      var seq = IndexedCollection(\n        typeof argument !== 'string' && hasIterator(argument)\n          ? argument\n          : [argument]\n      );\n      if (seq.size !== 0) {\n        seqs.push(seq);\n      }\n    }\n    if (seqs.length === 0) {\n      return this;\n    }\n    if (this.size === 0 && !this.__ownerID && seqs.length === 1) {\n      return this.constructor(seqs[0]);\n    }\n    return this.withMutations(function (list) {\n      seqs.forEach(function (seq) { return seq.forEach(function (value) { return list.push(value); }); });\n    });\n  };\n\n  List.prototype.setSize = function setSize (size) {\n    return setListBounds(this, 0, size);\n  };\n\n  List.prototype.map = function map (mapper, context) {\n    var this$1$1 = this;\n\n    return this.withMutations(function (list) {\n      for (var i = 0; i < this$1$1.size; i++) {\n        list.set(i, mapper.call(context, list.get(i), i, this$1$1));\n      }\n    });\n  };\n\n  // @pragma Iteration\n\n  List.prototype.slice = function slice (begin, end) {\n    var size = this.size;\n    if (wholeSlice(begin, end, size)) {\n      return this;\n    }\n    return setListBounds(\n      this,\n      resolveBegin(begin, size),\n      resolveEnd(end, size)\n    );\n  };\n\n  List.prototype.__iterator = function __iterator (type, reverse) {\n    var index = reverse ? this.size : 0;\n    var values = iterateList(this, reverse);\n    return new Iterator(function () {\n      var value = values();\n      return value === DONE\n        ? iteratorDone()\n        : iteratorValue(type, reverse ? --index : index++, value);\n    });\n  };\n\n  List.prototype.__iterate = function __iterate (fn, reverse) {\n    var index = reverse ? this.size : 0;\n    var values = iterateList(this, reverse);\n    var value;\n    while ((value = values()) !== DONE) {\n      if (fn(value, reverse ? --index : index++, this) === false) {\n        break;\n      }\n    }\n    return index;\n  };\n\n  List.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n    if (ownerID === this.__ownerID) {\n      return this;\n    }\n    if (!ownerID) {\n      if (this.size === 0) {\n        return emptyList();\n      }\n      this.__ownerID = ownerID;\n      this.__altered = false;\n      return this;\n    }\n    return makeList(\n      this._origin,\n      this._capacity,\n      this._level,\n      this._root,\n      this._tail,\n      ownerID,\n      this.__hash\n    );\n  };\n\n  return List;\n}(IndexedCollection));\n\nList.isList = isList;\n\nvar ListPrototype = List.prototype;\nListPrototype[IS_LIST_SYMBOL] = true;\nListPrototype[DELETE] = ListPrototype.remove;\nListPrototype.merge = ListPrototype.concat;\nListPrototype.setIn = setIn;\nListPrototype.deleteIn = ListPrototype.removeIn = deleteIn;\nListPrototype.update = update;\nListPrototype.updateIn = updateIn$1;\nListPrototype.mergeIn = mergeIn;\nListPrototype.mergeDeepIn = mergeDeepIn;\nListPrototype.withMutations = withMutations;\nListPrototype.wasAltered = wasAltered;\nListPrototype.asImmutable = asImmutable;\nListPrototype['@@transducer/init'] = ListPrototype.asMutable = asMutable;\nListPrototype['@@transducer/step'] = function (result, arr) {\n  return result.push(arr);\n};\nListPrototype['@@transducer/result'] = function (obj) {\n  return obj.asImmutable();\n};\n\n/**\n * A node in the List's 32-wide trie. At inner levels `array` holds child\n * `VNode`s; at the leaf level it holds the List's values. Missing slots are\n * `undefined` array holes.\n *\n * @template T\n */\nvar VNode = function VNode(array, ownerID) {\n  this.array = array;\n  this.ownerID = ownerID;\n};\n\n// TODO: seems like these methods are very similar\n\nVNode.prototype.removeBefore = function removeBefore (ownerID, level, index) {\n  if (\n    (index & ((1 << (level + SHIFT)) - 1)) === 0 ||\n    this.array.length === 0\n  ) {\n    return this;\n  }\n  var originIndex = (index >>> level) & MASK;\n  if (originIndex >= this.array.length) {\n    return new VNode([], ownerID);\n  }\n  var removingFirst = originIndex === 0;\n  var newChild;\n  if (level > 0) {\n    var oldChild = this.array[originIndex];\n    newChild =\n      oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n    if (newChild === oldChild && removingFirst) {\n      return this;\n    }\n  }\n  if (removingFirst && !newChild) {\n    return this;\n  }\n  var editable = editableVNode(this, ownerID);\n  if (!removingFirst) {\n    for (var ii = 0; ii < originIndex; ii++) {\n      editable.array[ii] = undefined;\n    }\n  }\n  if (newChild) {\n    editable.array[originIndex] = newChild;\n  }\n  return editable;\n};\n\nVNode.prototype.removeAfter = function removeAfter (ownerID, level, index) {\n  if (\n    index === (level ? 1 << (level + SHIFT) : SIZE) ||\n    this.array.length === 0\n  ) {\n    return this;\n  }\n  var sizeIndex = ((index - 1) >>> level) & MASK;\n  if (sizeIndex >= this.array.length) {\n    return this;\n  }\n\n  var newChild;\n  if (level > 0) {\n    var oldChild = this.array[sizeIndex];\n    newChild =\n      oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n    if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n      return this;\n    }\n  }\n\n  var editable = editableVNode(this, ownerID);\n  editable.array.splice(sizeIndex + 1);\n  if (newChild) {\n    editable.array[sizeIndex] = newChild;\n  }\n  return editable;\n};\n\nvar DONE = {};\n\nfunction iterateList(list, reverse) {\n  var left = list._origin;\n  var right = list._capacity;\n  var tailPos = getTailOffset(right);\n  var tail = list._tail;\n\n  return iterateNodeOrLeaf(list._root, list._level, 0);\n\n  function iterateNodeOrLeaf(node, level, offset) {\n    return level === 0\n      ? iterateLeaf(node, offset)\n      : iterateNode(node, level, offset);\n  }\n\n  function iterateLeaf(node, offset) {\n    var array = offset === tailPos ? tail && tail.array : node && node.array;\n    var from = offset > left ? 0 : left - offset;\n    var to = right - offset;\n    if (to > SIZE) {\n      to = SIZE;\n    }\n    return function () {\n      if (from === to) {\n        return DONE;\n      }\n      var idx = reverse ? --to : from++;\n      return array && array[idx];\n    };\n  }\n\n  function iterateNode(node, level, offset) {\n    var values;\n    var array = node && node.array;\n    var from = offset > left ? 0 : (left - offset) >> level;\n    var to = ((right - offset) >> level) + 1;\n    if (to > SIZE) {\n      to = SIZE;\n    }\n    return function () {\n      while (true) {\n        if (values) {\n          var value = values();\n          if (value !== DONE) {\n            return value;\n          }\n          values = null;\n        }\n        if (from === to) {\n          return DONE;\n        }\n        var idx = reverse ? --to : from++;\n        values = iterateNodeOrLeaf(\n          array && array[idx],\n          level - SHIFT,\n          offset + (idx << level)\n        );\n      }\n    };\n  }\n}\n\n/**\n * @param {number} origin\n * @param {number} capacity\n * @param {number} level\n * @param {VNode | undefined} [root] The trie root, or `undefined` when every\n *   in-range value lives in the tail (or is a virtual `undefined`).\n * @param {VNode | undefined} [tail]\n * @param {OwnerID} [ownerID]\n * @param {number} [hash]\n */\nfunction makeList(origin, capacity, level, root, tail, ownerID, hash) {\n  var list = Object.create(ListPrototype);\n  list.size = capacity - origin;\n  list._origin = origin;\n  list._capacity = capacity;\n  list._level = level;\n  list._root = root;\n  list._tail = tail;\n  list.__ownerID = ownerID;\n  list.__hash = hash;\n  list.__altered = false;\n  return list;\n}\n\nfunction emptyList() {\n  return makeList(0, 0, SHIFT);\n}\n\nfunction updateList(list, index, value) {\n  index = wrapIndex(list, index);\n\n  if (index !== index) {\n    return list;\n  }\n\n  if (index >= list.size || index < 0) {\n    return list.withMutations(function (list) {\n      // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- TODO enable eslint here\n      index < 0\n        ? setListBounds(list, index).set(0, value)\n        : setListBounds(list, 0, index + 1).set(index, value);\n    });\n  }\n\n  index += list._origin;\n\n  var newTail = list._tail;\n  var newRoot = list._root;\n  var didAlter = MakeRef();\n  if (index >= getTailOffset(list._capacity)) {\n    newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n  } else {\n    newRoot = updateVNode(\n      newRoot,\n      list.__ownerID,\n      list._level,\n      index,\n      value,\n      didAlter\n    );\n  }\n\n  if (!didAlter.value) {\n    return list;\n  }\n\n  if (list.__ownerID) {\n    list._root = newRoot;\n    list._tail = newTail;\n    list.__hash = undefined;\n    list.__altered = true;\n    return list;\n  }\n  return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n}\n\nfunction updateVNode(node, ownerID, level, index, value, didAlter) {\n  var idx = (index >>> level) & MASK;\n  var nodeHas = node && idx < node.array.length;\n  if (!nodeHas && value === undefined) {\n    return node;\n  }\n\n  var newNode;\n\n  if (level > 0) {\n    var lowerNode = node && node.array[idx];\n    var newLowerNode = updateVNode(\n      lowerNode,\n      ownerID,\n      level - SHIFT,\n      index,\n      value,\n      didAlter\n    );\n    if (newLowerNode === lowerNode) {\n      return node;\n    }\n    newNode = editableVNode(node, ownerID);\n    newNode.array[idx] = newLowerNode;\n    return newNode;\n  }\n\n  if (nodeHas && node.array[idx] === value) {\n    return node;\n  }\n\n  if (didAlter) {\n    SetRef(didAlter);\n  }\n\n  newNode = editableVNode(node, ownerID);\n  if (value === undefined && idx === newNode.array.length - 1) {\n    newNode.array.pop();\n  } else {\n    newNode.array[idx] = value;\n  }\n  return newNode;\n}\n\nfunction editableVNode(node, ownerID) {\n  if (ownerID && node && ownerID === node.ownerID) {\n    return node;\n  }\n  return new VNode(node ? node.array.slice() : [], ownerID);\n}\n\n/**\n * Returns the leaf `VNode` holding `rawIndex`, or `undefined` when no node is\n * allocated for it (an all-`undefined` region).\n *\n * @param {List} list\n * @param {number} rawIndex\n * @returns {VNode | undefined}\n */\nfunction listNodeFor(list, rawIndex) {\n  if (rawIndex >= getTailOffset(list._capacity)) {\n    return list._tail;\n  }\n  if (rawIndex < 1 << (list._level + SHIFT)) {\n    var node = list._root;\n    var level = list._level;\n    while (node && level > 0) {\n      node = node.array[(rawIndex >>> level) & MASK];\n      level -= SHIFT;\n    }\n    return node;\n  }\n}\n\n/**\n * Validates requested bounds before int32 coercion in setListBounds().\n * Throws when origin/capacity would exceed the trie's safe range.\n */\nfunction validateListBoundsRequest(list, begin, end) {\n  var requestedOrigin = list._origin + (begin === undefined ? 0 : begin);\n  var requestedCapacity =\n    end === undefined\n      ? list._capacity\n      : end < 0\n        ? list._capacity + end\n        : list._origin + end;\n\n  // Keep origin/capacity within the trie's safe signed 32-bit range.\n  if (\n    (Number.isFinite(requestedCapacity) && requestedCapacity > MAX_LIST_SIZE) ||\n    (Number.isFinite(requestedOrigin) && requestedOrigin < -MAX_LIST_SIZE) ||\n    (Number.isFinite(requestedCapacity) &&\n      Number.isFinite(requestedOrigin) &&\n      requestedCapacity - requestedOrigin > MAX_LIST_SIZE)\n  ) {\n    throw new RangeError(\n      'Invalid List size: a List cannot hold more than ' +\n        MAX_LIST_SIZE +\n        ' (2 ** 30) values.'\n    );\n  }\n}\n\nfunction setListBounds(list, begin, end) {\n  // Validate full-precision bounds before int32 coercion.\n  validateListBoundsRequest(list, begin, end);\n\n  // Sanitize begin & end using this shorthand for ToInt32(argument)\n  // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n  if (begin !== undefined) {\n    begin |= 0;\n  }\n  if (end !== undefined) {\n    end |= 0;\n  }\n  var owner = list.__ownerID || new OwnerID();\n  var oldOrigin = list._origin;\n  var oldCapacity = list._capacity;\n  var newOrigin = oldOrigin + begin;\n  var newCapacity =\n    end === undefined\n      ? oldCapacity\n      : end < 0\n        ? oldCapacity + end\n        : oldOrigin + end;\n  if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n    return list;\n  }\n\n  // If it's going to end after it starts, it's empty.\n  if (newOrigin >= newCapacity) {\n    return list.clear();\n  }\n\n  var newLevel = list._level;\n  var newRoot = list._root;\n\n  // New origin might need creating a higher root.\n  var offsetShift = 0;\n  while (newOrigin + offsetShift < 0) {\n    newRoot = new VNode(\n      newRoot && newRoot.array.length ? [undefined, newRoot] : [],\n      owner\n    );\n    newLevel += SHIFT;\n    // Shift origin into non-negative space as trie height grows.\n    offsetShift += levelCapacity(newLevel);\n  }\n  if (offsetShift) {\n    newOrigin += offsetShift;\n    oldOrigin += offsetShift;\n    newCapacity += offsetShift;\n    oldCapacity += offsetShift;\n  }\n\n  var oldTailOffset = getTailOffset(oldCapacity);\n  var newTailOffset = getTailOffset(newCapacity);\n\n  // New size might need creating a higher root.\n  while (newTailOffset >= levelCapacity(newLevel + SHIFT)) {\n    newRoot = new VNode(\n      newRoot && newRoot.array.length ? [newRoot] : [],\n      owner\n    );\n    newLevel += SHIFT;\n  }\n\n  // Locate or create the new tail.\n  var oldTail = list._tail;\n  var newTail =\n    newTailOffset < oldTailOffset\n      ? listNodeFor(list, newCapacity - 1)\n      : newTailOffset > oldTailOffset\n        ? new VNode([], owner)\n        : oldTail;\n\n  // Merge Tail into tree.\n  if (\n    oldTail &&\n    newTailOffset > oldTailOffset &&\n    newOrigin < oldCapacity &&\n    oldTail.array.length\n  ) {\n    newRoot = editableVNode(newRoot, owner);\n    var node = newRoot;\n    for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n      var idx = (oldTailOffset >>> level) & MASK;\n      node = node.array[idx] = editableVNode(node.array[idx], owner);\n    }\n    node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n  }\n\n  // If the size has been reduced, there's a chance the tail needs to be trimmed.\n  if (newCapacity < oldCapacity) {\n    newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n  }\n\n  // If the new origin is within the tail, then we do not need a root.\n  if (newOrigin >= newTailOffset) {\n    newOrigin -= newTailOffset;\n    newCapacity -= newTailOffset;\n    newLevel = SHIFT;\n    newRoot = undefined;\n    newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n    // Otherwise, if the root has been trimmed, garbage collect.\n  } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n    offsetShift = 0;\n\n    // Identify the new top root node of the subtree of the old root.\n    while (newRoot) {\n      var beginIndex = (newOrigin >>> newLevel) & MASK;\n      if ((beginIndex !== newTailOffset >>> newLevel) & MASK) {\n        break;\n      }\n      if (beginIndex) {\n        offsetShift += (1 << newLevel) * beginIndex;\n      }\n      newLevel -= SHIFT;\n      newRoot = newRoot.array[beginIndex];\n    }\n\n    // Trim the new sides of the new root.\n    if (newRoot && newOrigin > oldOrigin) {\n      newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n    }\n    if (newRoot && newTailOffset < oldTailOffset) {\n      newRoot = newRoot.removeAfter(\n        owner,\n        newLevel,\n        newTailOffset - offsetShift\n      );\n    }\n    if (offsetShift) {\n      newOrigin -= offsetShift;\n      newCapacity -= offsetShift;\n    }\n  }\n\n  if (list.__ownerID) {\n    list.size = newCapacity - newOrigin;\n    list._origin = newOrigin;\n    list._capacity = newCapacity;\n    list._level = newLevel;\n    list._root = newRoot;\n    list._tail = newTail;\n    list.__hash = undefined;\n    list.__altered = true;\n    return list;\n  }\n  return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n}\n\nfunction getTailOffset(size) {\n  return size < SIZE ? 0 : ((size - 1) >>> SHIFT) << SHIFT;\n}\n\n// The largest number of values a List can hold. Above this the 32-bit trie math\n// in setListBounds() stays in the safe signed 32-bit range.\nvar MAX_LIST_SIZE = Math.pow( 2, 30 ); // 1073741824\n\n/**\n * Computes 2 ** exp for the trie level-raising loops in setListBounds().\n * Use the cheap bitwise operator shift whenever possible, otherwise fall back to exponentiation.\n * This is necessary because bitwise operators in JavaScript only work on 32-bit signed integers, so for exp >= 31, we need to use exponentiation to avoid overflow.\n */\nfunction levelCapacity(exp) {\n  return exp < 31 ? 1 << exp : Math.pow( 2, exp );\n}\n\n/**\n * True if `maybeOrderedMap` is an OrderedMap.\n */\nfunction isOrderedMap(maybeOrderedMap) {\n    return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n}\n\nvar OrderedMap = /*@__PURE__*/(function (Map) {\n  function OrderedMap(value) {\n    // eslint-disable-next-line no-constructor-return\n    return value === undefined || value === null\n      ? emptyOrderedMap()\n      : isOrderedMap(value)\n        ? value\n        : emptyOrderedMap().withMutations(function (map) {\n            var iter = KeyedCollection(value);\n            assertNotInfinite(iter.size);\n            iter.forEach(function (v, k) { return map.set(k, v); });\n          });\n  }\n\n  if ( Map ) OrderedMap.__proto__ = Map;\n  OrderedMap.prototype = Object.create( Map && Map.prototype );\n  OrderedMap.prototype.constructor = OrderedMap;\n\n  OrderedMap.of = function of (/*...values*/) {\n    return this(arguments);\n  };\n\n  OrderedMap.prototype.toString = function toString () {\n    return this.__toString('OrderedMap {', '}');\n  };\n\n  // @pragma Access\n\n  OrderedMap.prototype.get = function get (k, notSetValue) {\n    var index = this._map.get(k);\n    return index !== undefined ? this._list.get(index)[1] : notSetValue;\n  };\n\n  // @pragma Modification\n\n  OrderedMap.prototype.clear = function clear () {\n    if (this.size === 0) {\n      return this;\n    }\n    if (this.__ownerID) {\n      this.size = 0;\n      this._map.clear();\n      this._list.clear();\n      this.__altered = true;\n      return this;\n    }\n    return emptyOrderedMap();\n  };\n\n  OrderedMap.prototype.set = function set (k, v) {\n    return updateOrderedMap(this, k, v);\n  };\n\n  OrderedMap.prototype.remove = function remove (k) {\n    return updateOrderedMap(this, k, NOT_SET);\n  };\n\n  OrderedMap.prototype.__iterate = function __iterate (fn, reverse) {\n    var this$1$1 = this;\n\n    return this._list.__iterate(\n      function (entry) { return entry && fn(entry[1], entry[0], this$1$1); },\n      reverse\n    );\n  };\n\n  OrderedMap.prototype.__iterator = function __iterator (type, reverse) {\n    return this._list.fromEntrySeq().__iterator(type, reverse);\n  };\n\n  OrderedMap.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n    if (ownerID === this.__ownerID) {\n      return this;\n    }\n    var newMap = this._map.__ensureOwner(ownerID);\n    var newList = this._list.__ensureOwner(ownerID);\n    if (!ownerID) {\n      if (this.size === 0) {\n        return emptyOrderedMap();\n      }\n      this.__ownerID = ownerID;\n      this.__altered = false;\n      this._map = newMap;\n      this._list = newList;\n      return this;\n    }\n    return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n  };\n\n  return OrderedMap;\n}(Map));\n\nOrderedMap.isOrderedMap = isOrderedMap;\n\nOrderedMap.prototype[IS_ORDERED_SYMBOL] = true;\nOrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\nfunction makeOrderedMap(map, list, ownerID, hash) {\n  var omap = Object.create(OrderedMap.prototype);\n  omap.size = map ? map.size : 0;\n  omap._map = map;\n  omap._list = list;\n  omap.__ownerID = ownerID;\n  omap.__hash = hash;\n  omap.__altered = false;\n  return omap;\n}\n\nvar EMPTY_ORDERED_MAP;\nfunction emptyOrderedMap() {\n  return (\n    EMPTY_ORDERED_MAP ||\n    (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()))\n  );\n}\n\nfunction updateOrderedMap(omap, k, v) {\n  var map = omap._map;\n  var list = omap._list;\n  var i = map.get(k);\n  var has = i !== undefined;\n  var newMap;\n  var newList;\n  if (v === NOT_SET) {\n    // removed\n    if (!has) {\n      return omap;\n    }\n    if (list.size >= SIZE && list.size >= map.size * 2) {\n      newList = list.filter(function (entry, idx) { return entry !== undefined && i !== idx; });\n      newMap = newList\n        .toKeyedSeq()\n        .map(function (entry) { return entry[0]; })\n        .flip()\n        .toMap();\n      if (omap.__ownerID) {\n        newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n      }\n    } else {\n      newMap = map.remove(k);\n      newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n    }\n  } else if (has) {\n    if (v === list.get(i)[1]) {\n      return omap;\n    }\n    newMap = map;\n    newList = list.set(i, [k, v]);\n  } else {\n    newMap = map.set(k, list.size);\n    newList = list.set(list.size, [k, v]);\n  }\n  if (omap.__ownerID) {\n    omap.size = newMap.size;\n    omap._map = newMap;\n    omap._list = newList;\n    omap.__hash = undefined;\n    omap.__altered = true;\n    return omap;\n  }\n  return makeOrderedMap(newMap, newList);\n}\n\nvar IS_STACK_SYMBOL = '@@__IMMUTABLE_STACK__@@';\n/**\n * True if `maybeStack` is a Stack.\n */\nfunction isStack(maybeStack) {\n    return Boolean(maybeStack &&\n        // @ts-expect-error: maybeStack is typed as `{}`, need to change in 6.0 to `maybeStack && typeof maybeStack === 'object' && MAYBE_STACK_SYMBOL in maybeStack`\n        maybeStack[IS_STACK_SYMBOL]);\n}\n\nvar Stack = /*@__PURE__*/(function (IndexedCollection) {\n  function Stack(value) {\n    // eslint-disable-next-line no-constructor-return\n    return value === undefined || value === null\n      ? emptyStack()\n      : isStack(value)\n        ? value\n        : emptyStack().pushAll(value);\n  }\n\n  if ( IndexedCollection ) Stack.__proto__ = IndexedCollection;\n  Stack.prototype = Object.create( IndexedCollection && IndexedCollection.prototype );\n  Stack.prototype.constructor = Stack;\n\n  Stack.of = function of (/*...values*/) {\n    return this(arguments);\n  };\n\n  Stack.prototype.toString = function toString () {\n    return this.__toString('Stack [', ']');\n  };\n\n  // @pragma Access\n\n  Stack.prototype.get = function get (index, notSetValue) {\n    var head = this._head;\n    index = wrapIndex(this, index);\n    while (head && index--) {\n      head = head.next;\n    }\n    return head ? head.value : notSetValue;\n  };\n\n  Stack.prototype.peek = function peek () {\n    return this._head && this._head.value;\n  };\n\n  // @pragma Modification\n\n  Stack.prototype.push = function push (/*...values*/) {\n    var arguments$1 = arguments;\n\n    if (arguments.length === 0) {\n      return this;\n    }\n    var newSize = this.size + arguments.length;\n    var head = this._head;\n    for (var ii = arguments.length - 1; ii >= 0; ii--) {\n      head = {\n        value: arguments$1[ii],\n        next: head,\n      };\n    }\n    if (this.__ownerID) {\n      this.size = newSize;\n      this._head = head;\n      this.__hash = undefined;\n      this.__altered = true;\n      return this;\n    }\n    return makeStack(newSize, head);\n  };\n\n  Stack.prototype.pushAll = function pushAll (iter) {\n    iter = IndexedCollection(iter);\n    if (iter.size === 0) {\n      return this;\n    }\n    if (this.size === 0 && isStack(iter)) {\n      return iter;\n    }\n    assertNotInfinite(iter.size);\n    var newSize = this.size;\n    var head = this._head;\n    iter.__iterate(function (value) {\n      newSize++;\n      head = {\n        value: value,\n        next: head,\n      };\n    }, /* reverse */ true);\n    if (this.__ownerID) {\n      this.size = newSize;\n      this._head = head;\n      this.__hash = undefined;\n      this.__altered = true;\n      return this;\n    }\n    return makeStack(newSize, head);\n  };\n\n  Stack.prototype.pop = function pop () {\n    return this.slice(1);\n  };\n\n  Stack.prototype.clear = function clear () {\n    if (this.size === 0) {\n      return this;\n    }\n    if (this.__ownerID) {\n      this.size = 0;\n      this._head = undefined;\n      this.__hash = undefined;\n      this.__altered = true;\n      return this;\n    }\n    return emptyStack();\n  };\n\n  Stack.prototype.slice = function slice (begin, end) {\n    if (wholeSlice(begin, end, this.size)) {\n      return this;\n    }\n    var resolvedBegin = resolveBegin(begin, this.size);\n    var resolvedEnd = resolveEnd(end, this.size);\n    if (resolvedEnd !== this.size) {\n      // super.slice(begin, end);\n      return IndexedCollection.prototype.slice.call(this, begin, end);\n    }\n    var newSize = this.size - resolvedBegin;\n    var head = this._head;\n    while (resolvedBegin--) {\n      head = head.next;\n    }\n    if (this.__ownerID) {\n      this.size = newSize;\n      this._head = head;\n      this.__hash = undefined;\n      this.__altered = true;\n      return this;\n    }\n    return makeStack(newSize, head);\n  };\n\n  // @pragma Mutability\n\n  Stack.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n    if (ownerID === this.__ownerID) {\n      return this;\n    }\n    if (!ownerID) {\n      if (this.size === 0) {\n        return emptyStack();\n      }\n      this.__ownerID = ownerID;\n      this.__altered = false;\n      return this;\n    }\n    return makeStack(this.size, this._head, ownerID, this.__hash);\n  };\n\n  // @pragma Iteration\n\n  Stack.prototype.__iterate = function __iterate (fn, reverse) {\n    var this$1$1 = this;\n\n    if (reverse) {\n      return new ArraySeq(this.toArray()).__iterate(\n        function (v, k) { return fn(v, k, this$1$1); },\n        reverse\n      );\n    }\n    var iterations = 0;\n    var node = this._head;\n    while (node) {\n      if (fn(node.value, iterations++, this) === false) {\n        break;\n      }\n      node = node.next;\n    }\n    return iterations;\n  };\n\n  Stack.prototype.__iterator = function __iterator (type, reverse) {\n    if (reverse) {\n      return new ArraySeq(this.toArray()).__iterator(type, reverse);\n    }\n    var iterations = 0;\n    var node = this._head;\n    return new Iterator(function () {\n      if (node) {\n        var value = node.value;\n        node = node.next;\n        return iteratorValue(type, iterations++, value);\n      }\n      return iteratorDone();\n    });\n  };\n\n  return Stack;\n}(IndexedCollection));\n\nStack.isStack = isStack;\n\nvar StackPrototype = Stack.prototype;\nStackPrototype[IS_STACK_SYMBOL] = true;\nStackPrototype.shift = StackPrototype.pop;\nStackPrototype.unshift = StackPrototype.push;\nStackPrototype.unshiftAll = StackPrototype.pushAll;\nStackPrototype.withMutations = withMutations;\nStackPrototype.wasAltered = wasAltered;\nStackPrototype.asImmutable = asImmutable;\nStackPrototype['@@transducer/init'] = StackPrototype.asMutable = asMutable;\nStackPrototype['@@transducer/step'] = function (result, arr) {\n  return result.unshift(arr);\n};\nStackPrototype['@@transducer/result'] = function (obj) {\n  return obj.asImmutable();\n};\n\nfunction makeStack(size, head, ownerID, hash) {\n  var map = Object.create(StackPrototype);\n  map.size = size;\n  map._head = head;\n  map.__ownerID = ownerID;\n  map.__hash = hash;\n  map.__altered = false;\n  return map;\n}\n\nvar EMPTY_STACK;\nfunction emptyStack() {\n  return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n}\n\nfunction reduce(collection, reducer, reduction, context, useFirst, reverse) {\n    // @ts-expect-error Migrate to CollectionImpl in v6\n    assertNotInfinite(collection.size);\n    // @ts-expect-error Migrate to CollectionImpl in v6\n    collection.__iterate(function (v, k, c) {\n        if (useFirst) {\n            useFirst = false;\n            reduction = v;\n        }\n        else {\n            // `reduction` has already been seeded here (either with the provided\n            // initial value or with the first iterated value), so it is never the\n            // `undefined` placeholder — only a `V` or a `R`.\n            reduction = reducer.call(context, reduction, v, k, c);\n        }\n    }, reverse);\n    return reduction;\n}\nfunction keyMapper(v, k) {\n    return k;\n}\nfunction entryMapper(v, k) {\n    return [k, v];\n}\nfunction not(predicate) {\n    return function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return !predicate.apply(this, args);\n    };\n}\nfunction neg(predicate) {\n    return function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return -predicate.apply(this, args);\n    };\n}\nfunction defaultNegComparator(a, b) {\n    return a < b ? 1 : a > b ? -1 : 0;\n}\n\nfunction deepEqual(a, b) {\n    if (a === b) {\n        return true;\n    }\n    if (!isCollection(b) ||\n        // @ts-expect-error size should exists on Collection\n        (a.size !== undefined && b.size !== undefined && a.size !== b.size) ||\n        // @ts-expect-error __hash exists on Collection\n        (a.__hash !== undefined &&\n            // @ts-expect-error __hash exists on Collection\n            b.__hash !== undefined &&\n            // @ts-expect-error __hash exists on Collection\n            a.__hash !== b.__hash) ||\n        isKeyed(a) !== isKeyed(b) ||\n        isIndexed(a) !== isIndexed(b) ||\n        // @ts-expect-error Range extends Collection, which implements [Symbol.iterator], so it is valid\n        isOrdered(a) !== isOrdered(b)) {\n        return false;\n    }\n    // @ts-expect-error size should exists on Collection\n    if (a.size === 0 && b.size === 0) {\n        return true;\n    }\n    var notAssociative = !isAssociative(a);\n    // @ts-expect-error Range extends Collection, which implements [Symbol.iterator], so it is valid\n    if (isOrdered(a)) {\n        var entries = a.entries();\n        // @ts-expect-error need to cast as boolean\n        return (b.every(function (v, k) {\n            var entry = entries.next().value;\n            return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n        }) && entries.next().done);\n    }\n    var flipped = false;\n    if (a.size === undefined) {\n        // @ts-expect-error size should exists on Collection\n        if (b.size === undefined) {\n            if (typeof a.cacheResult === 'function') {\n                a.cacheResult();\n            }\n        }\n        else {\n            flipped = true;\n            var _ = a;\n            a = b;\n            b = _;\n        }\n    }\n    var allEqual = true;\n    var bSize = \n    // @ts-expect-error b is Range | Repeat | Collection<unknown, unknown> as it may have been flipped, and __iterate is valid\n    b.__iterate(function (v, k) {\n        if (notAssociative\n            ? // @ts-expect-error has exists on Collection\n                !a.has(v)\n            : flipped\n                ? // @ts-expect-error type of `get` does not \"catch\" the version with `notSetValue`\n                    !is(v, a.get(k, NOT_SET))\n                : // @ts-expect-error type of `get` does not \"catch\" the version with `notSetValue`\n                    !is(a.get(k, NOT_SET), v)) {\n            allEqual = false;\n            return false;\n        }\n    });\n    return (allEqual &&\n        // @ts-expect-error size should exists on Collection\n        a.size === bSize);\n}\n\n/**\n * Returns a lazy seq of nums from start (inclusive) to end\n * (exclusive), by step, where start defaults to 0, step to 1, and end to\n * infinity. When start is equal to end, returns empty list.\n */\nvar Range = /*@__PURE__*/(function (IndexedSeq) {\n  function Range(start, end, step) {\n    if ( step === void 0 ) step = 1;\n\n    if (!(this instanceof Range)) {\n      // eslint-disable-next-line no-constructor-return\n      return new Range(start, end, step);\n    }\n    invariant(step !== 0, 'Cannot step a Range by 0');\n    invariant(\n      start !== undefined,\n      'You must define a start value when using Range'\n    );\n    invariant(\n      end !== undefined,\n      'You must define an end value when using Range'\n    );\n\n    step = Math.abs(step);\n    if (end < start) {\n      step = -step;\n    }\n    this._start = start;\n    this._end = end;\n    this._step = step;\n    this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n    if (this.size === 0) {\n      if (EMPTY_RANGE) {\n        // eslint-disable-next-line no-constructor-return\n        return EMPTY_RANGE;\n      }\n      // eslint-disable-next-line @typescript-eslint/no-this-alias\n      EMPTY_RANGE = this;\n    }\n  }\n\n  if ( IndexedSeq ) Range.__proto__ = IndexedSeq;\n  Range.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n  Range.prototype.constructor = Range;\n\n  Range.prototype.toString = function toString () {\n    return this.size === 0\n      ? 'Range []'\n      : (\"Range [ \" + (this._start) + \"...\" + (this._end) + (this._step !== 1 ? ' by ' + this._step : '') + \" ]\");\n  };\n\n  Range.prototype.get = function get (index, notSetValue) {\n    return this.has(index)\n      ? this._start + wrapIndex(this, index) * this._step\n      : notSetValue;\n  };\n\n  Range.prototype.includes = function includes (searchValue) {\n    var possibleIndex = (searchValue - this._start) / this._step;\n    return (\n      possibleIndex >= 0 &&\n      possibleIndex < this.size &&\n      possibleIndex === Math.floor(possibleIndex)\n    );\n  };\n\n  Range.prototype.slice = function slice (begin, end) {\n    if (wholeSlice(begin, end, this.size)) {\n      return this;\n    }\n    begin = resolveBegin(begin, this.size);\n    end = resolveEnd(end, this.size);\n    if (end <= begin) {\n      return new Range(0, 0);\n    }\n    return new Range(\n      this.get(begin, this._end),\n      this.get(end, this._end),\n      this._step\n    );\n  };\n\n  Range.prototype.indexOf = function indexOf (searchValue) {\n    var offsetValue = searchValue - this._start;\n    if (offsetValue % this._step === 0) {\n      var index = offsetValue / this._step;\n      if (index >= 0 && index < this.size) {\n        return index;\n      }\n    }\n    return -1;\n  };\n\n  Range.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n    return this.indexOf(searchValue);\n  };\n\n  Range.prototype.__iterate = function __iterate (fn, reverse) {\n    var size = this.size;\n    var step = this._step;\n    var value = reverse ? this._start + (size - 1) * step : this._start;\n    var i = 0;\n    while (i !== size) {\n      if (fn(value, reverse ? size - ++i : i++, this) === false) {\n        break;\n      }\n      value += reverse ? -step : step;\n    }\n    return i;\n  };\n\n  Range.prototype.__iterator = function __iterator (type, reverse) {\n    var size = this.size;\n    var step = this._step;\n    var value = reverse ? this._start + (size - 1) * step : this._start;\n    var i = 0;\n    return new Iterator(function () {\n      if (i === size) {\n        return iteratorDone();\n      }\n      var v = value;\n      value += reverse ? -step : step;\n      return iteratorValue(type, reverse ? size - ++i : i++, v);\n    });\n  };\n\n  Range.prototype.equals = function equals (other) {\n    return other instanceof Range\n      ? this._start === other._start &&\n          this._end === other._end &&\n          this._step === other._step\n      : deepEqual(this, other);\n  };\n\n  return Range;\n}(IndexedSeq));\n\nvar EMPTY_RANGE;\n\nvar IS_SET_SYMBOL = '@@__IMMUTABLE_SET__@@';\n/**\n * True if `maybeSet` is a Set.\n *\n * Also true for OrderedSets.\n */\nfunction isSet(maybeSet) {\n    return Boolean(maybeSet &&\n        // @ts-expect-error: maybeSet is typed as `{}`,  need to change in 6.0 to `maybeSeq && typeof maybeSet === 'object' && MAYBE_SET_SYMBOL in maybeSet`\n        maybeSet[IS_SET_SYMBOL]);\n}\n\nvar Set = /*@__PURE__*/(function (SetCollection) {\n  function Set(value) {\n    // eslint-disable-next-line no-constructor-return\n    return value === undefined || value === null\n      ? emptySet()\n      : isSet(value) && !isOrdered(value)\n        ? value\n        : emptySet().withMutations(function (set) {\n            var iter = SetCollection(value);\n            assertNotInfinite(iter.size);\n            iter.forEach(function (v) { return set.add(v); });\n          });\n  }\n\n  if ( SetCollection ) Set.__proto__ = SetCollection;\n  Set.prototype = Object.create( SetCollection && SetCollection.prototype );\n  Set.prototype.constructor = Set;\n\n  Set.of = function of (/*...values*/) {\n    return this(arguments);\n  };\n\n  Set.fromKeys = function fromKeys (value) {\n    return this(KeyedCollection(value).keySeq());\n  };\n\n  Set.intersect = function intersect (sets) {\n    sets = Collection(sets).toArray();\n    return sets.length\n      ? SetPrototype.intersect.apply(Set(sets.pop()), sets)\n      : emptySet();\n  };\n\n  Set.union = function union (sets) {\n    sets = Collection(sets).toArray();\n    return sets.length\n      ? SetPrototype.union.apply(Set(sets.pop()), sets)\n      : emptySet();\n  };\n\n  Set.prototype.toString = function toString () {\n    return this.__toString('Set {', '}');\n  };\n\n  // @pragma Access\n\n  Set.prototype.has = function has (value) {\n    return this._map.has(value);\n  };\n\n  // @pragma Modification\n\n  Set.prototype.add = function add (value) {\n    return updateSet(this, this._map.set(value, value));\n  };\n\n  Set.prototype.remove = function remove (value) {\n    return updateSet(this, this._map.remove(value));\n  };\n\n  Set.prototype.clear = function clear () {\n    return updateSet(this, this._map.clear());\n  };\n\n  // @pragma Composition\n\n  Set.prototype.map = function map (mapper, context) {\n    var this$1$1 = this;\n\n    // keep track if the set is altered by the map function\n    var didChanges = false;\n\n    var newMap = updateSet(\n      this,\n      this._map.mapEntries(function (ref) {\n        var v = ref[1];\n\n        var mapped = mapper.call(context, v, v, this$1$1);\n\n        if (mapped !== v) {\n          didChanges = true;\n        }\n\n        return [mapped, mapped];\n      }, context)\n    );\n\n    return didChanges ? newMap : this;\n  };\n\n  Set.prototype.union = function union () {\n    var iters = [], len = arguments.length;\n    while ( len-- ) iters[ len ] = arguments[ len ];\n\n    iters = iters.filter(function (x) { return x.size !== 0; });\n    if (iters.length === 0) {\n      return this;\n    }\n    if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n      return this.constructor(iters[0]);\n    }\n    return this.withMutations(function (set) {\n      for (var ii = 0; ii < iters.length; ii++) {\n        if (typeof iters[ii] === 'string') {\n          set.add(iters[ii]);\n        } else {\n          SetCollection(iters[ii]).forEach(function (value) { return set.add(value); });\n        }\n      }\n    });\n  };\n\n  Set.prototype.intersect = function intersect () {\n    var iters = [], len = arguments.length;\n    while ( len-- ) iters[ len ] = arguments[ len ];\n\n    if (iters.length === 0) {\n      return this;\n    }\n    iters = iters.map(function (iter) { return SetCollection(iter); });\n    var toRemove = [];\n    this.forEach(function (value) {\n      if (!iters.every(function (iter) { return iter.includes(value); })) {\n        toRemove.push(value);\n      }\n    });\n    return this.withMutations(function (set) {\n      toRemove.forEach(function (value) {\n        set.remove(value);\n      });\n    });\n  };\n\n  Set.prototype.subtract = function subtract () {\n    var iters = [], len = arguments.length;\n    while ( len-- ) iters[ len ] = arguments[ len ];\n\n    if (iters.length === 0) {\n      return this;\n    }\n    iters = iters.map(function (iter) { return SetCollection(iter); });\n    var toRemove = [];\n    this.forEach(function (value) {\n      if (iters.some(function (iter) { return iter.includes(value); })) {\n        toRemove.push(value);\n      }\n    });\n    return this.withMutations(function (set) {\n      toRemove.forEach(function (value) {\n        set.remove(value);\n      });\n    });\n  };\n\n  Set.prototype.sort = function sort (comparator) {\n    // Late binding\n    return OrderedSet(sortFactory(this, comparator));\n  };\n\n  Set.prototype.sortBy = function sortBy (mapper, comparator) {\n    // Late binding\n    return OrderedSet(sortFactory(this, comparator, mapper));\n  };\n\n  Set.prototype.wasAltered = function wasAltered () {\n    return this._map.wasAltered();\n  };\n\n  Set.prototype.__iterate = function __iterate (fn, reverse) {\n    var this$1$1 = this;\n\n    return this._map.__iterate(function (k) { return fn(k, k, this$1$1); }, reverse);\n  };\n\n  Set.prototype.__iterator = function __iterator (type, reverse) {\n    return this._map.__iterator(type, reverse);\n  };\n\n  Set.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n    if (ownerID === this.__ownerID) {\n      return this;\n    }\n    var newMap = this._map.__ensureOwner(ownerID);\n    if (!ownerID) {\n      if (this.size === 0) {\n        return this.__empty();\n      }\n      this.__ownerID = ownerID;\n      this._map = newMap;\n      return this;\n    }\n    return this.__make(newMap, ownerID);\n  };\n\n  return Set;\n}(SetCollection));\n\nSet.isSet = isSet;\n\nvar SetPrototype = Set.prototype;\nSetPrototype[IS_SET_SYMBOL] = true;\nSetPrototype[DELETE] = SetPrototype.remove;\nSetPrototype.merge = SetPrototype.concat = SetPrototype.union;\nSetPrototype.withMutations = withMutations;\nSetPrototype.asImmutable = asImmutable;\nSetPrototype['@@transducer/init'] = SetPrototype.asMutable = asMutable;\nSetPrototype['@@transducer/step'] = function (result, arr) {\n  return result.add(arr);\n};\nSetPrototype['@@transducer/result'] = function (obj) {\n  return obj.asImmutable();\n};\n\nSetPrototype.__empty = emptySet;\nSetPrototype.__make = makeSet;\n\nfunction updateSet(set, newMap) {\n  if (set.__ownerID) {\n    set.size = newMap.size;\n    set._map = newMap;\n    return set;\n  }\n  return newMap === set._map\n    ? set\n    : newMap.size === 0\n      ? set.__empty()\n      : set.__make(newMap);\n}\n\nfunction makeSet(map, ownerID) {\n  var set = Object.create(SetPrototype);\n  set.size = map ? map.size : 0;\n  set._map = map;\n  set.__ownerID = ownerID;\n  return set;\n}\n\nvar EMPTY_SET;\nfunction emptySet() {\n  return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n}\n\n/**\n * Returns the value at the provided key path starting at the provided\n * collection, or notSetValue if the key path is not defined.\n *\n * A functional alternative to `collection.getIn(keypath)` which will also\n * work with plain Objects and Arrays.\n */\nfunction getIn$1(collection, searchKeyPath, notSetValue) {\n    var keyPath = coerceKeyPath(searchKeyPath);\n    var i = 0;\n    while (i !== keyPath.length) {\n        // @ts-expect-error keyPath[i++] can not be undefined by design\n        collection = get(collection, keyPath[i++], NOT_SET);\n        if (collection === NOT_SET) {\n            return notSetValue;\n        }\n    }\n    return collection;\n}\n\nfunction getIn(searchKeyPath, notSetValue) {\n  return getIn$1(this, searchKeyPath, notSetValue);\n}\n\n/**\n * Returns true if the key path is defined in the provided collection.\n *\n * A functional alternative to `collection.hasIn(keypath)` which will also\n * work with plain Objects and Arrays.\n */\nfunction hasIn$1(collection, keyPath) {\n    return getIn$1(collection, keyPath, NOT_SET) !== NOT_SET;\n}\n\nfunction hasIn(searchKeyPath) {\n  return hasIn$1(this, searchKeyPath);\n}\n\nfunction toObject() {\n  assertNotInfinite(this.size);\n  var object = {};\n  this.__iterate(function (v, k) {\n    if (isProtoKey(k)) {\n      return;\n    }\n\n    object[k] = v;\n  });\n  return object;\n}\n\nfunction toJS(value) {\n    if (!value || typeof value !== 'object') {\n        return value;\n    }\n    if (!isCollection(value)) {\n        if (!isDataStructure(value)) {\n            return value;\n        }\n        // @ts-expect-error until Seq has been migrated to TypeScript\n        value = Seq(value);\n    }\n    if (isKeyed(value)) {\n        var result$1 = {};\n        // @ts-expect-error `__iterate` exists on all Keyed collections but method is not defined in the type\n        value.__iterate(function (v, k) {\n            if (isProtoKey(k)) {\n                return;\n            }\n            result$1[k] = toJS(v);\n        });\n        return result$1;\n    }\n    var result = [];\n    // @ts-expect-error value \"should\" be a non-keyed collection, but we may need to assert for stricter types\n    value.__iterate(function (v) {\n        result.push(toJS(v));\n    });\n    return result;\n}\n\nfunction hashCollection(collection) {\n    // @ts-expect-error Migrate to CollectionImpl in v6\n    if (collection.size === Infinity) {\n        return 0;\n    }\n    var ordered = isOrdered(collection);\n    var keyed = isKeyed(collection);\n    var h = ordered ? 1 : 0;\n    // @ts-expect-error Migrate to CollectionImpl in v6\n    collection.__iterate(keyed\n        ? ordered\n            ? function (v, k) {\n                h = (31 * h + hashMerge(hash(v), hash(k))) | 0;\n            }\n            : function (v, k) {\n                h = (h + hashMerge(hash(v), hash(k))) | 0;\n            }\n        : ordered\n            ? function (v) {\n                h = (31 * h + hash(v)) | 0;\n            }\n            : function (v) {\n                h = (h + hash(v)) | 0;\n            });\n    // @ts-expect-error Migrate to CollectionImpl in v6\n    return murmurHashOfSize(collection.size, h);\n}\nfunction murmurHashOfSize(size, h) {\n    h = imul(h, 0xcc9e2d51);\n    h = imul((h << 15) | (h >>> -15), 0x1b873593);\n    h = imul((h << 13) | (h >>> -13), 5);\n    h = ((h + 0xe6546b64) | 0) ^ size;\n    h = imul(h ^ (h >>> 16), 0x85ebca6b);\n    h = imul(h ^ (h >>> 13), 0xc2b2ae35);\n    h = smi(h ^ (h >>> 16));\n    return h;\n}\nfunction hashMerge(a, b) {\n    return (a ^ (b + 0x9e3779b9 + (a << 6) + (a >> 2))) | 0; // int\n}\n\n/**\n * Contributes additional methods to a constructor\n */\nfunction mixin(ctor, \n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nmethods) {\n    var keyCopier = function (key) {\n        // @ts-expect-error how to handle symbol ?\n        ctor.prototype[key] = methods[key];\n    };\n    Object.keys(methods).forEach(keyCopier);\n    // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- TODO enable eslint here\n    Object.getOwnPropertySymbols &&\n        Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n    return ctor;\n}\n\nCollection.Iterator = Iterator;\n\nmixin(Collection, {\n  // ### Conversion to other types\n\n  toArray: function toArray() {\n    assertNotInfinite(this.size);\n    var array = new Array(this.size || 0);\n    var useTuples = isKeyed(this);\n    var i = 0;\n    this.__iterate(function (v, k) {\n      // Keyed collections produce an array of tuples.\n      array[i++] = useTuples ? [k, v] : v;\n    });\n    return array;\n  },\n\n  toIndexedSeq: function toIndexedSeq() {\n    return new ToIndexedSequence(this);\n  },\n\n  toJS: function toJS$1() {\n    return toJS(this);\n  },\n\n  toKeyedSeq: function toKeyedSeq() {\n    return new ToKeyedSequence(this, true);\n  },\n\n  toMap: function toMap() {\n    // Use Late Binding here to solve the circular dependency.\n    return Map(this.toKeyedSeq());\n  },\n\n  toObject: toObject,\n\n  toOrderedMap: function toOrderedMap() {\n    // Use Late Binding here to solve the circular dependency.\n    return OrderedMap(this.toKeyedSeq());\n  },\n\n  toOrderedSet: function toOrderedSet() {\n    // Use Late Binding here to solve the circular dependency.\n    return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n  },\n\n  toSet: function toSet() {\n    // Use Late Binding here to solve the circular dependency.\n    return Set(isKeyed(this) ? this.valueSeq() : this);\n  },\n\n  toSetSeq: function toSetSeq() {\n    return new ToSetSequence(this);\n  },\n\n  toSeq: function toSeq() {\n    return isIndexed(this)\n      ? this.toIndexedSeq()\n      : isKeyed(this)\n        ? this.toKeyedSeq()\n        : this.toSetSeq();\n  },\n\n  toStack: function toStack() {\n    // Use Late Binding here to solve the circular dependency.\n    return Stack(isKeyed(this) ? this.valueSeq() : this);\n  },\n\n  toList: function toList() {\n    // Use Late Binding here to solve the circular dependency.\n    return List(isKeyed(this) ? this.valueSeq() : this);\n  },\n\n  // ### Common JavaScript methods and properties\n\n  toString: function toString() {\n    return '[Collection]';\n  },\n\n  __toString: function __toString(head, tail) {\n    if (this.size === 0) {\n      return head + tail;\n    }\n    return (\n      head +\n      ' ' +\n      this.toSeq().map(this.__toStringMapper).join(', ') +\n      ' ' +\n      tail\n    );\n  },\n\n  // ### ES6 Collection methods (ES6 Array and Map)\n\n  concat: function concat() {\n    var values = [], len = arguments.length;\n    while ( len-- ) values[ len ] = arguments[ len ];\n\n    return reify(this, concatFactory(this, values));\n  },\n\n  includes: function includes(searchValue) {\n    return this.some(function (value) { return is(value, searchValue); });\n  },\n\n  entries: function entries() {\n    return this.__iterator(ITERATE_ENTRIES);\n  },\n\n  every: function every(predicate, context) {\n    assertNotInfinite(this.size);\n    var returnValue = true;\n    this.__iterate(function (v, k, c) {\n      if (!predicate.call(context, v, k, c)) {\n        returnValue = false;\n        return false;\n      }\n    });\n    return returnValue;\n  },\n\n  filter: function filter(predicate, context) {\n    return reify(this, filterFactory(this, predicate, context, true));\n  },\n\n  partition: function partition(predicate, context) {\n    return partitionFactory(this, predicate, context);\n  },\n\n  find: function find(predicate, context, notSetValue) {\n    var entry = this.findEntry(predicate, context);\n    return entry ? entry[1] : notSetValue;\n  },\n\n  forEach: function forEach(sideEffect, context) {\n    assertNotInfinite(this.size);\n    return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n  },\n\n  join: function join(separator) {\n    assertNotInfinite(this.size);\n    separator = separator !== undefined ? '' + separator : ',';\n    var joined = '';\n    var isFirst = true;\n    this.__iterate(function (v) {\n      // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- TODO enable eslint here\n      isFirst ? (isFirst = false) : (joined += separator);\n      joined += v !== null && v !== undefined ? v.toString() : '';\n    });\n    return joined;\n  },\n\n  keys: function keys() {\n    return this.__iterator(ITERATE_KEYS);\n  },\n\n  map: function map(mapper, context) {\n    return reify(this, mapFactory(this, mapper, context));\n  },\n\n  reduce: function reduce$1(reducer, initialReduction, context) {\n    return reduce(\n      this,\n      reducer,\n      initialReduction,\n      context,\n      arguments.length < 2,\n      false\n    );\n  },\n\n  reduceRight: function reduceRight(reducer, initialReduction, context) {\n    return reduce(\n      this,\n      reducer,\n      initialReduction,\n      context,\n      arguments.length < 2,\n      true\n    );\n  },\n\n  reverse: function reverse() {\n    return reify(this, reverseFactory(this, true));\n  },\n\n  slice: function slice(begin, end) {\n    return reify(this, sliceFactory(this, begin, end, true));\n  },\n\n  some: function some(predicate, context) {\n    assertNotInfinite(this.size);\n    var returnValue = false;\n    this.__iterate(function (v, k, c) {\n      if (predicate.call(context, v, k, c)) {\n        returnValue = true;\n        return false;\n      }\n    });\n    return returnValue;\n  },\n\n  sort: function sort(comparator) {\n    return reify(this, sortFactory(this, comparator));\n  },\n\n  values: function values() {\n    return this.__iterator(ITERATE_VALUES);\n  },\n\n  // ### More sequential methods\n\n  butLast: function butLast() {\n    return this.slice(0, -1);\n  },\n\n  isEmpty: function isEmpty() {\n    return this.size !== undefined ? this.size === 0 : !this.some(function () { return true; });\n  },\n\n  count: function count(predicate, context) {\n    return ensureSize(\n      predicate ? this.toSeq().filter(predicate, context) : this\n    );\n  },\n\n  countBy: function countBy(grouper, context) {\n    return countByFactory(this, grouper, context);\n  },\n\n  equals: function equals(other) {\n    return deepEqual(this, other);\n  },\n\n  entrySeq: function entrySeq() {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    var collection = this;\n    if (collection._cache) {\n      // We cache as an entries array, so we can just return the cache!\n      return new ArraySeq(collection._cache);\n    }\n    var entriesSequence = collection.toSeq().map(entryMapper).toIndexedSeq();\n    entriesSequence.fromEntrySeq = function () { return collection.toSeq(); };\n    return entriesSequence;\n  },\n\n  filterNot: function filterNot(predicate, context) {\n    return this.filter(not(predicate), context);\n  },\n\n  findEntry: function findEntry(predicate, context, notSetValue) {\n    var found = notSetValue;\n    this.__iterate(function (v, k, c) {\n      if (predicate.call(context, v, k, c)) {\n        found = [k, v];\n        return false;\n      }\n    });\n    return found;\n  },\n\n  findKey: function findKey(predicate, context) {\n    var entry = this.findEntry(predicate, context);\n    return entry && entry[0];\n  },\n\n  findLast: function findLast(predicate, context, notSetValue) {\n    return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n  },\n\n  findLastEntry: function findLastEntry(predicate, context, notSetValue) {\n    return this.toKeyedSeq()\n      .reverse()\n      .findEntry(predicate, context, notSetValue);\n  },\n\n  findLastKey: function findLastKey(predicate, context) {\n    return this.toKeyedSeq().reverse().findKey(predicate, context);\n  },\n\n  first: function first(notSetValue) {\n    return this.find(returnTrue, null, notSetValue);\n  },\n\n  flatMap: function flatMap(mapper, context) {\n    return reify(this, flatMapFactory(this, mapper, context));\n  },\n\n  flatten: function flatten(depth) {\n    return reify(this, flattenFactory(this, depth, true));\n  },\n\n  fromEntrySeq: function fromEntrySeq() {\n    return new FromEntriesSequence(this);\n  },\n\n  get: function get(searchKey, notSetValue) {\n    return this.find(function (_, key) { return is(key, searchKey); }, undefined, notSetValue);\n  },\n\n  getIn: getIn,\n\n  groupBy: function groupBy(grouper, context) {\n    return groupByFactory(this, grouper, context);\n  },\n\n  has: function has(searchKey) {\n    return this.get(searchKey, NOT_SET) !== NOT_SET;\n  },\n\n  hasIn: hasIn,\n\n  isSubset: function isSubset(iter) {\n    iter = typeof iter.includes === 'function' ? iter : Collection(iter);\n    return this.every(function (value) { return iter.includes(value); });\n  },\n\n  isSuperset: function isSuperset(iter) {\n    iter = typeof iter.isSubset === 'function' ? iter : Collection(iter);\n    return iter.isSubset(this);\n  },\n\n  keyOf: function keyOf(searchValue) {\n    return this.findKey(function (value) { return is(value, searchValue); });\n  },\n\n  keySeq: function keySeq() {\n    return this.toSeq().map(keyMapper).toIndexedSeq();\n  },\n\n  last: function last(notSetValue) {\n    return this.toSeq().reverse().first(notSetValue);\n  },\n\n  lastKeyOf: function lastKeyOf(searchValue) {\n    return this.toKeyedSeq().reverse().keyOf(searchValue);\n  },\n\n  max: function max(comparator) {\n    return maxFactory(this, comparator);\n  },\n\n  maxBy: function maxBy(mapper, comparator) {\n    return maxFactory(this, comparator, mapper);\n  },\n\n  min: function min(comparator) {\n    return maxFactory(\n      this,\n      comparator ? neg(comparator) : defaultNegComparator\n    );\n  },\n\n  minBy: function minBy(mapper, comparator) {\n    return maxFactory(\n      this,\n      comparator ? neg(comparator) : defaultNegComparator,\n      mapper\n    );\n  },\n\n  rest: function rest() {\n    return this.slice(1);\n  },\n\n  skip: function skip(amount) {\n    return amount === 0 ? this : this.slice(Math.max(0, amount));\n  },\n\n  skipLast: function skipLast(amount) {\n    return amount === 0 ? this : this.slice(0, -Math.max(0, amount));\n  },\n\n  skipWhile: function skipWhile(predicate, context) {\n    return reify(this, skipWhileFactory(this, predicate, context, true));\n  },\n\n  skipUntil: function skipUntil(predicate, context) {\n    return this.skipWhile(not(predicate), context);\n  },\n\n  sortBy: function sortBy(mapper, comparator) {\n    return reify(this, sortFactory(this, comparator, mapper));\n  },\n\n  take: function take(amount) {\n    return this.slice(0, Math.max(0, amount));\n  },\n\n  takeLast: function takeLast(amount) {\n    return this.slice(-Math.max(0, amount));\n  },\n\n  takeWhile: function takeWhile(predicate, context) {\n    return reify(this, takeWhileFactory(this, predicate, context));\n  },\n\n  takeUntil: function takeUntil(predicate, context) {\n    return this.takeWhile(not(predicate), context);\n  },\n\n  update: function update(fn) {\n    return fn(this);\n  },\n\n  valueSeq: function valueSeq() {\n    return this.toIndexedSeq();\n  },\n\n  // ### Hashable Object\n\n  hashCode: function hashCode() {\n    return this.__hash || (this.__hash = hashCollection(this));\n  },\n\n  // ### Internal\n\n  // abstract __iterate(fn, reverse)\n\n  // abstract __iterator(type, reverse)\n});\n\nvar CollectionPrototype = Collection.prototype;\nCollectionPrototype[IS_COLLECTION_SYMBOL] = true;\nCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.values;\nCollectionPrototype.toJSON = CollectionPrototype.toArray;\nCollectionPrototype.__toStringMapper = quoteString;\nCollectionPrototype.inspect = CollectionPrototype.toSource = function () {\n  return this.toString();\n};\nCollectionPrototype.chain = CollectionPrototype.flatMap;\nCollectionPrototype.contains = CollectionPrototype.includes;\n\nmixin(KeyedCollection, {\n  // ### More sequential methods\n\n  flip: function flip() {\n    return reify(this, flipFactory(this));\n  },\n\n  mapEntries: function mapEntries(mapper, context) {\n    var this$1$1 = this;\n\n    var iterations = 0;\n    return reify(\n      this,\n      this.toSeq()\n        .map(function (v, k) { return mapper.call(context, [k, v], iterations++, this$1$1); })\n        .fromEntrySeq()\n    );\n  },\n\n  mapKeys: function mapKeys(mapper, context) {\n    var this$1$1 = this;\n\n    return reify(\n      this,\n      this.toSeq()\n        .flip()\n        .map(function (k, v) { return mapper.call(context, k, v, this$1$1); })\n        .flip()\n    );\n  },\n});\n\nvar KeyedCollectionPrototype = KeyedCollection.prototype;\nKeyedCollectionPrototype[IS_KEYED_SYMBOL] = true;\nKeyedCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.entries;\nKeyedCollectionPrototype.toJSON = toObject;\nKeyedCollectionPrototype.__toStringMapper = function (v, k) { return quoteString(k) + ': ' + quoteString(v); };\n\nmixin(IndexedCollection, {\n  // ### Conversion to other types\n\n  toKeyedSeq: function toKeyedSeq() {\n    return new ToKeyedSequence(this, false);\n  },\n\n  // ### ES6 Collection methods (ES6 Array and Map)\n\n  filter: function filter(predicate, context) {\n    return reify(this, filterFactory(this, predicate, context, false));\n  },\n\n  findIndex: function findIndex(predicate, context) {\n    var entry = this.findEntry(predicate, context);\n    return entry ? entry[0] : -1;\n  },\n\n  indexOf: function indexOf(searchValue) {\n    var key = this.keyOf(searchValue);\n    return key === undefined ? -1 : key;\n  },\n\n  lastIndexOf: function lastIndexOf(searchValue) {\n    var key = this.lastKeyOf(searchValue);\n    return key === undefined ? -1 : key;\n  },\n\n  reverse: function reverse() {\n    return reify(this, reverseFactory(this, false));\n  },\n\n  slice: function slice(begin, end) {\n    return reify(this, sliceFactory(this, begin, end, false));\n  },\n\n  splice: function splice(index, removeNum /*, ...values*/) {\n    var numArgs = arguments.length;\n    removeNum = Math.max(removeNum || 0, 0);\n    if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n      return this;\n    }\n    // If index is negative, it should resolve relative to the size of the\n    // collection. However size may be expensive to compute if not cached, so\n    // only call count() if the number is in fact negative.\n    index = resolveBegin(index, index < 0 ? this.count() : this.size);\n    var spliced = this.slice(0, index);\n    return reify(\n      this,\n      numArgs === 1\n        ? spliced\n        : spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n    );\n  },\n\n  // ### More collection methods\n\n  findLastIndex: function findLastIndex(predicate, context) {\n    var entry = this.findLastEntry(predicate, context);\n    return entry ? entry[0] : -1;\n  },\n\n  first: function first(notSetValue) {\n    return this.get(0, notSetValue);\n  },\n\n  flatten: function flatten(depth) {\n    return reify(this, flattenFactory(this, depth, false));\n  },\n\n  get: function get(index, notSetValue) {\n    index = wrapIndex(this, index);\n    return index < 0 ||\n      this.size === Infinity ||\n      (this.size !== undefined && index > this.size)\n      ? notSetValue\n      : this.find(function (_, key) { return key === index; }, undefined, notSetValue);\n  },\n\n  has: function has(index) {\n    index = wrapIndex(this, index);\n\n    return (\n      index >= 0 &&\n      (this.size !== undefined\n        ? this.size === Infinity || index < this.size\n        : this.find(function (_, key) { return key === index; }, undefined, NOT_SET) !== NOT_SET)\n    );\n  },\n\n  interpose: function interpose(separator) {\n    return reify(this, interposeFactory(this, separator));\n  },\n\n  interleave: function interleave(/*...collections*/) {\n    var collections = [this].concat(arrCopy(arguments));\n    var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, collections);\n    var interleaved = zipped.flatten(true);\n    if (zipped.size) {\n      interleaved.size = zipped.size * collections.length;\n    }\n    return reify(this, interleaved);\n  },\n\n  keySeq: function keySeq() {\n    return Range(0, this.size);\n  },\n\n  last: function last(notSetValue) {\n    return this.get(-1, notSetValue);\n  },\n\n  skipWhile: function skipWhile(predicate, context) {\n    return reify(this, skipWhileFactory(this, predicate, context, false));\n  },\n\n  zip: function zip(/*, ...collections */) {\n    var collections = [this].concat(arrCopy(arguments));\n    return reify(this, zipWithFactory(this, defaultZipper, collections));\n  },\n\n  zipAll: function zipAll(/*, ...collections */) {\n    var collections = [this].concat(arrCopy(arguments));\n    return reify(this, zipWithFactory(this, defaultZipper, collections, true));\n  },\n\n  zipWith: function zipWith(zipper /*, ...collections */) {\n    var collections = arrCopy(arguments);\n    collections[0] = this;\n    return reify(this, zipWithFactory(this, zipper, collections));\n  },\n});\n\nvar IndexedCollectionPrototype = IndexedCollection.prototype;\nIndexedCollectionPrototype[IS_INDEXED_SYMBOL] = true;\nIndexedCollectionPrototype[IS_ORDERED_SYMBOL] = true;\n\nmixin(SetCollection, {\n  // ### ES6 Collection methods (ES6 Array and Map)\n\n  get: function get(value, notSetValue) {\n    return this.has(value) ? value : notSetValue;\n  },\n\n  includes: function includes(value) {\n    return this.has(value);\n  },\n\n  // ### More sequential methods\n\n  keySeq: function keySeq() {\n    return this.valueSeq();\n  },\n});\n\nvar SetCollectionPrototype = SetCollection.prototype;\nSetCollectionPrototype.has = CollectionPrototype.includes;\nSetCollectionPrototype.contains = SetCollectionPrototype.includes;\nSetCollectionPrototype.keys = SetCollectionPrototype.values;\n\n// Mixin subclasses\n\nmixin(KeyedSeq, KeyedCollectionPrototype);\nmixin(IndexedSeq, IndexedCollectionPrototype);\nmixin(SetSeq, SetCollectionPrototype);\n\n// #pragma Helper functions\n\nfunction defaultZipper() {\n  return arrCopy(arguments);\n}\n\n/**\n * True if `maybeOrderedSet` is an OrderedSet.\n */\nfunction isOrderedSet(maybeOrderedSet) {\n    return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n}\n\nvar OrderedSet = /*@__PURE__*/(function (Set) {\n  function OrderedSet(value) {\n    // eslint-disable-next-line no-constructor-return\n    return value === undefined || value === null\n      ? emptyOrderedSet()\n      : isOrderedSet(value)\n        ? value\n        : emptyOrderedSet().withMutations(function (set) {\n            var iter = SetCollection(value);\n            assertNotInfinite(iter.size);\n            iter.forEach(function (v) { return set.add(v); });\n          });\n  }\n\n  if ( Set ) OrderedSet.__proto__ = Set;\n  OrderedSet.prototype = Object.create( Set && Set.prototype );\n  OrderedSet.prototype.constructor = OrderedSet;\n\n  OrderedSet.of = function of (/*...values*/) {\n    return this(arguments);\n  };\n\n  OrderedSet.fromKeys = function fromKeys (value) {\n    return this(KeyedCollection(value).keySeq());\n  };\n\n  OrderedSet.prototype.toString = function toString () {\n    return this.__toString('OrderedSet {', '}');\n  };\n\n  return OrderedSet;\n}(Set));\n\nOrderedSet.isOrderedSet = isOrderedSet;\n\nvar OrderedSetPrototype = OrderedSet.prototype;\nOrderedSetPrototype[IS_ORDERED_SYMBOL] = true;\nOrderedSetPrototype.zip = IndexedCollectionPrototype.zip;\nOrderedSetPrototype.zipWith = IndexedCollectionPrototype.zipWith;\nOrderedSetPrototype.zipAll = IndexedCollectionPrototype.zipAll;\n\nOrderedSetPrototype.__empty = emptyOrderedSet;\nOrderedSetPrototype.__make = makeOrderedSet;\n\nfunction makeOrderedSet(map, ownerID) {\n  var set = Object.create(OrderedSetPrototype);\n  set.size = map ? map.size : 0;\n  set._map = map;\n  set.__ownerID = ownerID;\n  return set;\n}\n\nvar EMPTY_ORDERED_SET;\nfunction emptyOrderedSet() {\n  return (\n    EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()))\n  );\n}\n\n/**\n * Describes which item in a pair should be placed first when sorting\n */\nvar PairSorting = {\n    LeftThenRight: -1,\n    RightThenLeft: 1,\n};\n\nfunction throwOnInvalidDefaultValues(defaultValues) {\n  if (isRecord(defaultValues)) {\n    throw new Error(\n      'Can not call `Record` with an immutable Record as default values. Use a plain javascript object instead.'\n    );\n  }\n\n  if (isImmutable(defaultValues)) {\n    throw new Error(\n      'Can not call `Record` with an immutable Collection as default values. Use a plain javascript object instead.'\n    );\n  }\n\n  if (defaultValues === null || typeof defaultValues !== 'object') {\n    throw new Error(\n      'Can not call `Record` with a non-object as default values. Use a plain javascript object instead.'\n    );\n  }\n}\n\nvar Record = function Record(defaultValues, name) {\n  var hasInitialized;\n\n  throwOnInvalidDefaultValues(defaultValues);\n\n  var RecordType = function Record(values) {\n    var this$1$1 = this;\n\n    if (values instanceof RecordType) {\n      return values;\n    }\n    if (!(this instanceof RecordType)) {\n      return new RecordType(values);\n    }\n    if (!hasInitialized) {\n      hasInitialized = true;\n      var keys = Object.keys(defaultValues);\n      var indices = (RecordTypePrototype._indices = {});\n      // Deprecated: left to attempt not to break any external code which\n      // relies on a ._name property existing on record instances.\n      // Use Record.getDescriptiveName() instead\n      RecordTypePrototype._name = name;\n      RecordTypePrototype._keys = keys;\n      RecordTypePrototype._defaultValues = defaultValues;\n      for (var i = 0; i < keys.length; i++) {\n        var propName = keys[i];\n        indices[propName] = i;\n        if (RecordTypePrototype[propName]) {\n          /* eslint-disable no-console */\n          // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- TODO enable eslint here\n          typeof console === 'object' &&\n            console.warn &&\n            console.warn(\n              'Cannot define ' +\n                recordName(this) +\n                ' with property \"' +\n                propName +\n                '\" since that property name is part of the Record API.'\n            );\n          /* eslint-enable no-console */\n        } else {\n          setProp(RecordTypePrototype, propName);\n        }\n      }\n    }\n    this.__ownerID = undefined;\n    this._values = List().withMutations(function (l) {\n      l.setSize(this$1$1._keys.length);\n      KeyedCollection(values).forEach(function (v, k) {\n        l.set(this$1$1._indices[k], v === this$1$1._defaultValues[k] ? undefined : v);\n      });\n    });\n    return this;\n  };\n\n  var RecordTypePrototype = (RecordType.prototype =\n    Object.create(RecordPrototype));\n  RecordTypePrototype.constructor = RecordType;\n\n  if (name) {\n    RecordType.displayName = name;\n  }\n\n  // eslint-disable-next-line no-constructor-return\n  return RecordType;\n};\n\nRecord.prototype.toString = function toString () {\n  var str = recordName(this) + ' { ';\n  var keys = this._keys;\n  var k;\n  for (var i = 0, l = keys.length; i !== l; i++) {\n    k = keys[i];\n    str += (i ? ', ' : '') + k + ': ' + quoteString(this.get(k));\n  }\n  return str + ' }';\n};\n\nRecord.prototype.equals = function equals (other) {\n  return (\n    this === other ||\n    (isRecord(other) && recordSeq(this).equals(recordSeq(other)))\n  );\n};\n\nRecord.prototype.hashCode = function hashCode () {\n  return recordSeq(this).hashCode();\n};\n\n// @pragma Access\n\nRecord.prototype.has = function has (k) {\n  return this._indices.hasOwnProperty(k);\n};\n\nRecord.prototype.get = function get (k, notSetValue) {\n  if (!this.has(k)) {\n    return notSetValue;\n  }\n  var index = this._indices[k];\n  var value = this._values.get(index);\n  return value === undefined ? this._defaultValues[k] : value;\n};\n\n// @pragma Modification\n\nRecord.prototype.set = function set (k, v) {\n  if (this.has(k)) {\n    var newValues = this._values.set(\n      this._indices[k],\n      v === this._defaultValues[k] ? undefined : v\n    );\n    if (newValues !== this._values && !this.__ownerID) {\n      return makeRecord(this, newValues);\n    }\n  }\n  return this;\n};\n\nRecord.prototype.remove = function remove (k) {\n  return this.set(k);\n};\n\nRecord.prototype.clear = function clear () {\n  var newValues = this._values.clear().setSize(this._keys.length);\n\n  return this.__ownerID ? this : makeRecord(this, newValues);\n};\n\nRecord.prototype.wasAltered = function wasAltered () {\n  return this._values.wasAltered();\n};\n\nRecord.prototype.toSeq = function toSeq () {\n  return recordSeq(this);\n};\n\nRecord.prototype.toJS = function toJS$1 () {\n  return toJS(this);\n};\n\nRecord.prototype.entries = function entries () {\n  return this.__iterator(ITERATE_ENTRIES);\n};\n\nRecord.prototype.__iterator = function __iterator (type, reverse) {\n  return recordSeq(this).__iterator(type, reverse);\n};\n\nRecord.prototype.__iterate = function __iterate (fn, reverse) {\n  return recordSeq(this).__iterate(fn, reverse);\n};\n\nRecord.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n  if (ownerID === this.__ownerID) {\n    return this;\n  }\n  var newValues = this._values.__ensureOwner(ownerID);\n  if (!ownerID) {\n    this.__ownerID = ownerID;\n    this._values = newValues;\n    return this;\n  }\n  return makeRecord(this, newValues, ownerID);\n};\n\nRecord.isRecord = isRecord;\nRecord.getDescriptiveName = recordName;\nvar RecordPrototype = Record.prototype;\nRecordPrototype[IS_RECORD_SYMBOL] = true;\nRecordPrototype[DELETE] = RecordPrototype.remove;\nRecordPrototype.deleteIn = RecordPrototype.removeIn = deleteIn;\nRecordPrototype.getIn = getIn;\nRecordPrototype.hasIn = CollectionPrototype.hasIn;\nRecordPrototype.merge = merge$1;\nRecordPrototype.mergeWith = mergeWith$1;\nRecordPrototype.mergeIn = mergeIn;\nRecordPrototype.mergeDeep = mergeDeep;\nRecordPrototype.mergeDeepWith = mergeDeepWith;\nRecordPrototype.mergeDeepIn = mergeDeepIn;\nRecordPrototype.setIn = setIn;\nRecordPrototype.update = update;\nRecordPrototype.updateIn = updateIn$1;\nRecordPrototype.withMutations = withMutations;\nRecordPrototype.asMutable = asMutable;\nRecordPrototype.asImmutable = asImmutable;\nRecordPrototype[ITERATOR_SYMBOL] = RecordPrototype.entries;\nRecordPrototype.toJSON = RecordPrototype.toObject =\n  CollectionPrototype.toObject;\nRecordPrototype.inspect = RecordPrototype.toSource = function () {\n  return this.toString();\n};\n\nfunction makeRecord(likeRecord, values, ownerID) {\n  var record = Object.create(Object.getPrototypeOf(likeRecord));\n  record._values = values;\n  record.__ownerID = ownerID;\n  return record;\n}\n\nfunction recordName(record) {\n  return record.constructor.displayName || record.constructor.name || 'Record';\n}\n\nfunction recordSeq(record) {\n  return keyedSeqFromValue(record._keys.map(function (k) { return [k, record.get(k)]; }));\n}\n\nfunction setProp(prototype, name) {\n  try {\n    Object.defineProperty(prototype, name, {\n      get: function () {\n        return this.get(name);\n      },\n      set: function (value) {\n        invariant(this.__ownerID, 'Cannot set on an immutable record.');\n        this.set(name, value);\n      },\n    });\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars -- TODO enable eslint here\n  } catch (error) {\n    // Object.defineProperty failed. Probably IE8.\n  }\n}\n\n/**\n * Returns a lazy Seq of `value` repeated `times` times. When `times` is\n * undefined, returns an infinite sequence of `value`.\n */\nvar Repeat = /*@__PURE__*/(function (IndexedSeq) {\n  function Repeat(value, times) {\n    if (!(this instanceof Repeat)) {\n      // eslint-disable-next-line no-constructor-return\n      return new Repeat(value, times);\n    }\n    this._value = value;\n    this.size = times === undefined ? Infinity : Math.max(0, times);\n    if (this.size === 0) {\n      if (EMPTY_REPEAT) {\n        // eslint-disable-next-line no-constructor-return\n        return EMPTY_REPEAT;\n      }\n      // eslint-disable-next-line @typescript-eslint/no-this-alias\n      EMPTY_REPEAT = this;\n    }\n  }\n\n  if ( IndexedSeq ) Repeat.__proto__ = IndexedSeq;\n  Repeat.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n  Repeat.prototype.constructor = Repeat;\n\n  Repeat.prototype.toString = function toString () {\n    if (this.size === 0) {\n      return 'Repeat []';\n    }\n    return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n  };\n\n  Repeat.prototype.get = function get (index, notSetValue) {\n    return this.has(index) ? this._value : notSetValue;\n  };\n\n  Repeat.prototype.includes = function includes (searchValue) {\n    return is(this._value, searchValue);\n  };\n\n  Repeat.prototype.slice = function slice (begin, end) {\n    var size = this.size;\n    return wholeSlice(begin, end, size)\n      ? this\n      : new Repeat(\n          this._value,\n          resolveEnd(end, size) - resolveBegin(begin, size)\n        );\n  };\n\n  Repeat.prototype.reverse = function reverse () {\n    return this;\n  };\n\n  Repeat.prototype.indexOf = function indexOf (searchValue) {\n    if (this.size !== 0 && is(this._value, searchValue)) {\n      return 0;\n    }\n    return -1;\n  };\n\n  Repeat.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n    if (this.size !== 0 && is(this._value, searchValue)) {\n      return this.size - 1;\n    }\n    return -1;\n  };\n\n  Repeat.prototype.__iterate = function __iterate (fn, reverse) {\n    var size = this.size;\n    var i = 0;\n    while (i !== size) {\n      if (fn(this._value, reverse ? size - ++i : i++, this) === false) {\n        break;\n      }\n    }\n    return i;\n  };\n\n  Repeat.prototype.__iterator = function __iterator (type, reverse) {\n    var this$1$1 = this;\n\n    var size = this.size;\n    var i = 0;\n    return new Iterator(function () { return i === size\n        ? iteratorDone()\n        : iteratorValue(type, reverse ? size - ++i : i++, this$1$1._value); }\n    );\n  };\n\n  Repeat.prototype.equals = function equals (other) {\n    return other instanceof Repeat\n      ? is(this._value, other._value)\n      : deepEqual(this, other);\n  };\n\n  return Repeat;\n}(IndexedSeq));\n\nvar EMPTY_REPEAT;\n\nfunction fromJS(value, converter) {\n  return fromJSWith(\n    [],\n    converter || defaultConverter,\n    value,\n    '',\n    converter && converter.length > 2 ? [] : undefined,\n    { '': value }\n  );\n}\n\nfunction fromJSWith(stack, converter, value, key, keyPath, parentValue) {\n  if (\n    typeof value !== 'string' &&\n    !isImmutable(value) &&\n    (isArrayLike(value) || hasIterator(value) || isPlainObject(value))\n  ) {\n    if (~stack.indexOf(value)) {\n      throw new TypeError('Cannot convert circular structure to Immutable');\n    }\n    stack.push(value);\n    // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- TODO enable eslint here\n    keyPath && key !== '' && keyPath.push(key);\n    var converted = converter.call(\n      parentValue,\n      key,\n      Seq(value).map(function (v, k) { return fromJSWith(stack, converter, v, k, keyPath, value); }\n      ),\n      keyPath && keyPath.slice()\n    );\n    stack.pop();\n    // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- TODO enable eslint here\n    keyPath && keyPath.pop();\n    return converted;\n  }\n  return value;\n}\n\nfunction defaultConverter(k, v) {\n  // Effectively the opposite of \"Collection.toSeq()\"\n  return isIndexed(v) ? v.toList() : isKeyed(v) ? v.toMap() : v.toSet();\n}\n\nvar version = \"5.1.9\";\n\n/* eslint-disable import/order */\n\n// Note: Iterable is deprecated\nvar Iterable = Collection;\n\nexport { Collection, Iterable, List, Map, OrderedMap, OrderedSet, PairSorting, Range, Record, Repeat, Seq, Set, Stack, fromJS, get, getIn$1 as getIn, has, hasIn$1 as hasIn, hash, is, isAssociative, isCollection, isImmutable, isIndexed, isKeyed, isList, isMap, isOrdered, isOrderedMap, isOrderedSet, isPlainObject, isRecord, isSeq, isSet, isStack, isValueObject, merge, mergeDeep$1 as mergeDeep, mergeDeepWith$1 as mergeDeepWith, mergeWith, remove, removeIn, set, setIn$1 as setIn, update$1 as update, updateIn, version };\n","import React from 'react';\nimport { type List } from 'immutable';\nimport { isString } from 'lodash';\nimport {\n  BasicConfig,\n  Utils,\n  type Config,\n  type JsonItem,\n  type JsonTree,\n  type Operator,\n  type Settings,\n  type Field,\n  type ValueSource,\n  type WidgetProps,\n  type Widgets,\n  type OperatorOptionsI,\n} from '@react-awesome-query-builder/ui';\nimport { dateTime, toOption } from '@grafana/data';\nimport { Button, DateTimePicker, Input, Select } from '@grafana/ui';\n\nconst buttonLabels = {\n  add: 'Add',\n  remove: 'Remove',\n};\n\nexport const emptyInitValue: JsonItem = {\n  id: Utils.uuid(),\n  type: 'group' as const,\n  children1: [\n    {\n      id: Utils.uuid(),\n      type: 'rule',\n      properties: {\n        field: null,\n        operator: null,\n        value: [],\n        valueSrc: [],\n      },\n    },\n  ],\n};\n\nexport const emptyInitTree: JsonTree = {\n  id: Utils.uuid(),\n  type: 'group' as const,\n  children1: [\n    {\n      id: Utils.uuid(),\n      type: 'rule',\n      properties: {\n        field: null,\n        operator: null,\n        value: [],\n        valueSrc: [],\n      },\n    },\n  ],\n};\n\nexport const widgets: Widgets = {\n  ...BasicConfig.widgets,\n  text: {\n    ...BasicConfig.widgets.text,\n    factory: function TextInput(props: WidgetProps) {\n      return (\n        <Input\n          value={props?.value || ''}\n          placeholder={props?.placeholder}\n          onChange={(e) => props?.setValue(e.currentTarget.value)}\n        />\n      );\n    },\n  },\n  number: {\n    ...BasicConfig.widgets.number,\n    factory: function NumberInput(props: WidgetProps) {\n      return (\n        <Input\n          value={props?.value}\n          placeholder={props?.placeholder}\n          type=\"number\"\n          onChange={(e) => props?.setValue(Number.parseInt(e.currentTarget.value, 10))}\n        />\n      );\n    },\n  },\n  datetime: {\n    ...BasicConfig.widgets.datetime,\n    factory: function DateTimeInput(props: WidgetProps) {\n      return (\n        <DateTimePicker\n          onChange={(e) => {\n            props?.setValue(e?.format(BasicConfig.widgets.datetime.valueFormat));\n          }}\n          date={dateTime(props?.value).utc()}\n        />\n      );\n    },\n  },\n};\n\nexport const settings: Settings = {\n  ...BasicConfig.settings,\n  canRegroup: false,\n  maxNesting: 1,\n  canReorder: false,\n  showNot: false,\n  addRuleLabel: buttonLabels.add,\n  deleteLabel: buttonLabels.remove,\n  renderConjs: function Conjunctions(conjProps) {\n    return (\n      <Select\n        id={conjProps?.id}\n        aria-label=\"Conjunction\"\n        menuShouldPortal\n        options={conjProps?.conjunctionOptions ? Object.keys(conjProps?.conjunctionOptions).map(toOption) : undefined}\n        value={conjProps?.selectedConjunction}\n        onChange={(val) => conjProps?.setConjunction(val.value!)}\n      />\n    );\n  },\n  renderField: function Field(fieldProps) {\n    const fields = fieldProps?.config?.fields || {};\n    return (\n      <Select\n        id={fieldProps?.id}\n        width={25}\n        aria-label=\"Field\"\n        menuShouldPortal\n        options={fieldProps?.items.map((f) => {\n          // @ts-ignore\n          const icon = fields[f.key].mainWidgetProps?.customProps?.icon;\n          return {\n            label: f.label,\n            value: f.key,\n            icon,\n          };\n        })}\n        value={fieldProps?.selectedKey}\n        onChange={(val) => {\n          fieldProps?.setField(val.label!);\n        }}\n      />\n    );\n  },\n  renderButton: function RAQBButton(buttonProps) {\n    return (\n      <Button\n        type=\"button\"\n        title={`${buttonProps?.label} filter`}\n        aria-label={`${buttonProps?.label} filter`}\n        onClick={buttonProps?.onClick}\n        variant=\"secondary\"\n        size=\"md\"\n        icon={buttonProps?.label === buttonLabels.add ? 'plus' : 'times'}\n      />\n    );\n  },\n  renderOperator: function Operator(operatorProps) {\n    return (\n      <Select\n        options={operatorProps?.items.map((op) => ({ label: op.label, value: op.key }))}\n        aria-label=\"Operator\"\n        menuShouldPortal\n        value={operatorProps?.selectedKey}\n        onChange={(val) => {\n          operatorProps?.setField(val.value || '');\n        }}\n      />\n    );\n  },\n};\n\n// add IN / NOT IN operators to text to support multi-value variables\nconst enum Op {\n  IN = 'select_any_in',\n  NOT_IN = 'select_not_any_in',\n}\n\nconst customOperators = getCustomOperators(BasicConfig);\nconst textWidget = BasicConfig.types.text.widgets.text;\nconst opers = [...(textWidget.operators || []), Op.IN, Op.NOT_IN];\nconst customTextWidget = {\n  ...textWidget,\n  operators: opers,\n};\n\nconst customTypes = {\n  ...BasicConfig.types,\n  text: {\n    ...BasicConfig.types.text,\n    widgets: {\n      ...BasicConfig.types.text.widgets,\n      text: customTextWidget,\n    },\n  },\n};\n\nexport const raqbConfig: Config = {\n  ...BasicConfig,\n  widgets,\n  settings,\n  operators: customOperators as typeof BasicConfig.operators,\n  types: customTypes,\n};\n\nexport type { Config };\n\nfunction getCustomOperators(config: BasicConfig) {\n  const { ...supportedOperators } = config.operators;\n  const noop = () => '';\n  // IN operator expects array, override IN formatter for multi-value variables\n\n  const sqlFormatInOp = supportedOperators[Op.IN].sqlFormatOp || noop;\n  const customSqlInFormatter = (\n    field: string,\n    op: string,\n    value: string | List<string>,\n    valueSrc: ValueSource,\n    valueType: string,\n    opDef: Operator,\n    operatorOptions: OperatorOptionsI,\n    fieldDef: Field\n  ) =>\n    sqlFormatInOp.call(\n      config.ctx,\n      field,\n      op,\n      splitIfString(value),\n      valueSrc,\n      valueType,\n      opDef,\n      operatorOptions,\n      fieldDef\n    );\n  // NOT IN operator expects array, override NOT IN formatter for multi-value variables\n  const sqlFormatNotInOp = supportedOperators[Op.NOT_IN].sqlFormatOp || noop;\n  const customSqlNotInFormatter = (\n    field: string,\n    op: string,\n    value: string | List<string>,\n    valueSrc: ValueSource,\n    valueType: string,\n    opDef: Operator,\n    operatorOptions: OperatorOptionsI,\n    fieldDef: Field\n  ) =>\n    sqlFormatNotInOp.call(\n      config.ctx,\n      field,\n      op,\n      splitIfString(value),\n      valueSrc,\n      valueType,\n      opDef,\n      operatorOptions,\n      fieldDef\n    );\n\n  const customOperators = {\n    ...supportedOperators,\n    [Op.IN]: {\n      ...supportedOperators[Op.IN],\n      sqlFormatOp: customSqlInFormatter,\n    },\n    [Op.NOT_IN]: {\n      ...supportedOperators[Op.NOT_IN],\n      sqlFormatOp: customSqlNotInFormatter,\n    },\n  };\n\n  return customOperators;\n}\n\n// value: string | List<string> but AQB uses a different version of Immutable\n// eslint-ignore\nfunction splitIfString(value: any) {\n  if (isString(value)) {\n    return value.split(',');\n  }\n  return value;\n}\n","import { injectGlobal } from '@emotion/css';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { Builder, type Config, type ImmutableTree, Query, Utils } from '@react-awesome-query-builder/ui';\nimport { type SQLExpression } from '../types';\nimport { emptyInitTree, raqbConfig } from './AwesomeQueryBuilder';\n\ninterface SQLBuilderWhereRowProps {\n  sql: SQLExpression;\n  onSqlChange: (sql: SQLExpression) => void;\n  config?: Partial<Config>;\n}\n\nexport function WhereRow({ sql, config, onSqlChange }: SQLBuilderWhereRowProps) {\n  const [tree, setTree] = useState<ImmutableTree>();\n  const configWithDefaults = useMemo(() => ({ ...raqbConfig, ...config }), [config]);\n\n  useEffect(() => {\n    // Set the initial tree\n    if (!tree) {\n      const initTree = Utils.checkTree(Utils.loadTree(sql.whereJsonTree ?? emptyInitTree), configWithDefaults);\n      setTree(initTree);\n    }\n  }, [configWithDefaults, sql.whereJsonTree, tree]);\n\n  useEffect(() => {\n    if (!sql.whereJsonTree) {\n      setTree(Utils.checkTree(Utils.loadTree(emptyInitTree), configWithDefaults));\n    }\n  }, [configWithDefaults, sql.whereJsonTree]);\n\n  const onTreeChange = useCallback(\n    (changedTree: ImmutableTree, config: Config) => {\n      setTree(changedTree);\n      const newSql = {\n        ...sql,\n        whereJsonTree: Utils.getTree(changedTree),\n        whereString: Utils.sqlFormat(changedTree, config),\n      };\n\n      onSqlChange(newSql);\n    },\n    [onSqlChange, sql]\n  );\n\n  if (!tree) {\n    return null;\n  }\n\n  return (\n    <Query\n      {...configWithDefaults}\n      value={tree}\n      onChange={onTreeChange}\n      renderBuilder={(props) => <Builder {...props} />}\n    />\n  );\n}\n\nfunction flex(direction: string) {\n  return `\n    display: flex;\n    gap: 8px;\n    flex-direction: ${direction};`;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-expressions\ninjectGlobal`\n  .group--header {\n    ${flex('row')}\n  }\n\n  .group-or-rule {\n    ${flex('column')}\n    .rule {\n      flex-direction: row;\n    }\n  }\n\n  .rule--body {\n    ${flex('row')}\n  }\n\n  .group--children {\n    ${flex('column')}\n  }\n\n  .group--conjunctions:empty {\n    display: none;\n  }\n`;\n","import React from 'react';\nimport { useAsync } from 'react-use';\nimport { type SelectableValue } from '@grafana/data';\nimport { type Config } from './AwesomeQueryBuilder';\nimport { WhereRow } from './WhereRow';\nimport { type SQLQuery, type DB, type SQLExpression, type SQLSelectableValue, type QueryWithDefaults } from '../types';\nimport { useSqlChange } from '../utils/useSqlChange';\n\ninterface WhereRowProps {\n  query: QueryWithDefaults;\n  fields: SelectableValue[];\n  onQueryChange: (query: SQLQuery) => void;\n  db: DB;\n}\n\nexport function SQLWhereRow({ query, fields, onQueryChange, db }: WhereRowProps) {\n  const state = useAsync(async () => {\n    return mapFieldsToTypes(fields);\n  }, [fields]);\n\n  const { onSqlChange } = useSqlChange({ query, onQueryChange, db });\n\n  return (\n    <WhereRow\n      // TODO: fix key that's used to force clean render or SQLWhereRow - otherwise it doesn't render operators correctly\n      key={JSON.stringify(state.value)}\n      config={{ fields: state.value || {} }}\n      sql={query.sql!}\n      onSqlChange={(val: SQLExpression) => {\n        onSqlChange(val);\n      }}\n    />\n  );\n}\n\n// needed for awesome query builder\nfunction mapFieldsToTypes(columns: SQLSelectableValue[]) {\n  const fields: Config['fields'] = {};\n  for (const col of columns) {\n    fields[col.value] = {\n      type: col.raqbFieldType || 'text',\n      valueSources: ['value'],\n      mainWidgetProps: { customProps: { icon: col.icon } },\n    };\n  }\n  return fields;\n}\n","import React from 'react';\nimport { css } from '@emotion/css';\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\nimport { EditorStack } from '../EditorStack';\n\ninterface EditorRowProps {\n  children?: React.ReactNode;\n}\n\nexport const EditorRow = ({ children }: EditorRowProps) => {\n  const styles = useStyles2(getStyles);\n\n  return (\n    <div className={styles.root}>\n      <EditorStack gap={2}>{children}</EditorStack>\n    </div>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    root: css({\n      padding: theme.spacing(1),\n      backgroundColor: theme.colors.background.secondary,\n      borderRadius: theme.shape.borderRadius(1),\n    }),\n  };\n};\n","import { css } from '@emotion/css';\nimport React, { type ComponentProps } from 'react';\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { Field, type PopoverContent, useTheme2, ReactUtils, Tooltip, Icon, stylesFactory } from '@grafana/ui';\nimport { Space } from '../Space';\n\ninterface EditorFieldProps extends ComponentProps<typeof Field> {\n  label: string;\n  children: React.ReactElement;\n  width?: number | string;\n  optional?: boolean;\n  tooltip?: PopoverContent;\n}\n\nexport const EditorField = (props: EditorFieldProps) => {\n  const { label, optional, tooltip, children, width, ...fieldProps } = props;\n\n  const theme = useTheme2();\n  const styles = getStyles(theme, width);\n\n  // Null check for backward compatibility\n  const childInputId = fieldProps?.htmlFor || ReactUtils?.getChildId(children);\n\n  const labelEl = (\n    <>\n      <label className={styles.label} htmlFor={childInputId}>\n        {label}\n        {optional && <span className={styles.optional}> - optional</span>}\n        {tooltip && (\n          <Tooltip placement=\"top\" content={tooltip} theme=\"info\">\n            <Icon name=\"info-circle\" size=\"sm\" className={styles.icon} />\n          </Tooltip>\n        )}\n      </label>\n      <Space v={0.5} />\n    </>\n  );\n\n  return (\n    <div className={styles.root}>\n      <Field className={styles.field} label={labelEl} {...fieldProps}>\n        {children}\n      </Field>\n    </div>\n  );\n};\n\nconst getStyles = stylesFactory((theme: GrafanaTheme2, width?: number | string) => {\n  return {\n    root: css({\n      minWidth: theme.spacing(width ?? 0),\n    }),\n    label: css({\n      fontSize: 12,\n      fontWeight: theme.typography.fontWeightMedium,\n    }),\n    optional: css({\n      fontStyle: 'italic',\n      color: theme.colors.text.secondary,\n    }),\n    field: css({\n      marginBottom: 0, // GrafanaUI/Field has a bottom margin which we must remove\n    }),\n    icon: css({\n      color: theme.colors.text.secondary,\n      marginLeft: theme.spacing(1),\n      ':hover': {\n        color: theme.colors.text.primary,\n      },\n    }),\n  };\n});\n","import React from 'react';\nimport { EditorStack } from '../EditorStack';\n\ninterface EditorRowsProps {\n  children?: React.ReactNode;\n}\n\nexport const EditorRows = ({ children }: EditorRowsProps) => {\n  return (\n    <EditorStack gap={0.5} direction=\"column\">\n      {children}\n    </EditorStack>\n  );\n};\n","import React from 'react';\nimport { useAsync } from 'react-use';\nimport { type DB, type QueryEditorProps, type QueryRowFilter, type SQLQuery } from '../types';\nimport { QueryToolbox } from '../query-editor-raw/QueryToolbox';\nimport { Preview } from './Preview';\nimport { SQLGroupByRow } from './SQLGroupByRow';\nimport { SQLOrderByRow } from './SQLOrderByRow';\nimport { SQLSelectRow } from './SQLSelectRow';\nimport { SQLWhereRow } from './SQLWhereRow';\nimport { type TimeRange } from '@grafana/data';\nimport { EditorRow } from './EditorRow';\nimport { EditorField } from './EditorField';\nimport { EditorRows } from './EditorRows';\nimport type { SqlLanguage } from 'sql-formatter';\n\ninterface VisualEditorProps extends QueryEditorProps {\n  query: SQLQuery;\n  db: DB;\n  queryRowFilter: QueryRowFilter;\n  onChange: (q: SQLQuery) => void;\n  onValidate: (isValid: boolean) => void;\n  language?: SqlLanguage;\n  range?: TimeRange;\n}\n\nexport const VisualEditor = ({\n  query,\n  db,\n  queryRowFilter,\n  onChange,\n  onValidate,\n  language = 'sql',\n  range,\n}: VisualEditorProps) => {\n  const state = useAsync(async () => {\n    const fields = await db.fields(query);\n    return fields;\n  }, [db, query.dataset, query.table]);\n\n  return (\n    <>\n      <EditorRows>\n        <EditorRow>\n          <SQLSelectRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n        </EditorRow>\n        {queryRowFilter.filter && (\n          <EditorRow>\n            <EditorField label=\"Filter by column value\" optional>\n              <SQLWhereRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n            </EditorField>\n          </EditorRow>\n        )}\n        {queryRowFilter.group && (\n          <EditorRow>\n            <EditorField label=\"Group by column\">\n              <SQLGroupByRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n            </EditorField>\n          </EditorRow>\n        )}\n        {queryRowFilter.order && (\n          <EditorRow>\n            <SQLOrderByRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n          </EditorRow>\n        )}\n        {queryRowFilter.preview && query.rawSql && (\n          <EditorRow>\n            <Preview rawSql={query.rawSql} language={language} />\n          </EditorRow>\n        )}\n      </EditorRows>\n      <QueryToolbox db={db} query={query} onValidate={onValidate} range={range} />\n    </>\n  );\n};\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(t) {\n      for (var s, i = 1, n = arguments.length; i < n; i++) {\n          s = arguments[i];\n          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n      return t;\n  }\n  return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n  return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n  }\n  Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n          r[k] = a[j];\n  return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n      if (ar || !(i in from)) {\n          if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n          ar[i] = from[i];\n      }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n  function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n  ownKeys = Object.getOwnPropertyNames || function (o) {\n    var ar = [];\n    for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n    return ar;\n  };\n  return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose, inner;\n    if (async) {\n      if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n      dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n      if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n      dispose = value[Symbol.dispose];\n      if (async) inner = dispose;\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  var r, s = 0;\n  function next() {\n    while (r = env.stack.pop()) {\n      try {\n        if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n        if (r.dispose) {\n          var result = r.dispose.call(r.value);\n          if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n        }\n        else s |= 1;\n      }\n      catch (e) {\n        fail(e);\n      }\n    }\n    if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n  if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n      return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n          return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n      });\n  }\n  return path;\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __esDecorate,\n  __runInitializers,\n  __propKey,\n  __setFunctionName,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n  __rewriteRelativeImportExtension,\n};\n","export function isFunction(value) {\n    return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","export function createErrorClass(createImpl) {\n    var _super = function (instance) {\n        Error.call(instance);\n        instance.stack = new Error().stack;\n    };\n    var ctorFunc = createImpl(_super);\n    ctorFunc.prototype = Object.create(Error.prototype);\n    ctorFunc.prototype.constructor = ctorFunc;\n    return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n    return function UnsubscriptionErrorImpl(errors) {\n        _super(this);\n        this.message = errors\n            ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n  ')\n            : '';\n        this.name = 'UnsubscriptionError';\n        this.errors = errors;\n    };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n    if (arr) {\n        var index = arr.indexOf(item);\n        0 <= index && arr.splice(index, 1);\n    }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n    function Subscription(initialTeardown) {\n        this.initialTeardown = initialTeardown;\n        this.closed = false;\n        this._parentage = null;\n        this._finalizers = null;\n    }\n    Subscription.prototype.unsubscribe = function () {\n        var e_1, _a, e_2, _b;\n        var errors;\n        if (!this.closed) {\n            this.closed = true;\n            var _parentage = this._parentage;\n            if (_parentage) {\n                this._parentage = null;\n                if (Array.isArray(_parentage)) {\n                    try {\n                        for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n                            var parent_1 = _parentage_1_1.value;\n                            parent_1.remove(this);\n                        }\n                    }\n                    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n                    finally {\n                        try {\n                            if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n                        }\n                        finally { if (e_1) throw e_1.error; }\n                    }\n                }\n                else {\n                    _parentage.remove(this);\n                }\n            }\n            var initialFinalizer = this.initialTeardown;\n            if (isFunction(initialFinalizer)) {\n                try {\n                    initialFinalizer();\n                }\n                catch (e) {\n                    errors = e instanceof UnsubscriptionError ? e.errors : [e];\n                }\n            }\n            var _finalizers = this._finalizers;\n            if (_finalizers) {\n                this._finalizers = null;\n                try {\n                    for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n                        var finalizer = _finalizers_1_1.value;\n                        try {\n                            execFinalizer(finalizer);\n                        }\n                        catch (err) {\n                            errors = errors !== null && errors !== void 0 ? errors : [];\n                            if (err instanceof UnsubscriptionError) {\n                                errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n                            }\n                            else {\n                                errors.push(err);\n                            }\n                        }\n                    }\n                }\n                catch (e_2_1) { e_2 = { error: e_2_1 }; }\n                finally {\n                    try {\n                        if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n                    }\n                    finally { if (e_2) throw e_2.error; }\n                }\n            }\n            if (errors) {\n                throw new UnsubscriptionError(errors);\n            }\n        }\n    };\n    Subscription.prototype.add = function (teardown) {\n        var _a;\n        if (teardown && teardown !== this) {\n            if (this.closed) {\n                execFinalizer(teardown);\n            }\n            else {\n                if (teardown instanceof Subscription) {\n                    if (teardown.closed || teardown._hasParent(this)) {\n                        return;\n                    }\n                    teardown._addParent(this);\n                }\n                (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n            }\n        }\n    };\n    Subscription.prototype._hasParent = function (parent) {\n        var _parentage = this._parentage;\n        return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n    };\n    Subscription.prototype._addParent = function (parent) {\n        var _parentage = this._parentage;\n        this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n    };\n    Subscription.prototype._removeParent = function (parent) {\n        var _parentage = this._parentage;\n        if (_parentage === parent) {\n            this._parentage = null;\n        }\n        else if (Array.isArray(_parentage)) {\n            arrRemove(_parentage, parent);\n        }\n    };\n    Subscription.prototype.remove = function (teardown) {\n        var _finalizers = this._finalizers;\n        _finalizers && arrRemove(_finalizers, teardown);\n        if (teardown instanceof Subscription) {\n            teardown._removeParent(this);\n        }\n    };\n    Subscription.EMPTY = (function () {\n        var empty = new Subscription();\n        empty.closed = true;\n        return empty;\n    })();\n    return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n    return (value instanceof Subscription ||\n        (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n    if (isFunction(finalizer)) {\n        finalizer();\n    }\n    else {\n        finalizer.unsubscribe();\n    }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n    onUnhandledError: null,\n    onStoppedNotification: null,\n    Promise: undefined,\n    useDeprecatedSynchronousErrorHandling: false,\n    useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n    setTimeout: function (handler, timeout) {\n        var args = [];\n        for (var _i = 2; _i < arguments.length; _i++) {\n            args[_i - 2] = arguments[_i];\n        }\n        var delegate = timeoutProvider.delegate;\n        if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n            return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n        }\n        return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n    },\n    clearTimeout: function (handle) {\n        var delegate = timeoutProvider.delegate;\n        return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n    },\n    delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n    timeoutProvider.setTimeout(function () {\n        var onUnhandledError = config.onUnhandledError;\n        if (onUnhandledError) {\n            onUnhandledError(err);\n        }\n        else {\n            throw err;\n        }\n    });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","import { config } from '../config';\nvar context = null;\nexport function errorContext(cb) {\n    if (config.useDeprecatedSynchronousErrorHandling) {\n        var isRoot = !context;\n        if (isRoot) {\n            context = { errorThrown: false, error: null };\n        }\n        cb();\n        if (isRoot) {\n            var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n            context = null;\n            if (errorThrown) {\n                throw error;\n            }\n        }\n    }\n    else {\n        cb();\n    }\n}\nexport function captureError(err) {\n    if (config.useDeprecatedSynchronousErrorHandling && context) {\n        context.errorThrown = true;\n        context.error = err;\n    }\n}\n//# sourceMappingURL=errorContext.js.map","import { __extends } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n    __extends(Subscriber, _super);\n    function Subscriber(destination) {\n        var _this = _super.call(this) || this;\n        _this.isStopped = false;\n        if (destination) {\n            _this.destination = destination;\n            if (isSubscription(destination)) {\n                destination.add(_this);\n            }\n        }\n        else {\n            _this.destination = EMPTY_OBSERVER;\n        }\n        return _this;\n    }\n    Subscriber.create = function (next, error, complete) {\n        return new SafeSubscriber(next, error, complete);\n    };\n    Subscriber.prototype.next = function (value) {\n        if (this.isStopped) {\n            handleStoppedNotification(nextNotification(value), this);\n        }\n        else {\n            this._next(value);\n        }\n    };\n    Subscriber.prototype.error = function (err) {\n        if (this.isStopped) {\n            handleStoppedNotification(errorNotification(err), this);\n        }\n        else {\n            this.isStopped = true;\n            this._error(err);\n        }\n    };\n    Subscriber.prototype.complete = function () {\n        if (this.isStopped) {\n            handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n        }\n        else {\n            this.isStopped = true;\n            this._complete();\n        }\n    };\n    Subscriber.prototype.unsubscribe = function () {\n        if (!this.closed) {\n            this.isStopped = true;\n            _super.prototype.unsubscribe.call(this);\n            this.destination = null;\n        }\n    };\n    Subscriber.prototype._next = function (value) {\n        this.destination.next(value);\n    };\n    Subscriber.prototype._error = function (err) {\n        try {\n            this.destination.error(err);\n        }\n        finally {\n            this.unsubscribe();\n        }\n    };\n    Subscriber.prototype._complete = function () {\n        try {\n            this.destination.complete();\n        }\n        finally {\n            this.unsubscribe();\n        }\n    };\n    return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n    return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n    function ConsumerObserver(partialObserver) {\n        this.partialObserver = partialObserver;\n    }\n    ConsumerObserver.prototype.next = function (value) {\n        var partialObserver = this.partialObserver;\n        if (partialObserver.next) {\n            try {\n                partialObserver.next(value);\n            }\n            catch (error) {\n                handleUnhandledError(error);\n            }\n        }\n    };\n    ConsumerObserver.prototype.error = function (err) {\n        var partialObserver = this.partialObserver;\n        if (partialObserver.error) {\n            try {\n                partialObserver.error(err);\n            }\n            catch (error) {\n                handleUnhandledError(error);\n            }\n        }\n        else {\n            handleUnhandledError(err);\n        }\n    };\n    ConsumerObserver.prototype.complete = function () {\n        var partialObserver = this.partialObserver;\n        if (partialObserver.complete) {\n            try {\n                partialObserver.complete();\n            }\n            catch (error) {\n                handleUnhandledError(error);\n            }\n        }\n    };\n    return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n    __extends(SafeSubscriber, _super);\n    function SafeSubscriber(observerOrNext, error, complete) {\n        var _this = _super.call(this) || this;\n        var partialObserver;\n        if (isFunction(observerOrNext) || !observerOrNext) {\n            partialObserver = {\n                next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n                error: error !== null && error !== void 0 ? error : undefined,\n                complete: complete !== null && complete !== void 0 ? complete : undefined,\n            };\n        }\n        else {\n            var context_1;\n            if (_this && config.useDeprecatedNextContext) {\n                context_1 = Object.create(observerOrNext);\n                context_1.unsubscribe = function () { return _this.unsubscribe(); };\n                partialObserver = {\n                    next: observerOrNext.next && bind(observerOrNext.next, context_1),\n                    error: observerOrNext.error && bind(observerOrNext.error, context_1),\n                    complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n                };\n            }\n            else {\n                partialObserver = observerOrNext;\n            }\n        }\n        _this.destination = new ConsumerObserver(partialObserver);\n        return _this;\n    }\n    return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n    if (config.useDeprecatedSynchronousErrorHandling) {\n        captureError(error);\n    }\n    else {\n        reportUnhandledError(error);\n    }\n}\nfunction defaultErrorHandler(err) {\n    throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n    var onStoppedNotification = config.onStoppedNotification;\n    onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n    closed: true,\n    next: noop,\n    error: defaultErrorHandler,\n    complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","export var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","export function identity(x) {\n    return x;\n}\n//# sourceMappingURL=identity.js.map","import { identity } from './identity';\nexport function pipe() {\n    var fns = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        fns[_i] = arguments[_i];\n    }\n    return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n    if (fns.length === 0) {\n        return identity;\n    }\n    if (fns.length === 1) {\n        return fns[0];\n    }\n    return function piped(input) {\n        return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n    };\n}\n//# sourceMappingURL=pipe.js.map","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nvar Observable = (function () {\n    function Observable(subscribe) {\n        if (subscribe) {\n            this._subscribe = subscribe;\n        }\n    }\n    Observable.prototype.lift = function (operator) {\n        var observable = new Observable();\n        observable.source = this;\n        observable.operator = operator;\n        return observable;\n    };\n    Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n        var _this = this;\n        var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n        errorContext(function () {\n            var _a = _this, operator = _a.operator, source = _a.source;\n            subscriber.add(operator\n                ?\n                    operator.call(subscriber, source)\n                : source\n                    ?\n                        _this._subscribe(subscriber)\n                    :\n                        _this._trySubscribe(subscriber));\n        });\n        return subscriber;\n    };\n    Observable.prototype._trySubscribe = function (sink) {\n        try {\n            return this._subscribe(sink);\n        }\n        catch (err) {\n            sink.error(err);\n        }\n    };\n    Observable.prototype.forEach = function (next, promiseCtor) {\n        var _this = this;\n        promiseCtor = getPromiseCtor(promiseCtor);\n        return new promiseCtor(function (resolve, reject) {\n            var subscriber = new SafeSubscriber({\n                next: function (value) {\n                    try {\n                        next(value);\n                    }\n                    catch (err) {\n                        reject(err);\n                        subscriber.unsubscribe();\n                    }\n                },\n                error: reject,\n                complete: resolve,\n            });\n            _this.subscribe(subscriber);\n        });\n    };\n    Observable.prototype._subscribe = function (subscriber) {\n        var _a;\n        return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n    };\n    Observable.prototype[Symbol_observable] = function () {\n        return this;\n    };\n    Observable.prototype.pipe = function () {\n        var operations = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            operations[_i] = arguments[_i];\n        }\n        return pipeFromArray(operations)(this);\n    };\n    Observable.prototype.toPromise = function (promiseCtor) {\n        var _this = this;\n        promiseCtor = getPromiseCtor(promiseCtor);\n        return new promiseCtor(function (resolve, reject) {\n            var value;\n            _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n        });\n    };\n    Observable.create = function (subscribe) {\n        return new Observable(subscribe);\n    };\n    return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n    var _a;\n    return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n    return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n    return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n    return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n    return function (source) {\n        if (hasLift(source)) {\n            return source.lift(function (liftedSource) {\n                try {\n                    return init(liftedSource, this);\n                }\n                catch (err) {\n                    this.error(err);\n                }\n            });\n        }\n        throw new TypeError('Unable to lift unknown Observable type');\n    };\n}\n//# sourceMappingURL=lift.js.map","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n    return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nvar OperatorSubscriber = (function (_super) {\n    __extends(OperatorSubscriber, _super);\n    function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n        var _this = _super.call(this, destination) || this;\n        _this.onFinalize = onFinalize;\n        _this.shouldUnsubscribe = shouldUnsubscribe;\n        _this._next = onNext\n            ? function (value) {\n                try {\n                    onNext(value);\n                }\n                catch (err) {\n                    destination.error(err);\n                }\n            }\n            : _super.prototype._next;\n        _this._error = onError\n            ? function (err) {\n                try {\n                    onError(err);\n                }\n                catch (err) {\n                    destination.error(err);\n                }\n                finally {\n                    this.unsubscribe();\n                }\n            }\n            : _super.prototype._error;\n        _this._complete = onComplete\n            ? function () {\n                try {\n                    onComplete();\n                }\n                catch (err) {\n                    destination.error(err);\n                }\n                finally {\n                    this.unsubscribe();\n                }\n            }\n            : _super.prototype._complete;\n        return _this;\n    }\n    OperatorSubscriber.prototype.unsubscribe = function () {\n        var _a;\n        if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n            var closed_1 = this.closed;\n            _super.prototype.unsubscribe.call(this);\n            !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n        }\n    };\n    return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.js.map","import { Observable } from '../Observable';\nexport var EMPTY = new Observable(function (subscriber) { return subscriber.complete(); });\nexport function empty(scheduler) {\n    return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n    return new Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map","import { isFunction } from './isFunction';\nexport function isScheduler(value) {\n    return value && isFunction(value.schedule);\n}\n//# sourceMappingURL=isScheduler.js.map","import { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\nfunction last(arr) {\n    return arr[arr.length - 1];\n}\nexport function popResultSelector(args) {\n    return isFunction(last(args)) ? args.pop() : undefined;\n}\nexport function popScheduler(args) {\n    return isScheduler(last(args)) ? args.pop() : undefined;\n}\nexport function popNumber(args, defaultValue) {\n    return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\n//# sourceMappingURL=args.js.map","export var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n    return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n//# sourceMappingURL=isPromise.js.map","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n    return isFunction(input[Symbol_observable]);\n}\n//# sourceMappingURL=isInteropObservable.js.map","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n    return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n//# sourceMappingURL=isAsyncIterable.js.map","export function createInvalidObservableTypeError(input) {\n    return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\n//# sourceMappingURL=throwUnobservableError.js.map","export function getSymbolIterator() {\n    if (typeof Symbol !== 'function' || !Symbol.iterator) {\n        return '@@iterator';\n    }\n    return Symbol.iterator;\n}\nexport var iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n    return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n//# sourceMappingURL=isIterable.js.map","import { __asyncGenerator, __await, __generator } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n    return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n        var reader, _a, value, done;\n        return __generator(this, function (_b) {\n            switch (_b.label) {\n                case 0:\n                    reader = readableStream.getReader();\n                    _b.label = 1;\n                case 1:\n                    _b.trys.push([1, , 9, 10]);\n                    _b.label = 2;\n                case 2:\n                    if (!true) return [3, 8];\n                    return [4, __await(reader.read())];\n                case 3:\n                    _a = _b.sent(), value = _a.value, done = _a.done;\n                    if (!done) return [3, 5];\n                    return [4, __await(void 0)];\n                case 4: return [2, _b.sent()];\n                case 5: return [4, __await(value)];\n                case 6: return [4, _b.sent()];\n                case 7:\n                    _b.sent();\n                    return [3, 2];\n                case 8: return [3, 10];\n                case 9:\n                    reader.releaseLock();\n                    return [7];\n                case 10: return [2];\n            }\n        });\n    });\n}\nexport function isReadableStreamLike(obj) {\n    return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n//# sourceMappingURL=isReadableStreamLike.js.map","import { __asyncValues, __awaiter, __generator, __values } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n    if (input instanceof Observable) {\n        return input;\n    }\n    if (input != null) {\n        if (isInteropObservable(input)) {\n            return fromInteropObservable(input);\n        }\n        if (isArrayLike(input)) {\n            return fromArrayLike(input);\n        }\n        if (isPromise(input)) {\n            return fromPromise(input);\n        }\n        if (isAsyncIterable(input)) {\n            return fromAsyncIterable(input);\n        }\n        if (isIterable(input)) {\n            return fromIterable(input);\n        }\n        if (isReadableStreamLike(input)) {\n            return fromReadableStreamLike(input);\n        }\n    }\n    throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n    return new Observable(function (subscriber) {\n        var obs = obj[Symbol_observable]();\n        if (isFunction(obs.subscribe)) {\n            return obs.subscribe(subscriber);\n        }\n        throw new TypeError('Provided object does not correctly implement Symbol.observable');\n    });\n}\nexport function fromArrayLike(array) {\n    return new Observable(function (subscriber) {\n        for (var i = 0; i < array.length && !subscriber.closed; i++) {\n            subscriber.next(array[i]);\n        }\n        subscriber.complete();\n    });\n}\nexport function fromPromise(promise) {\n    return new Observable(function (subscriber) {\n        promise\n            .then(function (value) {\n            if (!subscriber.closed) {\n                subscriber.next(value);\n                subscriber.complete();\n            }\n        }, function (err) { return subscriber.error(err); })\n            .then(null, reportUnhandledError);\n    });\n}\nexport function fromIterable(iterable) {\n    return new Observable(function (subscriber) {\n        var e_1, _a;\n        try {\n            for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n                var value = iterable_1_1.value;\n                subscriber.next(value);\n                if (subscriber.closed) {\n                    return;\n                }\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        subscriber.complete();\n    });\n}\nexport function fromAsyncIterable(asyncIterable) {\n    return new Observable(function (subscriber) {\n        process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });\n    });\n}\nexport function fromReadableStreamLike(readableStream) {\n    return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n    var asyncIterable_1, asyncIterable_1_1;\n    var e_2, _a;\n    return __awaiter(this, void 0, void 0, function () {\n        var value, e_2_1;\n        return __generator(this, function (_b) {\n            switch (_b.label) {\n                case 0:\n                    _b.trys.push([0, 5, 6, 11]);\n                    asyncIterable_1 = __asyncValues(asyncIterable);\n                    _b.label = 1;\n                case 1: return [4, asyncIterable_1.next()];\n                case 2:\n                    if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n                    value = asyncIterable_1_1.value;\n                    subscriber.next(value);\n                    if (subscriber.closed) {\n                        return [2];\n                    }\n                    _b.label = 3;\n                case 3: return [3, 1];\n                case 4: return [3, 11];\n                case 5:\n                    e_2_1 = _b.sent();\n                    e_2 = { error: e_2_1 };\n                    return [3, 11];\n                case 6:\n                    _b.trys.push([6, , 9, 10]);\n                    if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n                    return [4, _a.call(asyncIterable_1)];\n                case 7:\n                    _b.sent();\n                    _b.label = 8;\n                case 8: return [3, 10];\n                case 9:\n                    if (e_2) throw e_2.error;\n                    return [7];\n                case 10: return [7];\n                case 11:\n                    subscriber.complete();\n                    return [2];\n            }\n        });\n    });\n}\n//# sourceMappingURL=innerFrom.js.map","export function executeSchedule(parentSubscription, scheduler, work, delay, repeat) {\n    if (delay === void 0) { delay = 0; }\n    if (repeat === void 0) { repeat = false; }\n    var scheduleSubscription = scheduler.schedule(function () {\n        work();\n        if (repeat) {\n            parentSubscription.add(this.schedule(null, delay));\n        }\n        else {\n            this.unsubscribe();\n        }\n    }, delay);\n    parentSubscription.add(scheduleSubscription);\n    if (!repeat) {\n        return scheduleSubscription;\n    }\n}\n//# sourceMappingURL=executeSchedule.js.map","import { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function observeOn(scheduler, delay) {\n    if (delay === void 0) { delay = 0; }\n    return operate(function (source, subscriber) {\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) { return executeSchedule(subscriber, scheduler, function () { return subscriber.next(value); }, delay); }, function () { return executeSchedule(subscriber, scheduler, function () { return subscriber.complete(); }, delay); }, function (err) { return executeSchedule(subscriber, scheduler, function () { return subscriber.error(err); }, delay); }));\n    });\n}\n//# sourceMappingURL=observeOn.js.map","import { operate } from '../util/lift';\nexport function subscribeOn(scheduler, delay) {\n    if (delay === void 0) { delay = 0; }\n    return operate(function (source, subscriber) {\n        subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay));\n    });\n}\n//# sourceMappingURL=subscribeOn.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function scheduleObservable(input, scheduler) {\n    return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=scheduleObservable.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function schedulePromise(input, scheduler) {\n    return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=schedulePromise.js.map","import { Observable } from '../Observable';\nexport function scheduleArray(input, scheduler) {\n    return new Observable(function (subscriber) {\n        var i = 0;\n        return scheduler.schedule(function () {\n            if (i === input.length) {\n                subscriber.complete();\n            }\n            else {\n                subscriber.next(input[i++]);\n                if (!subscriber.closed) {\n                    this.schedule();\n                }\n            }\n        });\n    });\n}\n//# sourceMappingURL=scheduleArray.js.map","import { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleIterable(input, scheduler) {\n    return new Observable(function (subscriber) {\n        var iterator;\n        executeSchedule(subscriber, scheduler, function () {\n            iterator = input[Symbol_iterator]();\n            executeSchedule(subscriber, scheduler, function () {\n                var _a;\n                var value;\n                var done;\n                try {\n                    (_a = iterator.next(), value = _a.value, done = _a.done);\n                }\n                catch (err) {\n                    subscriber.error(err);\n                    return;\n                }\n                if (done) {\n                    subscriber.complete();\n                }\n                else {\n                    subscriber.next(value);\n                }\n            }, 0, true);\n        });\n        return function () { return isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); };\n    });\n}\n//# sourceMappingURL=scheduleIterable.js.map","import { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleAsyncIterable(input, scheduler) {\n    if (!input) {\n        throw new Error('Iterable cannot be null');\n    }\n    return new Observable(function (subscriber) {\n        executeSchedule(subscriber, scheduler, function () {\n            var iterator = input[Symbol.asyncIterator]();\n            executeSchedule(subscriber, scheduler, function () {\n                iterator.next().then(function (result) {\n                    if (result.done) {\n                        subscriber.complete();\n                    }\n                    else {\n                        subscriber.next(result.value);\n                    }\n                });\n            }, 0, true);\n        });\n    });\n}\n//# sourceMappingURL=scheduleAsyncIterable.js.map","import { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function scheduleReadableStreamLike(input, scheduler) {\n    return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n//# sourceMappingURL=scheduleReadableStreamLike.js.map","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\nexport function scheduled(input, scheduler) {\n    if (input != null) {\n        if (isInteropObservable(input)) {\n            return scheduleObservable(input, scheduler);\n        }\n        if (isArrayLike(input)) {\n            return scheduleArray(input, scheduler);\n        }\n        if (isPromise(input)) {\n            return schedulePromise(input, scheduler);\n        }\n        if (isAsyncIterable(input)) {\n            return scheduleAsyncIterable(input, scheduler);\n        }\n        if (isIterable(input)) {\n            return scheduleIterable(input, scheduler);\n        }\n        if (isReadableStreamLike(input)) {\n            return scheduleReadableStreamLike(input, scheduler);\n        }\n    }\n    throw createInvalidObservableTypeError(input);\n}\n//# sourceMappingURL=scheduled.js.map","import { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\nexport function from(input, scheduler) {\n    return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n//# sourceMappingURL=from.js.map","import { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function of() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    var scheduler = popScheduler(args);\n    return from(args, scheduler);\n}\n//# sourceMappingURL=of.js.map","import { createErrorClass } from './createErrorClass';\nexport var EmptyError = createErrorClass(function (_super) {\n    return function EmptyErrorImpl() {\n        _super(this);\n        this.name = 'EmptyError';\n        this.message = 'no elements in sequence';\n    };\n});\n//# sourceMappingURL=EmptyError.js.map","import { EmptyError } from './util/EmptyError';\nexport function lastValueFrom(source, config) {\n    var hasConfig = typeof config === 'object';\n    return new Promise(function (resolve, reject) {\n        var _hasValue = false;\n        var _value;\n        source.subscribe({\n            next: function (value) {\n                _value = value;\n                _hasValue = true;\n            },\n            error: reject,\n            complete: function () {\n                if (_hasValue) {\n                    resolve(_value);\n                }\n                else if (hasConfig) {\n                    resolve(config.defaultValue);\n                }\n                else {\n                    reject(new EmptyError());\n                }\n            },\n        });\n    });\n}\n//# sourceMappingURL=lastValueFrom.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function map(project, thisArg) {\n    return operate(function (source, subscriber) {\n        var index = 0;\n        source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n            subscriber.next(project.call(thisArg, value, index++));\n        }));\n    });\n}\n//# sourceMappingURL=map.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {\n    var buffer = [];\n    var active = 0;\n    var index = 0;\n    var isComplete = false;\n    var checkComplete = function () {\n        if (isComplete && !buffer.length && !active) {\n            subscriber.complete();\n        }\n    };\n    var outerNext = function (value) { return (active < concurrent ? doInnerSub(value) : buffer.push(value)); };\n    var doInnerSub = function (value) {\n        expand && subscriber.next(value);\n        active++;\n        var innerComplete = false;\n        innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, function (innerValue) {\n            onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);\n            if (expand) {\n                outerNext(innerValue);\n            }\n            else {\n                subscriber.next(innerValue);\n            }\n        }, function () {\n            innerComplete = true;\n        }, undefined, function () {\n            if (innerComplete) {\n                try {\n                    active--;\n                    var _loop_1 = function () {\n                        var bufferedValue = buffer.shift();\n                        if (innerSubScheduler) {\n                            executeSchedule(subscriber, innerSubScheduler, function () { return doInnerSub(bufferedValue); });\n                        }\n                        else {\n                            doInnerSub(bufferedValue);\n                        }\n                    };\n                    while (buffer.length && active < concurrent) {\n                        _loop_1();\n                    }\n                    checkComplete();\n                }\n                catch (err) {\n                    subscriber.error(err);\n                }\n            }\n        }));\n    };\n    source.subscribe(createOperatorSubscriber(subscriber, outerNext, function () {\n        isComplete = true;\n        checkComplete();\n    }));\n    return function () {\n        additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();\n    };\n}\n//# sourceMappingURL=mergeInternals.js.map","import { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\nexport function mergeMap(project, resultSelector, concurrent) {\n    if (concurrent === void 0) { concurrent = Infinity; }\n    if (isFunction(resultSelector)) {\n        return mergeMap(function (a, i) { return map(function (b, ii) { return resultSelector(a, b, i, ii); })(innerFrom(project(a, i))); }, concurrent);\n    }\n    else if (typeof resultSelector === 'number') {\n        concurrent = resultSelector;\n    }\n    return operate(function (source, subscriber) { return mergeInternals(source, subscriber, project, concurrent); });\n}\n//# sourceMappingURL=mergeMap.js.map","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent) {\n    if (concurrent === void 0) { concurrent = Infinity; }\n    return mergeMap(identity, concurrent);\n}\n//# sourceMappingURL=mergeAll.js.map","import { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\nexport function merge() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    var scheduler = popScheduler(args);\n    var concurrent = popNumber(args, Infinity);\n    var sources = args;\n    return !sources.length\n        ?\n            EMPTY\n        : sources.length === 1\n            ?\n                innerFrom(sources[0])\n            :\n                mergeAll(concurrent)(from(sources, scheduler));\n}\n//# sourceMappingURL=merge.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { operate } from '../util/lift';\nexport function catchError(selector) {\n    return operate(function (source, subscriber) {\n        var innerSub = null;\n        var syncUnsub = false;\n        var handledResult;\n        innerSub = source.subscribe(createOperatorSubscriber(subscriber, undefined, undefined, function (err) {\n            handledResult = innerFrom(selector(err, catchError(selector)(source)));\n            if (innerSub) {\n                innerSub.unsubscribe();\n                innerSub = null;\n                handledResult.subscribe(subscriber);\n            }\n            else {\n                syncUnsub = true;\n            }\n        }));\n        if (syncUnsub) {\n            innerSub.unsubscribe();\n            innerSub = null;\n            handledResult.subscribe(subscriber);\n        }\n    });\n}\n//# sourceMappingURL=catchError.js.map","export const MACRO_NAMES = [\n  '$__time',\n  '$__timeEpoch',\n  '$__timeFilter',\n  '$__timeFrom',\n  '$__timeTo',\n  '$__timeGroup',\n  '$__timeGroupAlias',\n  '$__unixEpochFilter',\n  '$__unixEpochNanoFilter',\n  '$__unixEpochNanoFrom',\n  '$__unixEpochNanoTo',\n  '$__unixEpochGroup',\n  '$__unixEpochGroupAlias',\n];\n","import { lastValueFrom, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\nimport {\n  type DataFrame,\n  DataFrameView,\n  type DataSourceInstanceSettings,\n  type MetricFindValue,\n  type ScopedVars,\n  type TimeRange,\n  type VariableModel,\n} from '@grafana/data';\nimport {\n  type BackendDataSourceResponse,\n  DataSourceWithBackend,\n  type FetchResponse,\n  getBackendSrv,\n  getTemplateSrv,\n  type TemplateSrv,\n  toDataQueryResponse,\n} from '@grafana/runtime';\nimport { type DataQuery } from '@grafana/schema';\n\nimport { MACRO_NAMES } from './constants';\n// import { toTestingStatus } from '@grafana/runtime/utils/queryResponse';\nimport {\n  type DB,\n  QueryFormat,\n  type ResponseParser,\n  type SQLOptions,\n  type SQLQuery,\n  type SqlQueryModel,\n} from '../components/QueryEditor/types';\n\nexport interface SearchFilterOptions {\n  searchFilter?: string;\n}\n\nexport interface VariableWithMultiSupport extends VariableWithOptions {\n  multi: boolean;\n  includeAll: boolean;\n  allValue?: string | null;\n}\n\nexport interface VariableWithOptions extends VariableModel {\n  current: VariableOption;\n  options: VariableOption[];\n  query: string;\n}\n\nexport interface VariableOption {\n  selected: boolean;\n  text: string | string[];\n  value: string | string[];\n  isNone?: boolean;\n}\n\nexport abstract class SqlDatasource extends DataSourceWithBackend<SQLQuery, SQLOptions> {\n  id: number;\n  name: string;\n  interval: string;\n  db: DB;\n  dataset?: string;\n  annotations = {};\n\n  constructor(\n    instanceSettings: DataSourceInstanceSettings<SQLOptions>,\n    protected readonly templateSrv: TemplateSrv = getTemplateSrv()\n  ) {\n    super(instanceSettings);\n    this.name = instanceSettings.name;\n    // If the id is not present, set it to 0 - it's deprecated in Grafana 13\n    this.id = instanceSettings.id ?? 0;\n    const settingsData = instanceSettings.jsonData || {};\n    this.interval = settingsData.timeInterval || '1m';\n    this.db = this.getDB();\n  }\n\n  abstract getDB(dsID?: number): DB;\n\n  abstract getQueryModel(target?: SQLQuery, templateSrv?: TemplateSrv, scopedVars?: ScopedVars): SqlQueryModel;\n\n  abstract getResponseParser(): ResponseParser;\n\n  interpolateVariable = (value: string | string[] | number, variable: VariableWithMultiSupport) => {\n    if (typeof value === 'string') {\n      if (variable.multi || variable.includeAll) {\n        const result = this.getQueryModel().quoteLiteral(value);\n        return result;\n      } else {\n        return value;\n      }\n    }\n\n    if (typeof value === 'number') {\n      return value;\n    }\n\n    if (Array.isArray(value)) {\n      const quotedValues = value.map((v) => this.getQueryModel().quoteLiteral(v));\n      return quotedValues.join(',');\n    }\n\n    return value;\n  };\n\n  interpolateVariablesInQueries(queries: SQLQuery[], scopedVars: ScopedVars): SQLQuery[] {\n    let expandedQueries = queries;\n    if (queries && queries.length > 0) {\n      expandedQueries = queries.map((query) => {\n        const expandedQuery = {\n          ...query,\n          datasource: this.getRef(),\n          rawSql: this.templateSrv.replace(query.rawSql, scopedVars, this.interpolateVariable),\n          rawQuery: true,\n        };\n        return expandedQuery;\n      });\n    }\n    return expandedQueries;\n  }\n\n  filterQuery(query: SQLQuery): boolean {\n    return !query.hide;\n  }\n\n  applyTemplateVariables(target: SQLQuery, scopedVars: ScopedVars): SQLQuery {\n    const queryModel = this.getQueryModel(target, this.templateSrv, scopedVars);\n    const rawSql = this.clean(queryModel.interpolate());\n    return {\n      refId: target.refId,\n      datasource: this.getRef(),\n      rawSql,\n      format: target.format,\n    };\n  }\n\n  clean(value: string) {\n    return value.replace(/''/g, \"'\");\n  }\n\n  async metricFindQuery(query: string, optionalOptions?: MetricFindQueryOptions): Promise<MetricFindValue[]> {\n    const rawSql = this.templateSrv.replace(\n      query,\n      getSearchFilterScopedVar({ query, wildcardChar: '%', options: optionalOptions }),\n      this.interpolateVariable\n    );\n\n    const interpolatedQuery: SQLQuery = {\n      refId: 'tempvar',\n      datasource: this.getRef(),\n      rawSql,\n      format: QueryFormat.Table,\n    };\n\n    const response = await this.runMetaQuery(interpolatedQuery, optionalOptions);\n    return this.getResponseParser().transformMetricFindResponse(response);\n  }\n\n  async runSql<T extends object>(query: string, options?: RunSQLOptions) {\n    const frame = await this.runMetaQuery({ rawSql: query, format: QueryFormat.Table, refId: options?.refId }, options);\n    return new DataFrameView<T>(frame);\n  }\n\n  private runMetaQuery(request: Partial<SQLQuery>, options?: MetricFindQueryOptions): Promise<DataFrame> {\n    const refId = request.refId || 'meta';\n    const queries: DataQuery[] = [{ ...request, datasource: request.datasource || this.getRef(), refId }];\n\n    return lastValueFrom(\n      getBackendSrv()\n        .fetch<BackendDataSourceResponse>({\n          url: '/api/ds/query',\n          method: 'POST',\n          data: {\n            from: options?.range?.from.valueOf().toString(),\n            to: options?.range?.to.valueOf().toString(),\n            queries,\n          },\n          requestId: refId,\n        })\n        .pipe(\n          map((res: FetchResponse<BackendDataSourceResponse>) => {\n            const rsp = toDataQueryResponse(res, queries);\n            return rsp.data[0];\n          })\n        )\n    );\n  }\n\n  testDatasource(): Promise<{ status: string; message: string }> {\n    return lastValueFrom(\n      getBackendSrv()\n        .fetch({\n          url: '/api/ds/query',\n          method: 'POST',\n          data: {\n            from: '5m',\n            to: 'now',\n            queries: [\n              {\n                refId: 'A',\n                intervalMs: 1,\n                maxDataPoints: 1,\n                datasource: this.getRef(),\n                datasourceId: this.id,\n                rawSql: 'SELECT 1',\n                format: 'table',\n              },\n            ],\n          },\n        })\n        .pipe(\n          map(() => ({ status: 'success', message: 'Database Connection OK' })),\n          catchError((err) => {\n            // return of(toTestingStatus(err));\n            return of(err);\n          })\n        )\n    );\n  }\n\n  targetContainsTemplate(target: SQLQuery) {\n    let queryWithoutMacros = target.rawSql;\n    MACRO_NAMES.forEach((value) => {\n      queryWithoutMacros = queryWithoutMacros?.replace(value, '') || '';\n    });\n    return this.templateSrv.containsTemplate(queryWithoutMacros);\n  }\n}\n\ninterface RunSQLOptions extends MetricFindQueryOptions {\n  refId?: string;\n}\n\ninterface MetricFindQueryOptions extends SearchFilterOptions {\n  range?: TimeRange;\n}\n\nexport const SEARCH_FILTER_VARIABLE = '__searchFilter';\n\nexport const containsSearchFilter = (query: string | unknown): boolean =>\n  query && typeof query === 'string' ? query.indexOf(SEARCH_FILTER_VARIABLE) !== -1 : false;\n\nexport const getSearchFilterScopedVar = (args: {\n  query: string;\n  wildcardChar: string;\n  options?: SearchFilterOptions;\n}): ScopedVars => {\n  const { query, wildcardChar } = args;\n  if (!containsSearchFilter(query)) {\n    return {};\n  }\n\n  let { options } = args;\n\n  options = options || { searchFilter: '' };\n  const value = options.searchFilter ? `${options.searchFilter}${wildcardChar}` : `${wildcardChar}`;\n\n  return {\n    __searchFilter: {\n      value,\n      text: '',\n    },\n  };\n};\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { useAsync } from 'react-use';\n\nimport { type QueryEditorProps } from '@grafana/data';\n\nimport { applyQueryDefaults } from './defaults';\nimport { type SQLQuery, type QueryRowFilter, type SQLOptions, EditorMode } from './types';\nimport { haveColumns } from './utils/sql.utils';\n\nimport { QueryHeader } from './QueryHeader';\nimport { RawEditor } from './query-editor-raw/RawEditor';\nimport { VisualEditor } from './visual-query-builder/VisualEditor';\n\nimport { type SqlDatasource } from '../../datasource/SqlDatasource';\nimport { Space } from './Space';\nimport type { SqlLanguage } from 'sql-formatter';\n\ninterface Props extends QueryEditorProps<SqlDatasource, SQLQuery, SQLOptions> {\n  language?: SqlLanguage;\n}\n\nexport function SqlQueryEditor({ datasource, query, onChange, onRunQuery, range, language = 'sql' }: Props) {\n  const [isQueryRunnable, setIsQueryRunnable] = useState(true);\n  const db = datasource.getDB();\n  const defaultDataset = datasource.dataset;\n\n  const { loading, error } = useAsync(async () => {\n    return () => {\n      if (datasource.getDB(datasource.id).init !== undefined) {\n        datasource.getDB(datasource.id).init!();\n      }\n    };\n  }, [datasource]);\n\n  const queryWithDefaults = applyQueryDefaults(query);\n  const [queryRowFilter, setQueryRowFilter] = useState<QueryRowFilter>({\n    filter: !!queryWithDefaults.sql?.whereString,\n    group: !!queryWithDefaults.sql?.groupBy?.[0]?.property.name,\n    order: !!queryWithDefaults.sql?.orderBy?.property.name,\n    preview: true,\n  });\n  const [queryToValidate, setQueryToValidate] = useState(queryWithDefaults);\n\n  useEffect(() => {\n    return () => {\n      if (datasource.getDB(datasource.id).dispose !== undefined) {\n        datasource.getDB(datasource.id).dispose!();\n      }\n    };\n  }, [datasource]);\n\n  const processQuery = useCallback(\n    (q: SQLQuery) => {\n      if (isQueryValid(q) && onRunQuery) {\n        onRunQuery();\n      }\n    },\n    [onRunQuery]\n  );\n\n  const onQueryChange = (q: SQLQuery, process = true) => {\n    setQueryToValidate(q);\n    onChange(q);\n\n    if (haveColumns(q.sql?.columns) && q.sql?.columns.some((c) => c.name) && !queryRowFilter.group) {\n      setQueryRowFilter({ ...queryRowFilter, group: true });\n    }\n\n    if (process) {\n      processQuery(q);\n    }\n  };\n\n  const onQueryHeaderChange = (q: SQLQuery) => {\n    setQueryToValidate(q);\n    onChange(q);\n  };\n\n  if (loading || error) {\n    return null;\n  }\n\n  const catalogsEnabled = db.disableCatalogs === false;\n  const datasetsEnabled = !db.disableDatasets;\n\n  // When catalogs are enabled, datasets MUST be enabled (they act as schema selector)\n  const effectiveEnableDatasets = catalogsEnabled ? true : datasetsEnabled;\n\n  return (\n    <>\n      <QueryHeader\n        db={db}\n        defaultDataset={defaultDataset || ''}\n        enableDatasets={effectiveEnableDatasets}\n        enableCatalogs={catalogsEnabled}\n        onChange={onQueryHeaderChange}\n        onRunQuery={onRunQuery}\n        onQueryRowChange={setQueryRowFilter}\n        queryRowFilter={queryRowFilter}\n        query={queryWithDefaults}\n        isQueryRunnable={isQueryRunnable}\n        labels={datasource.getDB(datasource.id)?.labels}\n      />\n\n      <Space v={0.5} />\n\n      {queryWithDefaults.editorMode !== EditorMode.Code && (\n        <VisualEditor\n          db={db}\n          query={queryWithDefaults}\n          language={language}\n          onChange={(q: SQLQuery) => onQueryChange(q, false)}\n          queryRowFilter={queryRowFilter}\n          onValidate={setIsQueryRunnable}\n          range={range}\n        />\n      )}\n\n      {queryWithDefaults.editorMode === EditorMode.Code && (\n        <RawEditor\n          db={db}\n          language={language}\n          query={queryWithDefaults}\n          queryToValidate={queryToValidate}\n          onChange={onQueryChange}\n          onRunQuery={onRunQuery}\n          onValidate={setIsQueryRunnable}\n          range={range}\n        />\n      )}\n    </>\n  );\n}\n\nconst isQueryValid = (q: SQLQuery) => {\n  return Boolean(q.rawSql);\n};\n","import React from 'react';\nimport { type InlineLabel as OriginalInlineLabel, InlineField, InlineSwitch } from '@grafana/ui';\nimport { config } from '@grafana/runtime';\nimport { type DataSourceSettings } from '@grafana/data';\n\ntype Props = Omit<React.ComponentProps<typeof OriginalInlineLabel>, 'children' | 'onChange'> & {\n  dataSourceConfig: DataSourceSettings<any, any>;\n  onChange: (config: DataSourceSettings<any, any>) => void;\n  labelWidth: number;\n};\n\nexport const SecureSocksProxyToggle = ({ labelWidth = 10, ...props }: Props) => {\n  const { dataSourceConfig, onChange } = props;\n  const handleSwitchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n    onChange({\n      ...dataSourceConfig,\n      jsonData: {\n        ...dataSourceConfig.jsonData,\n        enableSecureSocksProxy: e.target.checked,\n      },\n    });\n  };\n\n  return (\n    (config as any).secureSocksDSProxyEnabled && (\n      <div>\n        <div className=\"gf-form\">\n          <div className=\"gf-form gf-form-inline\">\n            <InlineField\n              htmlFor=\"secureSocksProxyEnabled\"\n              label=\"Secure Socks Proxy Enabled\"\n              labelWidth={labelWidth}\n              tooltip={\n                <>\n                  Proxy the datasource connection through the secure socks proxy to a different network. To learn more\n                  about configuring the datasource connection proxy,{' '}\n                  <a\n                    href=\"https://grafana.com/docs/grafana/latest/setup-grafana/configure-grafana/proxy/\"\n                    target=\"_blank\"\n                    rel=\"noopener noreferrer\"\n                  >\n                    click here.\n                  </a>\n                </>\n              }\n            >\n              <InlineSwitch\n                id=\"secureSocksProxyEnabled\"\n                value={dataSourceConfig.jsonData.enableSecureSocksProxy}\n                onChange={handleSwitchChange}\n              />\n            </InlineField>\n          </div>\n        </div>\n      </div>\n    )\n  );\n};\n","import React from 'react';\nimport { cx, css } from '@emotion/css';\nimport { useTheme2 } from '@grafana/ui';\n\ntype Props = {\n  dataSourceName: string;\n  docsLink: string;\n  hasRequiredFields?: boolean;\n  className?: string;\n};\n\nexport const DataSourceDescription = ({ dataSourceName, docsLink, hasRequiredFields = true, className }: Props) => {\n  const theme = useTheme2();\n\n  const styles = {\n    container: css({\n      p: {\n        margin: 0,\n      },\n      'p + p': {\n        marginTop: theme.spacing(2),\n      },\n    }),\n    text: css({\n      ...theme.typography.body,\n      color: theme.colors.text.secondary,\n      a: css({\n        color: theme.colors.text.link,\n        textDecoration: 'underline',\n        '&:hover': {\n          textDecoration: 'none',\n        },\n      }),\n    }),\n  };\n\n  return (\n    <div className={cx(styles.container, className)}>\n      <p className={styles.text}>\n        Before you can use the {dataSourceName} data source, you must configure it below or in the config file. For\n        detailed instructions,{' '}\n        <a href={docsLink} target=\"_blank\" rel=\"noreferrer\">\n          view the documentation\n        </a>\n        .\n      </p>\n      {hasRequiredFields && (\n        <p className={styles.text}>\n          <i>Fields marked with * are required</i>\n        </p>\n      )}\n    </div>\n  );\n};\n","import React, { useState, type ReactNode } from 'react';\nimport { css } from '@emotion/css';\nimport { useTheme2, IconButton, type IconName } from '@grafana/ui';\n\nexport type Props = {\n  title: string;\n  description?: ReactNode;\n  isCollapsible?: boolean;\n  isInitiallyOpen?: boolean;\n  kind?: 'section' | 'sub-section';\n  className?: string;\n};\n\nexport const GenericConfigSection = ({\n  children,\n  title,\n  description,\n  isCollapsible = false,\n  isInitiallyOpen = true,\n  kind = 'section',\n  className,\n}: React.PropsWithChildren<Props>) => {\n  const { colors, typography, spacing } = useTheme2();\n  const [isOpen, setIsOpen] = useState(isCollapsible ? isInitiallyOpen : true);\n  const iconName: IconName = isOpen ? 'angle-up' : 'angle-down';\n  const isSubSection = kind === 'sub-section';\n  const collapsibleButtonAriaLabel = `${isOpen ? 'Collapse' : 'Expand'} section ${title}`;\n\n  const styles = {\n    header: css({\n      display: 'flex',\n      justifyContent: 'space-between',\n      alignItems: 'center',\n    }),\n    title: css({\n      margin: 0,\n    }),\n    subtitle: css({\n      margin: 0,\n      fontWeight: typography.fontWeightRegular,\n    }),\n    descriptionText: css({\n      marginTop: spacing(isSubSection ? 0.25 : 0.5),\n      marginBottom: 0,\n      ...typography.bodySmall,\n      color: colors.text.secondary,\n    }),\n    content: css({\n      marginTop: spacing(2),\n    }),\n  };\n\n  return (\n    <div className={className}>\n      <div className={styles.header}>\n        {kind === 'section' ? <h3 className={styles.title}>{title}</h3> : <h6 className={styles.subtitle}>{title}</h6>}\n        {isCollapsible && (\n          <IconButton\n            name={iconName}\n            onClick={() => setIsOpen(!isOpen)}\n            type=\"button\"\n            size=\"xl\"\n            aria-label={collapsibleButtonAriaLabel}\n          />\n        )}\n      </div>\n      {description && <p className={styles.descriptionText}>{description}</p>}\n      {isOpen && <div className={styles.content}>{children}</div>}\n    </div>\n  );\n};\n","import React from 'react';\nimport { GenericConfigSection, type Props as GenericConfigSectionProps } from './GenericConfigSection';\n\ntype Props = Omit<GenericConfigSectionProps, 'kind'>;\n\nexport const ConfigSection = ({ children, ...props }: React.PropsWithChildren<Props>) => {\n  return (\n    <GenericConfigSection {...props} kind=\"section\">\n      {children}\n    </GenericConfigSection>\n  );\n};\n","import React from 'react';\nimport { GenericConfigSection, type Props as GenericConfigSectionProps } from './GenericConfigSection';\n\ntype Props = Omit<GenericConfigSectionProps, 'kind'>;\n\nexport const ConfigSubSection = ({ children, ...props }: React.PropsWithChildren<Props>) => {\n  return (\n    <GenericConfigSection {...props} kind=\"sub-section\">\n      {children}\n    </GenericConfigSection>\n  );\n};\n","import React from 'react';\nimport { css } from '@emotion/css';\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\n\ntype Props = {\n  description: string;\n  suffix: string;\n  feature: string;\n};\n\nexport function ConfigDescriptionLink(props: Props) {\n  const { description, suffix, feature } = props;\n  const text = `Learn more about ${feature}`;\n  const styles = useStyles2(getStyles);\n\n  return (\n    <span className={styles.container}>\n      {description}\n      <a\n        aria-label={text}\n        href={`https://grafana.com/docs/grafana/next/datasources/${suffix}`}\n        rel=\"noreferrer\"\n        target=\"_blank\"\n      >\n        {text}\n      </a>\n    </span>\n  );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    container: css({\n      color: theme.colors.text.secondary,\n      a: css({\n        color: theme.colors.text.link,\n        textDecoration: 'underline',\n        marginLeft: '5px',\n        '&:hover': {\n          textDecoration: 'none',\n        },\n      }),\n    }),\n  };\n};\n","import { type ReactElement } from 'react';\n\nexport enum AuthMethod {\n  NoAuth = 'NoAuth',\n  BasicAuth = 'BasicAuth',\n  OAuthForward = 'OAuthForward',\n  CrossSiteCredentials = 'CrossSiteCredentials',\n}\n\nexport interface AuthMethodSelectOption {\n  label?: string;\n  description?: string;\n}\n\nexport type CustomMethodId = `custom-${string}`;\n\nexport type CustomMethod = {\n  id: CustomMethodId;\n  label: string;\n  description: string;\n  component: ReactElement;\n};\n\nexport type Header = {\n  name: string;\n  configured: boolean;\n};\n\nexport type HeaderWithValue = Header & { value: string };\n\nexport type LocalHeader = HeaderWithValue & { id: string };\n","import { css } from '@emotion/css';\n\nexport const useCommonStyles = () => {\n  return {\n    inlineFieldNoMarginRight: css({\n      marginRight: 0,\n    }),\n    // This is dirty hack to make configured secret input grow\n    inlineFieldWithSecret: css({\n      '[class$=\"layoutChildrenWrapper\"]:first-child': {\n        flexGrow: 1,\n      },\n    }),\n  };\n};\n","import React from 'react';\nimport { cx, css } from '@emotion/css';\nimport { InlineField, Input, type PopoverContent, SecretInput } from '@grafana/ui';\nimport { useCommonStyles } from '../styles';\n\nexport type Props = {\n  user?: string;\n  passwordConfigured: boolean;\n  userLabel?: string;\n  userTooltip?: PopoverContent;\n  userPlaceholder?: string;\n  passwordLabel?: string;\n  passwordTooltip?: PopoverContent;\n  passwordPlaceholder?: string;\n  onUserChange: (user: string) => void;\n  onPasswordChange: (password: string) => void;\n  onPasswordReset: () => void;\n  readOnly: boolean;\n};\n\nexport const BasicAuth = ({\n  user,\n  passwordConfigured,\n  userLabel = 'User',\n  userTooltip = 'The username of the data source account',\n  userPlaceholder = 'User',\n  passwordLabel = 'Password',\n  passwordTooltip = 'The password of the data source account',\n  passwordPlaceholder = 'Password',\n  onUserChange,\n  onPasswordChange,\n  onPasswordReset,\n  readOnly,\n}: Props) => {\n  const commonStyles = useCommonStyles();\n  const styles = {\n    lastInlineField: css({\n      marginBottom: 0,\n    }),\n  };\n  return (\n    <>\n      <InlineField\n        className={commonStyles.inlineFieldNoMarginRight}\n        label={userLabel}\n        labelWidth={24}\n        tooltip={userTooltip}\n        required\n        htmlFor=\"basic-auth-user-input\"\n        interactive\n        grow\n        disabled={readOnly}\n      >\n        <Input\n          id=\"basic-auth-user-input\"\n          placeholder={userPlaceholder}\n          value={user}\n          onChange={(e) => onUserChange(e.currentTarget.value)}\n          required\n        />\n      </InlineField>\n      <InlineField\n        className={cx(\n          commonStyles.inlineFieldNoMarginRight,\n          commonStyles.inlineFieldWithSecret,\n          styles.lastInlineField\n        )}\n        label={passwordLabel}\n        labelWidth={24}\n        tooltip={passwordTooltip}\n        required\n        htmlFor=\"basic-auth-password-input\"\n        interactive\n        grow\n        disabled={readOnly}\n      >\n        <SecretInput\n          id=\"basic-auth-password-input\"\n          isConfigured={passwordConfigured}\n          onReset={readOnly ? () => {} : onPasswordReset}\n          placeholder={passwordPlaceholder}\n          onChange={(e) => onPasswordChange(e.currentTarget.value)}\n          required\n        />\n      </InlineField>\n    </>\n  );\n};\n","import React, { type ReactElement, useMemo, useState } from 'react';\nimport { css } from '@emotion/css';\nimport { useTheme2, Select, Field } from '@grafana/ui';\nimport { type SelectableValue } from '@grafana/data';\nimport { BasicAuth, type Props as BasicAuthProps } from './BasicAuth';\nimport { ConfigSubSection } from '../../ConfigSection';\nimport { AuthMethod, type CustomMethod, type CustomMethodId, type AuthMethodSelectOption } from '../types';\n\nconst defaultOptions: Record<AuthMethod, SelectableValue<AuthMethod>> = {\n  [AuthMethod.BasicAuth]: {\n    label: 'Basic authentication',\n    value: AuthMethod.BasicAuth,\n    description: 'Authenticate with your data source username and password',\n  },\n  [AuthMethod.CrossSiteCredentials]: {\n    label: 'Enable cross-site access control requests',\n    value: AuthMethod.CrossSiteCredentials,\n    description:\n      'Allow cross-site Access-Control requests with your existing credentials and cookies. This enables the server to authenticate the user and perform authorized requests on their behalf on other domains.',\n  },\n  [AuthMethod.OAuthForward]: {\n    label: 'Forward OAuth Identity',\n    value: AuthMethod.OAuthForward,\n    description:\n      'Forward the OAuth access token (and if available: the OIDC ID token) of the user querying to the data source',\n  },\n  [AuthMethod.NoAuth]: {\n    label: 'No Authentication',\n    value: AuthMethod.NoAuth,\n    description: 'Data source is available without authentication',\n  },\n};\n\nexport type Props = {\n  selectedMethod: AuthMethod | CustomMethodId;\n  mostCommonMethod?: AuthMethod | CustomMethodId;\n  visibleMethods?: Array<AuthMethod | CustomMethodId>;\n  defaultOptionsOverrides?: Partial<Record<AuthMethod, AuthMethodSelectOption>>;\n  customMethods?: CustomMethod[];\n  onAuthMethodSelect: (authType: AuthMethod | CustomMethodId) => void;\n  basicAuth?: Omit<BasicAuthProps, 'readOnly'>;\n  readOnly: boolean;\n};\n\nexport const AuthMethodSettings = ({\n  selectedMethod,\n  mostCommonMethod,\n  visibleMethods: visibleMethodsFromProps,\n  defaultOptionsOverrides,\n  customMethods,\n  onAuthMethodSelect,\n  basicAuth,\n  readOnly,\n}: Props) => {\n  const [authMethodChanged, setAuthMethodChanged] = useState(false);\n  const { colors, spacing } = useTheme2();\n  const visibleMethods: Array<AuthMethod | CustomMethodId> = useMemo(\n    () =>\n      visibleMethodsFromProps ?? [\n        AuthMethod.BasicAuth,\n        AuthMethod.OAuthForward,\n        AuthMethod.NoAuth,\n        ...(customMethods?.map((m) => m.id) ?? []),\n      ],\n    [customMethods, visibleMethodsFromProps]\n  );\n  const hasSelect = visibleMethods.length > 1;\n\n  const preparedOptions = useMemo(() => {\n    const customOptions =\n      customMethods?.reduce<Record<CustomMethodId, SelectableValue<CustomMethodId>>>((acc, method) => {\n        acc[method.id] = {\n          label: method.label,\n          value: method.id,\n          description: method.description,\n        };\n        return acc;\n      }, {}) ?? {};\n\n    const preparedDefaultOptions = {} as Record<AuthMethod, SelectableValue<AuthMethod>>;\n    let k: keyof typeof AuthMethod;\n    for (k in defaultOptions) {\n      preparedDefaultOptions[k] = {\n        ...defaultOptions[k],\n        ...defaultOptionsOverrides?.[k],\n      };\n    }\n\n    const allOptions: Record<AuthMethod | CustomMethodId, SelectableValue<AuthMethod | CustomMethodId>> = {\n      ...customOptions,\n      ...preparedDefaultOptions,\n    };\n\n    return visibleMethods\n      .filter((method) => Boolean(allOptions[method]))\n      .map((method) => {\n        const option = allOptions[method];\n        if (method === mostCommonMethod && hasSelect) {\n          return {\n            ...option,\n            label: `${option.label} (most common)`,\n          };\n        }\n        return option;\n      });\n  }, [visibleMethods, customMethods, defaultOptionsOverrides, mostCommonMethod, hasSelect]);\n\n  let selected = selectedMethod;\n  if (!hasSelect) {\n    selected = visibleMethods[0];\n  } else if (selectedMethod === AuthMethod.NoAuth && mostCommonMethod && !authMethodChanged) {\n    selected = mostCommonMethod;\n  }\n\n  let AuthFieldsComponent: ReactElement | null = null;\n  if (selected === AuthMethod.BasicAuth && basicAuth) {\n    AuthFieldsComponent = <BasicAuth {...basicAuth} readOnly={readOnly} />;\n  } else if (selected.startsWith('custom-')) {\n    AuthFieldsComponent = customMethods?.find((m) => m.id === selected)?.component ?? null;\n  }\n\n  const title = hasSelect ? 'Authentication methods' : (preparedOptions[0].label ?? '');\n\n  const description = hasSelect\n    ? 'Choose an authentication method to access the data source'\n    : (preparedOptions[0].description ?? '');\n\n  const styles = {\n    authMethods: css({\n      marginTop: spacing(2.5),\n      ...(hasSelect && {\n        padding: spacing(2),\n        border: `1px solid ${colors.border.weak}`,\n      }),\n    }),\n    selectedMethodFields: css({\n      marginTop: spacing(1.5),\n    }),\n  };\n\n  return (\n    <ConfigSubSection title={title} description={description}>\n      <div className={styles.authMethods}>\n        {hasSelect && (\n          <Field label=\"Authentication method\">\n            <Select\n              inputId=\"auth-method-select\"\n              options={preparedOptions}\n              value={selected}\n              onChange={(option) => {\n                setAuthMethodChanged(true);\n                onAuthMethodSelect(option.value!);\n              }}\n              disabled={readOnly}\n            />\n          </Field>\n        )}\n        {AuthFieldsComponent && <div className={styles.selectedMethodFields}>{AuthFieldsComponent}</div>}\n      </div>\n    </ConfigSubSection>\n  );\n};\n","import React from 'react';\nimport { css } from '@emotion/css';\nimport { Checkbox, Tooltip, Icon, useTheme2 } from '@grafana/ui';\n\nexport type Props = {\n  enabled: boolean;\n  label: string;\n  tooltipText: string;\n  onToggle: (enabled: boolean) => void;\n  readOnly: boolean;\n};\n\nexport const TLSSettingsSection = ({\n  children,\n  enabled,\n  label,\n  tooltipText,\n  onToggle,\n  readOnly,\n}: React.PropsWithChildren<Props>) => {\n  const { colors, spacing } = useTheme2();\n  const styles = {\n    container: css({\n      marginTop: 3,\n    }),\n    checkboxContainer: css({\n      display: 'flex',\n      alignItems: 'center',\n    }),\n    infoIcon: css({\n      marginTop: -2,\n      marginLeft: 5,\n      color: colors.text.secondary,\n    }),\n    content: css({\n      margin: spacing(1, 0, 2, 3),\n    }),\n  };\n\n  return (\n    <div className={styles.container}>\n      <div className={styles.checkboxContainer}>\n        <Checkbox value={enabled} label={label} onChange={() => onToggle(!enabled)} disabled={readOnly} />\n        <Tooltip placement=\"top\" content={tooltipText} interactive>\n          <Icon name=\"info-circle\" className={styles.infoIcon} size=\"sm\" />\n        </Tooltip>\n      </div>\n      {enabled && children && <div className={styles.content}>{children}</div>}\n    </div>\n  );\n};\n","import React from 'react';\nimport { cx } from '@emotion/css';\nimport { InlineField, SecretTextArea } from '@grafana/ui';\nimport { TLSSettingsSection } from './TLSSettingsSection';\nimport { useCommonStyles } from '../styles';\n\nexport type Props = {\n  enabled: boolean;\n  onToggle: (enabled: boolean) => void;\n  certificateConfigured: boolean;\n  onCertificateChange: (certificate: string) => void;\n  onCertificateReset: () => void;\n  tooltips?: {\n    certificateLabel?: string;\n  };\n  readOnly: boolean;\n};\n\nexport const SelfSignedCertificate = ({\n  enabled,\n  certificateConfigured,\n  onToggle,\n  onCertificateChange,\n  onCertificateReset,\n  tooltips,\n  readOnly,\n}: Props) => {\n  const commonStyles = useCommonStyles();\n\n  return (\n    <TLSSettingsSection\n      enabled={enabled}\n      label=\"Add self-signed certificate\"\n      tooltipText=\"Add your own Certificate Authority (CA) certificate on top of one generated by the certificate authorities for additional security measures\"\n      onToggle={(newEnabled) => onToggle(newEnabled)}\n      readOnly={readOnly}\n    >\n      <InlineField\n        label=\"CA Certificate\"\n        labelWidth={24}\n        tooltip={tooltips?.certificateLabel ?? 'Your self-signed certificate'}\n        required\n        htmlFor=\"self-signed-certificate-input\"\n        interactive\n        grow\n        className={cx(commonStyles.inlineFieldNoMarginRight, commonStyles.inlineFieldWithSecret)}\n        disabled={readOnly}\n      >\n        <SecretTextArea\n          id=\"self-signed-certificate-input\"\n          isConfigured={certificateConfigured}\n          onChange={(e) => onCertificateChange(e.currentTarget.value)}\n          onReset={readOnly ? () => {} : onCertificateReset}\n          placeholder=\"Begins with --- BEGIN CERTIFICATE ---\"\n          rows={6}\n          required\n        />\n      </InlineField>\n    </TLSSettingsSection>\n  );\n};\n","import { cx } from '@emotion/css';\nimport { InlineField, Input, SecretTextArea } from '@grafana/ui';\nimport React from 'react';\nimport { useCommonStyles } from '../styles';\nimport { TLSSettingsSection } from './TLSSettingsSection';\n\nexport type Props = {\n  enabled: boolean;\n  onToggle: (enabled: boolean) => void;\n  serverName: string;\n  clientCertificateConfigured: boolean;\n  clientKeyConfigured: boolean;\n  onServerNameChange: (serverName: string) => void;\n  onClientCertificateChange: (clientCertificate: string) => void;\n  onClientKeyChange: (clientKey: string) => void;\n  onClientCertificateReset: () => void;\n  onClientKeyReset: () => void;\n  tooltips?: {\n    serverNameLabel?: string;\n    certificateLabel?: string;\n    keyLabel?: string;\n  };\n  readOnly: boolean;\n};\n\nexport const TLSClientAuth = ({\n  enabled,\n  serverName,\n  clientCertificateConfigured,\n  clientKeyConfigured,\n  onToggle,\n  onServerNameChange,\n  onClientCertificateChange,\n  onClientKeyChange,\n  onClientCertificateReset,\n  onClientKeyReset,\n  tooltips,\n  readOnly,\n}: Props) => {\n  const commonStyles = useCommonStyles();\n\n  return (\n    <TLSSettingsSection\n      enabled={enabled}\n      label=\"TLS Client Authentication\"\n      tooltipText=\"Validate using TLS client authentication, in which the server authenticates the client\"\n      onToggle={(newEnabled) => onToggle(newEnabled)}\n      readOnly={readOnly}\n    >\n      <InlineField\n        label=\"ServerName\"\n        labelWidth={24}\n        tooltip={tooltips?.serverNameLabel ?? 'A Servername is used to verify the hostname on the returned certificate'}\n        required\n        htmlFor=\"client-auth-servername-input\"\n        interactive\n        grow\n        className={commonStyles.inlineFieldNoMarginRight}\n        disabled={readOnly}\n      >\n        <Input\n          id=\"client-auth-servername-input\"\n          placeholder=\"domain.example.com\"\n          value={serverName}\n          onChange={(e) => onServerNameChange(e.currentTarget.value)}\n          required\n          width={40}\n        />\n      </InlineField>\n      <InlineField\n        label=\"Client Certificate\"\n        labelWidth={24}\n        tooltip={\n          tooltips?.certificateLabel ??\n          'The client certificate can be generated from a Certificate Authority or be self-signed'\n        }\n        required\n        htmlFor=\"client-auth-client-certificate-input\"\n        interactive\n        grow\n        className={cx(commonStyles.inlineFieldNoMarginRight, commonStyles.inlineFieldWithSecret)}\n        disabled={readOnly}\n      >\n        <SecretTextArea\n          id=\"client-auth-client-certificate-input\"\n          isConfigured={clientCertificateConfigured}\n          onChange={(e) => onClientCertificateChange(e.currentTarget.value)}\n          onReset={readOnly ? () => {} : onClientCertificateReset}\n          placeholder=\"Begins with --- BEGIN CERTIFICATE ---\"\n          rows={6}\n          required\n          cols={36}\n        />\n      </InlineField>\n      <InlineField\n        label=\"Client Key\"\n        labelWidth={24}\n        tooltip={tooltips?.keyLabel ?? 'The client key can be generated from a Certificate Authority or be self-signed'}\n        required\n        htmlFor=\"client-auth-client-key-input\"\n        interactive\n        grow\n        className={cx(commonStyles.inlineFieldNoMarginRight, commonStyles.inlineFieldWithSecret)}\n        disabled={readOnly}\n      >\n        <SecretTextArea\n          id=\"client-auth-client-key-input\"\n          isConfigured={clientKeyConfigured}\n          onChange={(e) => onClientKeyChange(e.currentTarget.value)}\n          onReset={readOnly ? () => {} : onClientKeyReset}\n          placeholder={`Begins with --- RSA PRIVATE KEY CERTIFICATE ---`}\n          rows={6}\n          required\n          cols={36}\n        />\n      </InlineField>\n    </TLSSettingsSection>\n  );\n};\n","import React from 'react';\nimport { TLSSettingsSection } from './TLSSettingsSection';\n\nexport type Props = {\n  enabled: boolean;\n  onToggle: (enabled: boolean) => void;\n  readOnly: boolean;\n};\n\nexport const SkipTLSVerification = ({ enabled, onToggle, readOnly }: Props) => {\n  return (\n    <TLSSettingsSection\n      enabled={enabled}\n      label=\"Skip TLS certificate validation\"\n      tooltipText=\"Skipping TLS certificate validation is not recommended unless absolutely necessary or for testing\"\n      onToggle={(newEnabled) => onToggle(newEnabled)}\n      readOnly={readOnly}\n    />\n  );\n};\n","import React from 'react';\nimport { css } from '@emotion/css';\nimport { useTheme2 } from '@grafana/ui';\nimport { SelfSignedCertificate, type Props as SelfSignedCertificateProps } from './SelfSignedCertificate';\nimport { TLSClientAuth as TLSClientAuthComponent, type Props as TLSClientAuthProps } from './TLSClientAuth';\nimport { SkipTLSVerification, type Props as SkipTLSVerificationProps } from './SkipTLSVerification';\nimport { ConfigSubSection } from '../../ConfigSection';\n\nexport type Props = {\n  selfSignedCertificate: Omit<SelfSignedCertificateProps, 'readOnly'>;\n  TLSClientAuth: Omit<TLSClientAuthProps, 'readOnly'>;\n  skipTLSVerification: Omit<SkipTLSVerificationProps, 'readOnly'>;\n  readOnly: boolean;\n};\n\nexport const TLSSettings = ({ selfSignedCertificate, TLSClientAuth, skipTLSVerification, readOnly }: Props) => {\n  const { spacing } = useTheme2();\n\n  const styles = {\n    container: css({\n      marginTop: spacing(3),\n    }),\n  };\n\n  return (\n    <ConfigSubSection\n      className={styles.container}\n      title=\"TLS settings\"\n      description=\"Additional security measures that can be applied on top of authentication\"\n    >\n      <SelfSignedCertificate {...selfSignedCertificate} readOnly={readOnly} />\n      <TLSClientAuthComponent {...TLSClientAuth} readOnly={readOnly} />\n      <SkipTLSVerification {...skipTLSVerification} readOnly={readOnly} />\n    </ConfigSubSection>\n  );\n};\n","import React from 'react';\nimport { css, cx } from '@emotion/css';\nimport { InlineFieldRow, InlineField, Input, IconButton, useTheme2, SecretInput } from '@grafana/ui';\nimport type { LocalHeader } from '../types';\nimport { useCommonStyles } from '../styles';\n\nexport type Props = {\n  header: LocalHeader;\n  onChange: (header: LocalHeader) => void;\n  onBlur: () => void;\n  onDelete: () => void;\n  readOnly: boolean;\n};\n\nexport const CustomHeader = ({ header, onChange, onBlur, onDelete, readOnly }: Props) => {\n  const { spacing } = useTheme2();\n  const commonStyles = useCommonStyles();\n  const styles = {\n    container: css({\n      alignItems: 'center',\n    }),\n    input: css({\n      minWidth: '100%',\n    }),\n    headerNameField: css({\n      width: '40%',\n      marginRight: 0,\n      paddingRight: spacing(1),\n    }),\n    headerValueField: css({\n      width: '45%',\n      marginRight: 0,\n    }),\n    removeHeaderBtn: css({\n      margin: `0 0 3px 10px`,\n    }),\n  };\n\n  return (\n    <>\n      <InlineFieldRow className={styles.container}>\n        <InlineField\n          label=\"Header\"\n          labelWidth={9}\n          grow\n          className={styles.headerNameField}\n          htmlFor={`custom-header-${header.id}-name-input`}\n          disabled={readOnly}\n        >\n          <Input\n            id={`custom-header-${header.id}-name-input`}\n            placeholder=\"X-Custom-Header\"\n            value={header.name}\n            width={12}\n            onChange={(e) => onChange({ ...header, name: e.currentTarget.value })}\n            onBlur={onBlur}\n            className={styles.input}\n          />\n        </InlineField>\n        <InlineField\n          label=\"Value\"\n          labelWidth={9}\n          grow\n          className={cx(commonStyles.inlineFieldWithSecret, styles.headerValueField)}\n          htmlFor={`custom-header-${header.id}-value-input`}\n          disabled={readOnly}\n        >\n          <SecretInput\n            id={`custom-header-${header.id}-value-input`}\n            isConfigured={header.configured}\n            placeholder=\"Header value\"\n            value={header.value}\n            width={12}\n            onChange={(e) => onChange({ ...header, value: e.currentTarget.value })}\n            onReset={readOnly ? () => {} : () => onChange({ ...header, configured: false, value: '' })}\n            onBlur={onBlur}\n            className={styles.input}\n          />\n        </InlineField>\n        <IconButton\n          name=\"trash-alt\"\n          tooltip=\"Remove header\"\n          tooltipPlacement=\"top\"\n          className={styles.removeHeaderBtn}\n          onClick={onDelete}\n          type=\"button\"\n          disabled={readOnly}\n        />\n      </InlineFieldRow>\n    </>\n  );\n};\n","import React, { useState, useEffect } from 'react';\nimport { css } from '@emotion/css';\nimport { Button, useTheme2 } from '@grafana/ui';\nimport { CustomHeader } from './CustomHeader';\nimport { ConfigSubSection } from '../../ConfigSection';\nimport type { Header, HeaderWithValue, LocalHeader } from '../types';\n\nexport type Props = {\n  headers: Header[];\n  onChange: (headers: HeaderWithValue[]) => void;\n  readOnly: boolean;\n};\n\nexport const CustomHeaders = ({ headers: headersFromProps, onChange, readOnly }: Props) => {\n  const { spacing } = useTheme2();\n\n  const [headers, setHeaders] = useState<LocalHeader[]>(\n    headersFromProps.map((header) => ({\n      ...header,\n      id: uniqueId(),\n      value: '',\n    }))\n  );\n\n  useEffect(() => {\n    setHeaders((headers) => {\n      let changed = false;\n      const newHeaders = headers.map<LocalHeader>((header) => {\n        const configured = headersFromProps.find((h) => h.name === header.name)?.configured;\n        if (typeof configured !== 'undefined' && header.configured !== configured) {\n          changed = true;\n          return { ...header, configured };\n        }\n        return header;\n      });\n\n      if (changed) {\n        return newHeaders;\n      }\n\n      return headers;\n    });\n  }, [headersFromProps]);\n\n  const onHeaderAdd = () => {\n    setHeaders([...headers, { id: uniqueId(), name: '', value: '', configured: false }]);\n  };\n\n  const onHeaderChange = (id: string, header: LocalHeader) => {\n    setHeaders(headers.map((h) => (h.id === id ? { ...header } : h)));\n  };\n\n  const onHeaderDelete = (id: string) => {\n    const index = headers.findIndex((h) => h.id === id);\n    if (index === -1) {\n      return;\n    }\n    const newHeaders = [...headers];\n    newHeaders.splice(index, 1);\n    setHeaders(newHeaders);\n    onChange(\n      newHeaders.map(({ name, value, configured }) => ({\n        name,\n        value,\n        configured,\n      }))\n    );\n  };\n\n  const onBlur = () => {\n    onChange(\n      headers.map(({ name, value, configured }) => ({\n        name,\n        value,\n        configured,\n      }))\n    );\n  };\n\n  const styles = {\n    container: css({\n      marginTop: spacing(3),\n    }),\n    addHeaderButton: css({\n      marginTop: spacing(1.5),\n    }),\n  };\n\n  return (\n    <div className={styles.container}>\n      <ConfigSubSection\n        title=\"HTTP headers\"\n        description=\"Pass along additional context and metadata about the request/response\"\n        isCollapsible\n        isInitiallyOpen={headers.length > 0}\n      >\n        <div>\n          {headers.map((header) => (\n            <CustomHeader\n              key={header.id}\n              header={header}\n              onChange={(header) => onHeaderChange(header.id, header)}\n              onDelete={() => onHeaderDelete(header.id)}\n              onBlur={onBlur}\n              readOnly={readOnly}\n            />\n          ))}\n        </div>\n        <div className={styles.addHeaderButton}>\n          <Button icon=\"plus\" variant=\"secondary\" fill=\"outline\" onClick={onHeaderAdd} disabled={readOnly}>\n            {headers.length === 0 ? 'Add header' : 'Add another header'}\n          </Button>\n        </div>\n      </ConfigSubSection>\n    </div>\n  );\n};\n\nfunction uniqueId(): string {\n  return Math.random().toString(16).slice(2);\n}\n","import React from 'react';\nimport { css } from '@emotion/css';\nimport { type AuthMethod, type AuthMethodSelectOption, type CustomMethod, type CustomMethodId } from './types';\nimport { AuthMethodSettings } from './auth-method/AuthMethodSettings';\nimport { TLSSettings, type Props as TLSSettingsProps } from './tls/TLSSettings';\nimport { type Props as BasicAuthProps } from './auth-method/BasicAuth';\nimport { CustomHeaders, type Props as CustomHeadersProps } from './custom-headers/CustomHeaders';\nimport { ConfigSection } from '../ConfigSection';\n\nexport type Props = {\n  selectedMethod: AuthMethod | CustomMethodId;\n  mostCommonMethod?: AuthMethod | CustomMethodId;\n  visibleMethods?: Array<AuthMethod | CustomMethodId>;\n  defaultOptionsOverrides?: Partial<Record<AuthMethod, AuthMethodSelectOption>>;\n  customMethods?: CustomMethod[];\n  onAuthMethodSelect: (authType: AuthMethod | CustomMethodId) => void;\n  basicAuth?: Omit<BasicAuthProps, 'readOnly'>;\n  TLS?: Omit<TLSSettingsProps, 'readOnly'>;\n  customHeaders?: Omit<CustomHeadersProps, 'readOnly'>;\n  readOnly?: boolean;\n};\n\nexport const Auth = ({\n  selectedMethod,\n  mostCommonMethod,\n  visibleMethods,\n  defaultOptionsOverrides,\n  customMethods,\n  onAuthMethodSelect,\n  basicAuth,\n  TLS,\n  customHeaders,\n  readOnly = false,\n}: Props) => {\n  const styles = {\n    container: css({\n      maxWidth: 578,\n    }),\n  };\n\n  return (\n    <div className={styles.container}>\n      <ConfigSection title=\"Authentication\">\n        <AuthMethodSettings\n          selectedMethod={selectedMethod}\n          mostCommonMethod={mostCommonMethod}\n          customMethods={customMethods}\n          visibleMethods={visibleMethods}\n          defaultOptionsOverrides={defaultOptionsOverrides}\n          onAuthMethodSelect={onAuthMethodSelect}\n          basicAuth={basicAuth}\n          readOnly={readOnly}\n        />\n        {TLS && <TLSSettings {...TLS} readOnly={readOnly} />}\n        {customHeaders && <CustomHeaders {...customHeaders} readOnly={readOnly} />}\n      </ConfigSection>\n    </div>\n  );\n};\n","import { type Props as AuthProps } from './Auth';\nimport { AuthMethod, type Header, type CustomMethodId } from './types';\nimport { type Config, type OnChangeHandler } from '../types';\n\nconst headerNamePrefix = 'httpHeaderName';\nconst headerValuePrefix = 'httpHeaderValue';\n\nexport function convertLegacyAuthProps<C extends Config = Config>({\n  config,\n  onChange,\n}: {\n  config: C;\n  onChange: OnChangeHandler<C>;\n}): AuthProps {\n  const props: AuthProps = {\n    selectedMethod: getSelectedMethod<C>(config),\n    onAuthMethodSelect: getOnAuthMethodSelectHandler<C>(config, onChange),\n    basicAuth: getBasicAuthProps<C>(config, onChange),\n    TLS: getTLSProps<C>(config, onChange),\n    customHeaders: getCustomHeaders<C>(config, onChange),\n    readOnly: config.readOnly,\n  };\n\n  return props;\n}\n\nexport function getSelectedMethod<C extends Config = Config>(config: C): AuthMethod {\n  if (config.basicAuth) {\n    return AuthMethod.BasicAuth;\n  }\n  if (config.withCredentials) {\n    return AuthMethod.CrossSiteCredentials;\n  }\n  if (config.jsonData.oauthPassThru) {\n    return AuthMethod.OAuthForward;\n  }\n  return AuthMethod.NoAuth;\n}\n\nexport function getOnAuthMethodSelectHandler<C extends Config = Config>(\n  config: C,\n  onChange: OnChangeHandler<C>\n): (method: AuthMethod | CustomMethodId) => void {\n  return (method: AuthMethod | CustomMethodId) => {\n    onChange({\n      ...config,\n      basicAuth: method === AuthMethod.BasicAuth,\n      withCredentials: method === AuthMethod.CrossSiteCredentials,\n      jsonData: {\n        ...config.jsonData,\n        oauthPassThru: method === AuthMethod.OAuthForward,\n      },\n    });\n  };\n}\n\nexport function getBasicAuthProps<C extends Config = Config>(\n  config: C,\n  onChange: OnChangeHandler<C>\n): AuthProps['basicAuth'] {\n  return {\n    user: config.basicAuthUser,\n    passwordConfigured: config.secureJsonFields.basicAuthPassword,\n    onUserChange: (user: string) => onChange({ ...config, basicAuthUser: user }),\n    onPasswordChange: (password: string) =>\n      onChange({\n        ...config,\n        secureJsonData: {\n          ...config.secureJsonData,\n          basicAuthPassword: password,\n        },\n      }),\n    onPasswordReset: () =>\n      onChange({\n        ...config,\n        secureJsonData: { ...config.secureJsonData, basicAuthPassword: '' },\n        secureJsonFields: {\n          ...config.secureJsonFields,\n          basicAuthPassword: false,\n        },\n      }),\n  };\n}\n\nexport function getTLSProps<C extends Config = Config>(config: C, onChange: OnChangeHandler<C>): AuthProps['TLS'] {\n  return {\n    selfSignedCertificate: {\n      enabled: Boolean(config.jsonData.tlsAuthWithCACert),\n      certificateConfigured: !!config.secureJsonFields?.tlsCACert,\n      onToggle: (enabled) =>\n        enabled\n          ? onChange({\n              ...config,\n              jsonData: { ...config.jsonData, tlsAuthWithCACert: enabled },\n            })\n          : onChange({\n              ...config,\n              jsonData: { ...config.jsonData, tlsAuthWithCACert: enabled },\n              secureJsonData: { ...config.secureJsonData, tlsCACert: '' },\n              secureJsonFields: { ...config.secureJsonFields, tlsCACert: false },\n            }),\n      onCertificateChange: (certificate) =>\n        onChange({\n          ...config,\n          secureJsonData: { ...config.secureJsonData, tlsCACert: certificate },\n        }),\n      onCertificateReset: () =>\n        onChange({\n          ...config,\n          secureJsonData: { ...config.secureJsonData, tlsCACert: '' },\n          secureJsonFields: { ...config.secureJsonFields, tlsCACert: false },\n        }),\n    },\n    TLSClientAuth: {\n      enabled: config.jsonData.tlsAuth,\n      serverName: config.jsonData.serverName,\n      clientCertificateConfigured: !!config.secureJsonFields?.tlsClientCert,\n      clientKeyConfigured: !!config.secureJsonFields?.tlsClientKey,\n      onToggle: (enabled) =>\n        enabled\n          ? onChange({\n              ...config,\n              jsonData: { ...config.jsonData, tlsAuth: enabled },\n            })\n          : onChange({\n              ...config,\n              jsonData: { ...config.jsonData, tlsAuth: enabled, serverName: '' },\n              secureJsonData: { ...config.secureJsonData, tlsClientCert: '', tlsClientKey: '' },\n              secureJsonFields: { ...config.secureJsonFields, tlsClientCert: false, tlsClientKey: false },\n            }),\n      onServerNameChange: (serverName) =>\n        onChange({\n          ...config,\n          jsonData: { ...config.jsonData, serverName },\n        }),\n      onClientCertificateChange: (clientCertificate) =>\n        onChange({\n          ...config,\n          secureJsonData: {\n            ...config.secureJsonData,\n            tlsClientCert: clientCertificate,\n          },\n        }),\n      onClientCertificateReset: () =>\n        onChange({\n          ...config,\n          secureJsonData: {\n            ...config.secureJsonData,\n            tlsClientCert: '',\n          },\n          secureJsonFields: {\n            ...config.secureJsonFields,\n            tlsClientCert: false,\n          },\n        }),\n      onClientKeyChange: (clientKey) =>\n        onChange({\n          ...config,\n          secureJsonData: {\n            ...config.secureJsonData,\n            tlsClientKey: clientKey,\n          },\n        }),\n      onClientKeyReset: () =>\n        onChange({\n          ...config,\n          secureJsonData: {\n            ...config.secureJsonData,\n            tlsClientKey: '',\n          },\n          secureJsonFields: {\n            ...config.secureJsonFields,\n            tlsClientKey: false,\n          },\n        }),\n    },\n    skipTLSVerification: {\n      enabled: config.jsonData.tlsSkipVerify,\n      onToggle: (enabled) =>\n        onChange({\n          ...config,\n          jsonData: { ...config.jsonData, tlsSkipVerify: enabled },\n        }),\n    },\n  };\n}\n\nexport function getCustomHeaders<C extends Config = Config>(\n  config: C,\n  onChange: OnChangeHandler<C>\n): AuthProps['customHeaders'] {\n  const headers: Header[] = Object.keys(config.jsonData)\n    .filter((key) => key.startsWith(headerNamePrefix))\n    .sort()\n    .map((key) => {\n      const index = key.slice(headerNamePrefix.length);\n      return {\n        name: config.jsonData[key],\n        configured: config.secureJsonFields[`${headerValuePrefix}${index}`] ?? false,\n      };\n    });\n\n  return {\n    headers,\n    onChange: (headers) => {\n      const newJsonData = Object.fromEntries(\n        Object.entries(config.jsonData).filter(([key]) => !key.startsWith(headerNamePrefix))\n      );\n      const newSecureJsonData = Object.fromEntries(\n        Object.entries(config.secureJsonData || {}).filter(([key]) => !key.startsWith(headerValuePrefix))\n      );\n      const newSecureJsonFields = Object.fromEntries(\n        Object.entries(config.secureJsonFields).filter(([key]) => !key.startsWith(headerValuePrefix))\n      );\n\n      headers.forEach((header, index) => {\n        newJsonData[`${headerNamePrefix}${index + 1}`] = header.name;\n        if (header.configured) {\n          newSecureJsonFields[`${headerValuePrefix}${index + 1}`] = true;\n        } else {\n          newSecureJsonData[`${headerValuePrefix}${index + 1}`] = header.value;\n        }\n      });\n\n      onChange({\n        ...config,\n        jsonData: newJsonData,\n        secureJsonData: newSecureJsonData,\n        secureJsonFields: newSecureJsonFields,\n      });\n    },\n  };\n}\n","import React, { type ReactNode } from 'react';\nimport { css, cx } from '@emotion/css';\nimport { InlineField, Input, type PopoverContent } from '@grafana/ui';\nimport { ConfigSection } from '../ConfigSection';\nimport { type Config, type OnChangeHandler } from '../types';\n\nexport type Props<C extends Config = Config> = {\n  config: C;\n  onChange: OnChangeHandler<C>;\n  description?: ReactNode;\n  urlPlaceholder?: string;\n  urlTooltip?: PopoverContent;\n  urlLabel?: string;\n  className?: string;\n};\n\nexport const ConnectionSettings: <C extends Config = Config>(props: Props<C>) => JSX.Element = ({\n  config,\n  onChange,\n  description,\n  urlPlaceholder,\n  urlTooltip,\n  urlLabel,\n  className,\n}) => {\n  const isValidUrl =\n    config.url !== undefined &&\n    /^(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?$/.test(config.url);\n\n  const styles = {\n    container: css({\n      maxWidth: 578,\n    }),\n  };\n\n  return (\n    <>\n      <ConfigSection title=\"Connection\" description={description} className={cx(styles.container, className)}>\n        <InlineField\n          htmlFor=\"connection-url\"\n          label={urlLabel || 'URL'}\n          labelWidth={24}\n          tooltip={\n            urlTooltip || (\n              <>\n                Specify a complete HTTP URL\n                <br />\n                (for example https://example.com:8080)\n              </>\n            )\n          }\n          grow\n          disabled={config.readOnly}\n          required\n          invalid={!isValidUrl && !config.readOnly}\n          error={isValidUrl ? '' : 'Please enter a valid URL'}\n          interactive\n        >\n          <Input\n            id=\"connection-url\"\n            aria-label=\"Data source connection URL\"\n            onChange={(event) =>\n              onChange({\n                ...config,\n                url: event.currentTarget.value,\n              })\n            }\n            value={config.url || ''}\n            placeholder={urlPlaceholder || 'URL'}\n          />\n        </InlineField>\n      </ConfigSection>\n    </>\n  );\n};\n","import React from 'react';\nimport { css, cx } from '@emotion/css';\nimport { InlineField, Input, TagsInput } from '@grafana/ui';\nimport { ConfigSubSection } from '../ConfigSection';\nimport { type Config, type OnChangeHandler } from '../types';\n\nexport type Props<C extends Config = Config> = {\n  config: C;\n  onChange: OnChangeHandler<C>;\n  className?: string;\n};\n\nexport const AdvancedHttpSettings: <C extends Config = Config>(props: Props<C>) => JSX.Element = ({\n  config,\n  onChange,\n  className,\n}) => {\n  const onCookiesChange = (cookies: string[]) => {\n    onChange({\n      ...config,\n      jsonData: {\n        ...config.jsonData,\n        keepCookies: cookies,\n      },\n    });\n  };\n\n  const onTimeoutChange = (event: React.FormEvent<HTMLInputElement>) => {\n    onChange({\n      ...config,\n      jsonData: {\n        ...config.jsonData,\n        timeout: parseInt(event.currentTarget.value, 10),\n      },\n    });\n  };\n\n  const styles = {\n    container: css({\n      maxWidth: 578,\n    }),\n  };\n\n  return (\n    <ConfigSubSection title=\"Advanced HTTP settings\" className={cx(styles.container, className)}>\n      <InlineField\n        htmlFor=\"advanced-http-cookies\"\n        label=\"Allowed cookies\"\n        labelWidth={24}\n        tooltip=\"Grafana proxy deletes forwarded cookies by default. Specify cookies by name that should be forwarded to the data source.\"\n        disabled={config.readOnly}\n        grow\n      >\n        <TagsInput\n          id=\"advanced-http-cookies\"\n          placeholder=\"New cookie (hit enter to add)\"\n          tags={config.jsonData.keepCookies}\n          onChange={onCookiesChange}\n        />\n      </InlineField>\n\n      <InlineField\n        htmlFor=\"advanced-http-timeout\"\n        label=\"Timeout\"\n        labelWidth={24}\n        tooltip=\"HTTP request timeout in seconds\"\n        disabled={config.readOnly}\n        grow\n      >\n        <Input\n          id=\"advanced-http-timeout\"\n          type=\"number\"\n          min={0}\n          placeholder=\"Timeout in seconds\"\n          aria-label=\"Timeout in seconds\"\n          value={config.jsonData.timeout}\n          onChange={onTimeoutChange}\n        />\n      </InlineField>\n    </ConfigSubSection>\n  );\n};\n","/**\n * CEL (Common Expression Language) expression evaluator for schema conditions.\n *\n * Used by `dependsOn`, `requiredWhen`, `disabledWhen`, and `overrides[].when`.\n * Wraps @marcbachmann/cel-js with field-ID-aware context building.\n *\n * Go equivalent: github.com/google/cel-go\n */\n\nimport { evaluate as celEvaluate, parse as celParse } from '@marcbachmann/cel-js';\n\n// ============================================================\n// Expression cache — parse once, evaluate many times\n// ============================================================\n\ntype CompiledExpr = (ctx: Record<string, unknown>) => unknown;\nconst exprCache = new Map<string, CompiledExpr | null>();\n\nfunction getCompiled(expr: string): CompiledExpr | null {\n  if (exprCache.has(expr)) {\n    return exprCache.get(expr)!;\n  }\n  try {\n    const compiled = celParse(expr);\n    exprCache.set(expr, compiled);\n    return compiled;\n  } catch {\n    exprCache.set(expr, null);\n    return null;\n  }\n}\n\n// ============================================================\n// Context builder — flat field values → nested object for CEL\n// ============================================================\n\n/**\n * Build a nested context object from flat form values keyed by field IDs.\n *\n * CEL interprets dots as property access, so `jsonData.auth_method == 'oauth2'`\n * requires `{ jsonData: { auth_method: 'oauth2' } }`.\n *\n * This function takes flat key-value pairs (from react-hook-form `watch()`)\n * and builds the nested structure CEL expects.\n *\n * @param values - Flat map of form keys to values (e.g. `{ \"auth_method\": \"oauth2\", \"oauth2.oauth2_type\": \"jwt\" }`)\n * @param fieldIdToFormKey - Optional map from field ID to form key for translation\n */\nexport function buildCelContext(values: Record<string, unknown>): Record<string, unknown> {\n  const ctx: Record<string, unknown> = {};\n\n  for (const [key, value] of Object.entries(values)) {\n    setNestedValue(ctx, key, value);\n  }\n\n  return ctx;\n}\n\nfunction setNestedValue(obj: Record<string, unknown>, path: string, value: unknown): void {\n  const parts = path.split('.');\n  let current = obj;\n  for (let i = 0; i < parts.length - 1; i++) {\n    const part = parts[i];\n    if (!(part in current) || typeof current[part] !== 'object' || current[part] === null) {\n      current[part] = {};\n    }\n    current = current[part] as Record<string, unknown>;\n  }\n  current[parts[parts.length - 1]] = value;\n}\n\n// ============================================================\n// Public API\n// ============================================================\n\n/**\n * Evaluate a CEL expression against a context of field values.\n * Returns the boolean result, or `defaultValue` if the expression is invalid.\n *\n * @example\n * ```ts\n * evaluateCelExpression(\"jsonData.auth_method == 'oauth2'\", { jsonData: { auth_method: 'oauth2' } })\n * // => true\n *\n * evaluateCelExpression(\"auth_method == 'oauth2' && oauth2_type == 'jwt'\", { auth_method: 'oauth2', oauth2_type: 'jwt' })\n * // => true\n * ```\n */\nexport function evaluateCelExpression(expr: string, context: Record<string, unknown>, defaultValue = false): boolean {\n  if (!expr || !expr.trim()) {\n    return defaultValue;\n  }\n\n  const compiled = getCompiled(expr);\n  if (!compiled) {\n    return defaultValue;\n  }\n\n  try {\n    const result = compiled(context);\n    return !!result;\n  } catch {\n    return defaultValue;\n  }\n}\n\n/**\n * Evaluate a CEL expression directly using `evaluate` (no caching).\n * Useful for one-off evaluations or testing.\n */\nexport function evaluateCelDirect(expr: string, context: Record<string, unknown>): unknown {\n  return celEvaluate(expr, context);\n}\n\n/**\n * Validate that a CEL expression can be parsed without errors.\n * Returns true if valid, false otherwise.\n */\nexport function isValidCelExpression(expr: string): boolean {\n  try {\n    celParse(expr);\n    return true;\n  } catch {\n    return false;\n  }\n}\n\n/**\n * Extract all field ID references from a simple expression.\n * Used by `resolveRequiredFieldsGroup` to find dependency relationships.\n *\n * For simple expressions like `fieldA == 'x'`, returns `['fieldA']`.\n * For compound expressions like `fieldA == 'x' && fieldB == 'y'`, returns `['fieldA', 'fieldB']`.\n *\n * This uses regex extraction (not AST walking) for simplicity and speed.\n */\nexport function extractFieldRefs(expr: string): string[] {\n  // Match identifiers (possibly dotted) that precede == or !=\n  const matches = expr.matchAll(/([\\w.]+)\\s*(?:==|!=)/g);\n  const refs = new Set<string>();\n  for (const m of matches) {\n    refs.add(m[1]);\n  }\n  return [...refs];\n}\n\n/**\n * Clear the expression cache. Useful for testing.\n */\nexport function clearExpressionCache(): void {\n  exprCache.clear();\n}\n","/**\n * Pure helper functions for working with DatasourceConfigSchema.\n *\n * Types are defined in schema.ts — import them from there directly.\n */\n\nimport { extractFieldRefs } from './cel';\nimport type { DatasourceConfigSchema, ConfigField, ConfigGroup, FieldOverride } from '../../../schema';\n\n/** A group paired with its resolved ConfigField objects (in fieldRefs order). */\nexport type ResolvedGroup = { group: ConfigGroup; fields: ConfigField[] };\n\n/**\n * Group ids that denote the authentication section. Registry schemas use the\n * full form `authentication`; `auth` is accepted for backwards compatibility\n * with older/short-form schemas.\n */\nexport const AUTH_GROUP_IDS: readonly string[] = ['authentication', 'auth'];\n\n/** Whether a group id denotes the authentication group. */\nexport function isAuthGroupId(id: string): boolean {\n  return AUTH_GROUP_IDS.includes(id);\n}\n\n/**\n * Resolve a schema's groups into arrays of ConfigField objects.\n * If the schema has no groups, returns a single group containing all non-virtual fields.\n */\nexport function resolveGroups(schema: DatasourceConfigSchema): ResolvedGroup[] {\n  const fieldMap = new Map<string, ConfigField>();\n  for (const f of schema.fields) {\n    fieldMap.set(f.id, f);\n  }\n\n  if (schema.groups && schema.groups.length > 0) {\n    return schema.groups\n      .slice()\n      .sort((a, b) => (a.order ?? 0) - (b.order ?? 0))\n      .map((g) => ({\n        group: g,\n        fields: g.fieldRefs.map((ref) => fieldMap.get(ref)).filter((f): f is ConfigField => f != null),\n      }));\n  }\n\n  // No groups: single step with all storage fields\n  const allFields = schema.fields.filter((f) => f.kind !== 'virtual' && !f.isItemField);\n  return [\n    {\n      group: { id: 'default', title: 'Configuration', fieldRefs: allFields.map((f) => f.id) },\n      fields: allFields,\n    },\n  ];\n}\n\n/**\n * Build a virtual \"Required\" group containing all required fields, any parent\n * fields they depend on (via `dependsOn`), and any child fields that depend on\n * required fields.  When the schema contains an authentication group (id\n * `authentication` or `auth`), its fields are also pulled in (auth is\n * effectively required for Prometheus/Loki/Tempo style datasources).  Fields\n * are returned in schema order and de-duplicated.\n * Returns `null` when the virtual group would be empty.\n */\nexport function resolveRequiredFieldsGroup(schema: DatasourceConfigSchema): ResolvedGroup | null {\n  const fieldMap = new Map<string, ConfigField>();\n  for (const f of schema.fields) {\n    fieldMap.set(f.id, f);\n  }\n\n  const requiredIds = new Set<string>();\n  for (const f of schema.fields) {\n    if (f.required || f.tags?.includes('pinned')) {\n      requiredIds.add(f.id);\n    }\n  }\n\n  // Include all fields from the authentication group as effectively required\n  const authGroup = schema.groups?.find((g) => isAuthGroupId(g.id));\n  if (authGroup) {\n    for (const ref of authGroup.fieldRefs) {\n      if (fieldMap.has(ref)) {\n        requiredIds.add(ref);\n      }\n    }\n  }\n\n  if (requiredIds.size === 0) {\n    return null;\n  }\n\n  const includeIds = new Set<string>();\n\n  // Required fields + parent fields they depend on\n  for (const id of requiredIds) {\n    includeIds.add(id);\n    const f = fieldMap.get(id);\n    if (f?.dependsOn) {\n      for (const ref of extractFieldRefs(f.dependsOn)) {\n        if (fieldMap.has(ref)) {\n          includeIds.add(ref);\n        }\n      }\n    }\n  }\n\n  // Child fields that depend on any required field\n  for (const f of schema.fields) {\n    if (f.dependsOn && !includeIds.has(f.id)) {\n      const refs = extractFieldRefs(f.dependsOn);\n      if (refs.some((ref) => requiredIds.has(ref))) {\n        includeIds.add(f.id);\n      }\n    }\n  }\n\n  const virtualFields = schema.fields.filter((f) => includeIds.has(f.id));\n  if (virtualFields.length === 0) {\n    return null;\n  }\n\n  return {\n    group: {\n      id: '_required',\n      title: 'General',\n      fieldRefs: virtualFields.map((f) => f.id),\n    },\n    fields: virtualFields,\n  };\n}\n\n/**\n * Unique form key for a field. Section-scoped fields (e.g. section:\"logs\", key:\"defaultTable\")\n * get a prefixed key (\"logs.defaultTable\") so they don't collide with top-level fields that\n * share the same key name.\n */\nexport function formKey(field: ConfigField): string {\n  return field.section ? `${field.section}.${field.key}` : field.key;\n}\n\n/**\n * Resolve a possibly-dotted key against watchedValues from react-hook-form.\n * RHF's `watch()` returns nested objects for dotted Controller names\n * (e.g. \"logs.otelEnabled\" → { logs: { otelEnabled: true } }),\n * so a flat `obj[\"logs.otelEnabled\"]` lookup misses.\n *\n * For dotted keys we must try the nested path **first**: react-hook-form's\n * Controller `onChange` writes nested objects via its internal `set()`, but\n * `reset()` may have created a flat dotted key with the same name.  After user\n * interaction the nested value is authoritative; the stale flat key must not\n * shadow it.  This mirrors RHF's own `get()` semantics (nested-first, flat\n * fallback).\n */\nexport function getWatchedValue(watchedValues: Record<string, unknown>, key: string): unknown {\n  // For dotted keys, prefer the nested path walk.\n  if (key.includes('.')) {\n    const parts = key.split('.');\n    let current: unknown = watchedValues;\n    for (const part of parts) {\n      if (current == null || typeof current !== 'object') {\n        // Nested path doesn't exist — fall back to flat key\n        return watchedValues[key];\n      }\n      current = (current as Record<string, unknown>)[part];\n    }\n    if (current !== undefined) {\n      return current;\n    }\n    // Nested walk yielded undefined — try flat key as fallback\n    return watchedValues[key];\n  }\n  // Non-dotted key: direct property access\n  return watchedValues[key];\n}\n\n/**\n * Parse a simple CEL-like dependsOn expression: \"fieldId == 'value'\" or \"fieldId != 'value'\".\n * Only single comparisons are supported — no &&, ||, or parentheses.\n * Field IDs may contain dots and underscores (e.g. \"jsonData.oauth2.oauth2_type\").\n * Values may be single-quoted, double-quoted, or unquoted literals (true/false/numbers).\n * Returns { field, value, negate } or null if unparseable.\n */\nexport function parseDependsOn(expr: string): { field: string; value: string; negate: boolean } | null {\n  // Match: fieldRef == 'value' | fieldRef == \"value\" | fieldRef == literal\n  // Field ref: word chars and dots, no parens/operators.\n  // Unquoted values: non-whitespace, no quotes, no logical operators.\n  const m = expr.match(/^([\\w.]+)\\s*(==|!=)\\s*(?:'([^']*)'|\"([^\"]*)\"|(\\S+))$/);\n  if (!m) {\n    return null;\n  }\n  return { field: m[1], value: (m[3] ?? m[4] ?? m[5]).trim(), negate: m[2] === '!=' };\n}\n\n/**\n * Evaluate a parsed dependsOn condition against a value.\n * Handles both == and != operators.\n */\nexport function evaluateDependsOn(parsed: { value: string; negate: boolean }, currentValue: unknown): boolean {\n  const matches = String(currentValue ?? '') === parsed.value;\n  return parsed.negate ? !matches : matches;\n}\n\n/**\n * Resolve the first matching override for a field given current form values.\n * Override `when` uses the same \"fieldId == 'value'\" syntax as dependsOn.\n * Returns the matching override or undefined if none match.\n */\nexport function resolveActiveOverride(\n  field: ConfigField,\n  watchedValues: Record<string, unknown>,\n  fieldById: Map<string, ConfigField>\n): FieldOverride | undefined {\n  if (!field.overrides || field.overrides.length === 0) {\n    return undefined;\n  }\n  for (const ov of field.overrides) {\n    const parsed = parseDependsOn(ov.when);\n    if (!parsed) {\n      continue;\n    }\n    const depField = fieldById.get(parsed.field);\n    const depKey = depField ? formKey(depField) : parsed.field;\n    if (evaluateDependsOn(parsed, getWatchedValue(watchedValues, depKey))) {\n      return ov;\n    }\n  }\n  return undefined;\n}\n\n/**\n * Resolve a field reference like \"root.basicAuth\" or \"jsonData.oauthPassThru\"\n * to its current value from a flat form values map, using the schema's field definitions.\n */\nfunction resolveFieldValue(ref: string, values: Record<string, unknown>, fields: ConfigField[]): unknown {\n  // Try direct match on formKey first\n  if (ref in values) {\n    return values[ref];\n  }\n  // Try matching by field ID → formKey\n  const field = fields.find((f) => f.id === ref);\n  if (field) {\n    const fk = formKey(field);\n    if (fk in values) {\n      return values[fk];\n    }\n  }\n  return undefined;\n}\n\n/**\n * Evaluate a simple computed.read expression against form values.\n * Supports patterns used in dsconfig schemas:\n *   - \"fieldRef == true ? 'a' : (fieldRef == true ? 'b' : 'c')\"\n *   - Simple ternary chains with equality checks\n * Falls back to the field's defaultValue if the expression can't be evaluated.\n */\nexport function evaluateComputedRead(expr: string, values: Record<string, unknown>, fields: ConfigField[]): unknown {\n  // Recursively evaluate ternary: condition ? trueVal : falseVal\n  function evalExpr(s: string): unknown {\n    s = s.trim();\n\n    // Strip outer parens\n    if (s.startsWith('(') && findMatchingParen(s, 0) === s.length - 1) {\n      s = s.slice(1, -1).trim();\n    }\n\n    // Ternary: find top-level \"?\"\n    const qIdx = findTopLevel(s, '?');\n    if (qIdx !== -1) {\n      const condition = s.slice(0, qIdx).trim();\n      const rest = s.slice(qIdx + 1);\n      const cIdx = findTopLevel(rest, ':');\n      if (cIdx !== -1) {\n        const trueExpr = rest.slice(0, cIdx).trim();\n        const falseExpr = rest.slice(cIdx + 1).trim();\n        return evalCondition(condition) ? evalExpr(trueExpr) : evalExpr(falseExpr);\n      }\n    }\n\n    // String literal\n    const strMatch = s.match(/^'([^']*)'$/) ?? s.match(/^\"([^\"]*)\"$/);\n    if (strMatch) {\n      return strMatch[1];\n    }\n    // Boolean/number literals\n    if (s === 'true') {\n      return true;\n    }\n    if (s === 'false') {\n      return false;\n    }\n    if (/^-?\\d+(\\.\\d+)?$/.test(s)) {\n      return Number(s);\n    }\n\n    // Field reference\n    return resolveFieldValue(s, values, fields);\n  }\n\n  function evalCondition(cond: string): boolean {\n    // \"ref == value\" or \"ref != value\"\n    const eqMatch = cond.match(/^(.+?)\\s*(==|!=)\\s*(.+)$/);\n    if (eqMatch) {\n      const left = evalExpr(eqMatch[1]);\n      const right = evalExpr(eqMatch[3]);\n      const eq = String(left) === String(right);\n      return eqMatch[2] === '==' ? eq : !eq;\n    }\n    // Truthy check\n    return !!evalExpr(cond);\n  }\n\n  function findMatchingParen(s: string, start: number): number {\n    let depth = 0;\n    for (let i = start; i < s.length; i++) {\n      if (s[i] === '(') {\n        depth++;\n      } else if (s[i] === ')') {\n        depth--;\n        if (depth === 0) {\n          return i;\n        }\n      }\n    }\n    return -1;\n  }\n\n  function findTopLevel(s: string, char: string): number {\n    let depth = 0;\n    let inStr: string | null = null;\n    for (let i = 0; i < s.length; i++) {\n      const c = s[i];\n      if (inStr) {\n        if (c === inStr) {\n          inStr = null;\n        }\n        continue;\n      }\n      if (c === \"'\" || c === '\"') {\n        inStr = c;\n        continue;\n      }\n      if (c === '(') {\n        depth++;\n        continue;\n      }\n      if (c === ')') {\n        depth--;\n        continue;\n      }\n      if (depth === 0 && c === char) {\n        return i;\n      }\n    }\n    return -1;\n  }\n\n  try {\n    return evalExpr(expr);\n  } catch {\n    return undefined;\n  }\n}\n\n/**\n * Compute initial values for all virtual fields that have storage.computed.read expressions.\n * Call after loading existing storage field values.\n */\nexport function computeVirtualFieldValues(\n  schema: DatasourceConfigSchema,\n  existingValues: Record<string, unknown>\n): Record<string, unknown> {\n  const virtualValues: Record<string, unknown> = {};\n  for (const field of schema.fields) {\n    if (field.kind !== 'virtual') {\n      continue;\n    }\n    const fk = formKey(field);\n    if (field.storage?.type === 'computed' && field.storage.read) {\n      const val = evaluateComputedRead(field.storage.read, existingValues, schema.fields);\n      if (val !== undefined) {\n        virtualValues[fk] = val;\n      } else if (field.defaultValue !== undefined) {\n        virtualValues[fk] = field.defaultValue;\n      }\n    } else if (field.defaultValue !== undefined) {\n      virtualValues[fk] = field.defaultValue;\n    }\n  }\n  return virtualValues;\n}\n","import React from 'react';\n\nvar isCheckBoxInput = (element) => element.type === 'checkbox';\n\nvar isDateObject = (value) => value instanceof Date;\n\nvar isNullOrUndefined = (value) => value == null;\n\nconst isObjectType = (value) => typeof value === 'object';\nvar isObject = (value) => !isNullOrUndefined(value) &&\n    !Array.isArray(value) &&\n    isObjectType(value) &&\n    !isDateObject(value);\n\nvar getEventValue = (event) => isObject(event) && event.target\n    ? isCheckBoxInput(event.target)\n        ? event.target.checked\n        : event.target.value\n    : event;\n\nvar isNameInFieldArray = (names, name) => name\n    .split('.')\n    .some((part, index, arr) => !isNaN(Number(part)) && names.has(arr.slice(0, index).join('.')));\n\nvar isPlainObject = (tempObject) => {\n    const prototypeCopy = tempObject.constructor && tempObject.constructor.prototype;\n    return (isObject(prototypeCopy) && prototypeCopy.hasOwnProperty('isPrototypeOf'));\n};\n\nvar isWeb = typeof window !== 'undefined' &&\n    typeof window.HTMLElement !== 'undefined' &&\n    typeof document !== 'undefined';\n\nfunction cloneObject(data) {\n    if (data instanceof Date) {\n        return new Date(data);\n    }\n    const isFileListInstance = typeof FileList !== 'undefined' && data instanceof FileList;\n    if (isWeb && (data instanceof Blob || isFileListInstance)) {\n        return data;\n    }\n    const isArray = Array.isArray(data);\n    if (!isArray && !(isObject(data) && isPlainObject(data))) {\n        return data;\n    }\n    const copy = isArray ? [] : Object.create(Object.getPrototypeOf(data));\n    for (const key in data) {\n        if (Object.prototype.hasOwnProperty.call(data, key)) {\n            copy[key] = cloneObject(data[key]);\n        }\n    }\n    return copy;\n}\n\nconst EVENTS = {\n    BLUR: 'blur',\n    FOCUS_OUT: 'focusout',\n    CHANGE: 'change',\n    SUBMIT: 'submit',\n    TRIGGER: 'trigger',\n    VALID: 'valid',\n};\nconst VALIDATION_MODE = {\n    onBlur: 'onBlur',\n    onChange: 'onChange',\n    onSubmit: 'onSubmit',\n    onTouched: 'onTouched',\n    all: 'all',\n};\nconst INPUT_VALIDATION_RULES = {\n    max: 'max',\n    min: 'min',\n    maxLength: 'maxLength',\n    minLength: 'minLength',\n    pattern: 'pattern',\n    required: 'required',\n    validate: 'validate',\n};\nconst ROOT_ERROR_TYPE = 'root';\nconst PROTOTYPE_KEYWORDS = ['__proto__', 'constructor', 'prototype'];\n\nconst IS_KEY_RE = /^\\w*$/;\nvar isKey = (value) => IS_KEY_RE.test(value);\n\nvar isUndefined = (val) => val === undefined;\n\nconst FIELD_PATH_RE = /[.[\\]'\"]/;\nvar stringToPath = (input) => input.split(FIELD_PATH_RE).filter(Boolean);\n\nvar get = (object, path, defaultValue) => {\n    if (!path || !isObject(object)) {\n        return defaultValue;\n    }\n    const paths = isKey(path) ? [path] : stringToPath(path);\n    if (paths.some((key) => PROTOTYPE_KEYWORDS.includes(key))) {\n        return defaultValue;\n    }\n    const result = paths.reduce((result, key) => {\n        return isNullOrUndefined(result) ? undefined : result[key];\n    }, object);\n    return isUndefined(result) || result === object\n        ? isUndefined(object[path])\n            ? defaultValue\n            : object[path]\n        : result;\n};\n\nvar isBoolean = (value) => typeof value === 'boolean';\n\nvar isFunction = (value) => typeof value === 'function';\n\nvar set = (object, path, value) => {\n    let index = -1;\n    const tempPath = isKey(path) ? [path] : stringToPath(path);\n    const length = tempPath.length;\n    const lastIndex = length - 1;\n    while (++index < length) {\n        const key = tempPath[index];\n        let newValue = value;\n        if (index !== lastIndex) {\n            const objValue = object[key];\n            newValue =\n                isObject(objValue) || Array.isArray(objValue)\n                    ? objValue\n                    : !isNaN(+tempPath[index + 1])\n                        ? []\n                        : {};\n        }\n        if (PROTOTYPE_KEYWORDS.includes(key)) {\n            return;\n        }\n        object[key] = newValue;\n        object = object[key];\n    }\n};\n\n/**\n * Separate context for `control` to prevent unnecessary rerenders.\n * Internal hooks that only need control use this instead of full form context.\n */\nconst HookFormControlContext = React.createContext(null);\nHookFormControlContext.displayName = 'HookFormControlContext';\n/**\n * @internal Internal hook to access only control from context.\n */\nconst useFormControlContext = () => React.useContext(HookFormControlContext);\n\nvar getProxyFormState = (formState, control, localProxyFormState, isRoot = true) => {\n    const result = {};\n    for (const key in formState) {\n        Object.defineProperty(result, key, {\n            get: () => {\n                const _key = key;\n                if (control._proxyFormState[_key] !== VALIDATION_MODE.all) {\n                    control._proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\n                }\n                localProxyFormState && (localProxyFormState[_key] = true);\n                return formState[_key];\n            },\n        });\n    }\n    return result;\n};\n\nconst useIsomorphicLayoutEffect = isWeb\n    ? React.useLayoutEffect\n    : React.useEffect;\n\n/**\n * This custom hook allows you to subscribe to each form state, and isolate the re-render at the custom hook level. It has its scope in terms of form state subscription, so it would not affect other useFormState and useForm. Using this hook can reduce the re-render impact on large and complex form application.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformstate) • [Demo](https://codesandbox.io/s/useformstate-75xly)\n *\n * @param props - include options on specify fields to subscribe. {@link UseFormStateReturn}\n *\n * @example\n * ```tsx\n * function App() {\n *   const { register, handleSubmit, control } = useForm({\n *     defaultValues: {\n *     firstName: \"firstName\"\n *   }});\n *   const { dirtyFields } = useFormState({\n *     control\n *   });\n *   const onSubmit = (data) => console.log(data);\n *\n *   return (\n *     <form onSubmit={handleSubmit(onSubmit)}>\n *       <input {...register(\"firstName\")} placeholder=\"First Name\" />\n *       {dirtyFields.firstName && <p>Field is dirty.</p>}\n *       <input type=\"submit\" />\n *     </form>\n *   );\n * }\n * ```\n */\nfunction useFormState(props) {\n    const formControl = useFormControlContext();\n    const { control = formControl, disabled, name, exact } = props || {};\n    const [formState, updateFormState] = React.useState(() => ({\n        ...control._formState,\n        defaultValues: control._defaultValues,\n    }));\n    const _localProxyFormState = React.useRef({\n        isDirty: false,\n        isLoading: false,\n        dirtyFields: false,\n        touchedFields: false,\n        validatingFields: false,\n        isValidating: false,\n        isValid: false,\n        errors: false,\n    });\n    useIsomorphicLayoutEffect(() => control._subscribe({\n        name,\n        formState: _localProxyFormState.current,\n        exact,\n        callback: (formState) => {\n            !disabled &&\n                updateFormState({\n                    ...control._formState,\n                    ...formState,\n                    defaultValues: control._defaultValues,\n                });\n        },\n    }), [name, disabled, exact]);\n    React.useEffect(() => {\n        _localProxyFormState.current.isValid && control._setValid(true);\n    }, [control]);\n    return React.useMemo(() => getProxyFormState(formState, control, _localProxyFormState.current, false), [formState, control]);\n}\n\nvar isString = (value) => typeof value === 'string';\n\nvar generateWatchOutput = (names, _names, formValues, isGlobal, defaultValue) => {\n    if (isString(names)) {\n        isGlobal && _names.watch.add(names);\n        return get(formValues, names, defaultValue);\n    }\n    if (Array.isArray(names)) {\n        return names.map((fieldName) => (isGlobal && _names.watch.add(fieldName),\n            get(formValues, fieldName)));\n    }\n    isGlobal && (_names.watchAll = true);\n    return formValues;\n};\n\nvar isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);\n\nconst isEmptyObjectWithCustomPrototype = (object, keys) => keys.length === 0 && !Array.isArray(object) && !isPlainObject(object);\nfunction deepEqual(object1, object2, visited = new WeakMap()) {\n    if (object1 === object2) {\n        return true;\n    }\n    if (isPrimitive(object1) || isPrimitive(object2)) {\n        return Object.is(object1, object2);\n    }\n    if (isDateObject(object1) && isDateObject(object2)) {\n        return Object.is(object1.getTime(), object2.getTime());\n    }\n    const keys1 = Object.keys(object1);\n    const keys2 = Object.keys(object2);\n    if (keys1.length !== keys2.length) {\n        return false;\n    }\n    if (isEmptyObjectWithCustomPrototype(object1, keys1) ||\n        isEmptyObjectWithCustomPrototype(object2, keys2)) {\n        return Object.is(object1, object2);\n    }\n    if (!keys1.length && Array.isArray(object1) !== Array.isArray(object2)) {\n        return false;\n    }\n    const visitedPairs = visited.get(object1);\n    if (visitedPairs && visitedPairs.has(object2)) {\n        return true;\n    }\n    if (visitedPairs) {\n        visitedPairs.add(object2);\n    }\n    else {\n        const ws = new WeakSet();\n        ws.add(object2);\n        visited.set(object1, ws);\n    }\n    for (const key of keys1) {\n        const val1 = object1[key];\n        if (!(key in object2)) {\n            return false;\n        }\n        if (key !== 'ref') {\n            const val2 = object2[key];\n            if ((isDateObject(val1) && isDateObject(val2)) ||\n                ((isObject(val1) || Array.isArray(val1)) &&\n                    (isObject(val2) || Array.isArray(val2)))\n                ? !deepEqual(val1, val2, visited)\n                : !Object.is(val1, val2)) {\n                return false;\n            }\n        }\n    }\n    return true;\n}\n\n/**\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/docs/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\n *\n * @example\n * ```tsx\n * const { control } = useForm();\n * const values = useWatch({\n *   name: \"fieldName\"\n *   control,\n * })\n * ```\n */\nfunction useWatch(props) {\n    const formControl = useFormControlContext();\n    const { control = formControl, name, defaultValue, disabled, exact, compute, } = props || {};\n    const _defaultValue = React.useRef(defaultValue);\n    const _compute = React.useRef(compute);\n    const _computeFormValues = React.useRef(undefined);\n    const _prevControl = React.useRef(control);\n    const _prevName = React.useRef(name);\n    _compute.current = compute;\n    const [value, updateValue] = React.useState(() => {\n        const defaultValue = control._getWatch(name, _defaultValue.current);\n        return _compute.current ? _compute.current(defaultValue) : defaultValue;\n    });\n    const getCurrentOutput = React.useCallback((values) => {\n        const formValues = generateWatchOutput(name, control._names, values || control._formValues, false, _defaultValue.current);\n        return _compute.current ? _compute.current(formValues) : formValues;\n    }, [control._formValues, control._names, name]);\n    const refreshValue = React.useCallback((values) => {\n        if (!disabled) {\n            const formValues = generateWatchOutput(name, control._names, values || control._formValues, false, _defaultValue.current);\n            if (_compute.current) {\n                const computedFormValues = _compute.current(formValues);\n                if (!deepEqual(computedFormValues, _computeFormValues.current)) {\n                    updateValue(computedFormValues);\n                    _computeFormValues.current = computedFormValues;\n                }\n            }\n            else {\n                updateValue(formValues);\n            }\n        }\n    }, [control._formValues, control._names, disabled, name]);\n    useIsomorphicLayoutEffect(() => {\n        if (_prevControl.current !== control ||\n            !deepEqual(_prevName.current, name)) {\n            _prevControl.current = control;\n            _prevName.current = name;\n            refreshValue();\n        }\n        return control._subscribe({\n            name,\n            formState: {\n                values: true,\n            },\n            exact,\n            callback: (formState) => {\n                refreshValue(formState.values);\n            },\n        });\n    }, [control, exact, name, refreshValue]);\n    React.useEffect(() => control._removeUnmounted());\n    // If name or control changed for this render, synchronously reflect the\n    // latest value so callers (like useController) see the correct value\n    // immediately on the same render.\n    // Optimize: Check control reference first before expensive deepEqual\n    const controlChanged = _prevControl.current !== control;\n    const prevName = _prevName.current;\n    // Cache the computed output to avoid duplicate calls within the same render\n    // We include shouldReturnImmediate in deps to ensure proper recomputation\n    const computedOutput = React.useMemo(() => {\n        if (disabled) {\n            return null;\n        }\n        const nameChanged = !controlChanged && !deepEqual(prevName, name);\n        const shouldReturnImmediate = controlChanged || nameChanged;\n        return shouldReturnImmediate ? getCurrentOutput() : null;\n    }, [disabled, controlChanged, name, prevName, getCurrentOutput]);\n    return computedOutput !== null ? computedOutput : value;\n}\n\n/**\n * Custom hook to work with controlled component, this function provide you with both form and field level state. Re-render is isolated at the hook level.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller) • [Demo](https://codesandbox.io/s/usecontroller-0o8px)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns field properties, field and form state. {@link UseControllerReturn}\n *\n * @example\n * ```tsx\n * function Input(props) {\n *   const { field, fieldState, formState } = useController(props);\n *   return (\n *     <div>\n *       <input {...field} placeholder={props.name} />\n *       <p>{fieldState.isTouched && \"Touched\"}</p>\n *       <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n *     </div>\n *   );\n * }\n * ```\n */\nfunction useController(props) {\n    const formControl = useFormControlContext();\n    const { name, disabled, control = formControl, shouldUnregister, defaultValue, exact = true, } = props;\n    const isArrayField = isNameInFieldArray(control._names.array, name);\n    const defaultValueMemo = React.useMemo(() => get(control._formValues, name, get(control._defaultValues, name, defaultValue)), [control, name, defaultValue]);\n    const value = useWatch({\n        control,\n        name,\n        defaultValue: defaultValueMemo,\n        exact,\n    });\n    const formState = useFormState({\n        control,\n        name,\n        exact,\n    });\n    const _props = React.useRef(props);\n    const _proxyRef = React.useRef(null);\n    const _registerProps = React.useRef(control.register(name, {\n        ...props.rules,\n        value,\n        ...(isBoolean(props.disabled) ? { disabled: props.disabled } : {}),\n    }));\n    _props.current = props;\n    const fieldState = React.useMemo(() => Object.defineProperties({}, {\n        invalid: {\n            enumerable: true,\n            get: () => !!get(formState.errors, name),\n        },\n        isDirty: {\n            enumerable: true,\n            get: () => !!get(formState.dirtyFields, name),\n        },\n        isTouched: {\n            enumerable: true,\n            get: () => !!get(formState.touchedFields, name),\n        },\n        isValidating: {\n            enumerable: true,\n            get: () => !!get(formState.validatingFields, name),\n        },\n        error: {\n            enumerable: true,\n            get: () => get(formState.errors, name),\n        },\n    }), [formState, name]);\n    const onChange = React.useCallback((event) => {\n        const value = getEventValue(event);\n        if (!get(control._fields, name)) {\n            _registerProps.current = control.register(name, {\n                ..._props.current.rules,\n                value,\n            });\n        }\n        return _registerProps.current.onChange({\n            target: {\n                value: getEventValue(event),\n                name: name,\n            },\n            type: EVENTS.CHANGE,\n        });\n    }, [name, control]);\n    const onBlur = React.useCallback(() => _registerProps.current.onBlur({\n        target: {\n            value: get(control._formValues, name),\n            name: name,\n        },\n        type: EVENTS.BLUR,\n    }), [name, control._formValues]);\n    const ref = React.useCallback((elm) => {\n        if (elm) {\n            _proxyRef.current = {\n                focus: () => isFunction(elm.focus) && elm.focus(),\n                select: () => isFunction(elm.select) && elm.select(),\n                setCustomValidity: (message) => isFunction(elm.setCustomValidity) && elm.setCustomValidity(message),\n                reportValidity: () => isFunction(elm.reportValidity) && elm.reportValidity(),\n            };\n        }\n        const field = get(control._fields, name);\n        if (field && field._f && elm) {\n            field._f.ref = _proxyRef.current;\n        }\n    }, [control._fields, name]);\n    const field = React.useMemo(() => ({\n        name,\n        value,\n        ...(isBoolean(disabled) || formState.disabled\n            ? { disabled: formState.disabled || disabled }\n            : {}),\n        onChange,\n        onBlur,\n        ref,\n    }), [name, disabled, formState.disabled, onChange, onBlur, ref, value]);\n    React.useEffect(() => {\n        const _shouldUnregisterField = control._options.shouldUnregister || shouldUnregister;\n        control.register(name, {\n            ..._props.current.rules,\n            ...(isBoolean(_props.current.disabled)\n                ? { disabled: _props.current.disabled }\n                : {}),\n        });\n        const updateMounted = (name, value) => {\n            const field = get(control._fields, name);\n            if (field && field._f) {\n                field._f.mount = value;\n            }\n        };\n        updateMounted(name, true);\n        if (_shouldUnregisterField) {\n            const value = cloneObject(get(shouldUnregister\n                ? control._defaultValues\n                : control._options.values || control._defaultValues, name, get(control._options.defaultValues, name, _props.current.defaultValue)));\n            set(control._defaultValues, name, value);\n            if (isUndefined(get(control._formValues, name))) {\n                set(control._formValues, name, value);\n            }\n        }\n        !isArrayField && control.register(name);\n        if (_proxyRef.current) {\n            const field = get(control._fields, name);\n            if (field && field._f) {\n                field._f.ref = _proxyRef.current;\n            }\n        }\n        return () => {\n            (isArrayField\n                ? _shouldUnregisterField && !control._state.action\n                : _shouldUnregisterField)\n                ? control.unregister(name)\n                : updateMounted(name, false);\n        };\n    }, [name, control, isArrayField, shouldUnregister]);\n    React.useEffect(() => {\n        control._setDisabledField({\n            disabled,\n            name,\n        });\n    }, [disabled, name, control]);\n    return React.useMemo(() => ({\n        field,\n        formState,\n        fieldState,\n    }), [field, formState, fieldState]);\n}\n\n/**\n * Component based on `useController` hook to work with controlled component.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usecontroller/controller) • [Demo](https://codesandbox.io/s/react-hook-form-v6-controller-ts-jwyzw) • [Video](https://www.youtube.com/watch?v=N2UNk_UCVyA)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns provide field handler functions, field and form state.\n *\n * @example\n * ```tsx\n * function App() {\n *   const { control } = useForm<FormValues>({\n *     defaultValues: {\n *       test: \"\"\n *     }\n *   });\n *\n *   return (\n *     <form>\n *       <Controller\n *         control={control}\n *         name=\"test\"\n *         render={({ field: { onChange, onBlur, value, ref }, formState, fieldState }) => (\n *           <>\n *             <input\n *               onChange={onChange} // send value to hook form\n *               onBlur={onBlur} // notify when input is touched\n *               value={value} // return updated value\n *               ref={ref} // set ref for focus management\n *             />\n *             <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n *             <p>{fieldState.isTouched ? \"touched\" : \"\"}</p>\n *           </>\n *         )}\n *       />\n *     </form>\n *   );\n * }\n * ```\n */\nconst Controller = (props) => props.render(useController(props));\n\nconst flatten = (obj) => {\n    const output = {};\n    for (const key of Object.keys(obj)) {\n        if (isObjectType(obj[key]) &&\n            obj[key] !== null &&\n            !isDateObject(obj[key])) {\n            const nested = flatten(obj[key]);\n            for (const nestedKey of Object.keys(nested)) {\n                output[`${key}.${nestedKey}`] = nested[nestedKey];\n            }\n        }\n        else {\n            output[key] = obj[key];\n        }\n    }\n    return output;\n};\n\nconst HookFormContext = React.createContext(null);\nHookFormContext.displayName = 'HookFormContext';\n/**\n * This custom hook allows you to access the form context. useFormContext is intended to be used in deeply nested structures, where it would become inconvenient to pass the context as a prop. To be used with {@link FormProvider}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @returns return all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n *   const methods = useForm();\n *   const onSubmit = data => console.log(data);\n *\n *   return (\n *     <FormProvider {...methods} >\n *       <form onSubmit={methods.handleSubmit(onSubmit)}>\n *         <NestedInput />\n *         <input type=\"submit\" />\n *       </form>\n *     </FormProvider>\n *   );\n * }\n *\n *  function NestedInput() {\n *   const { register } = useFormContext(); // retrieve all hook methods\n *   return <input {...register(\"test\")} />;\n * }\n * ```\n */\nconst useFormContext = () => React.useContext(HookFormContext);\n/**\n * A provider component that propagates the `useForm` methods to all children components via [React Context](https://react.dev/reference/react/useContext) API. To be used with {@link useFormContext}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @param props - all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n *   const methods = useForm();\n *   const onSubmit = data => console.log(data);\n *\n *   return (\n *     <FormProvider {...methods} >\n *       <form onSubmit={methods.handleSubmit(onSubmit)}>\n *         <NestedInput />\n *         <input type=\"submit\" />\n *       </form>\n *     </FormProvider>\n *   );\n * }\n *\n *  function NestedInput() {\n *   const { register } = useFormContext(); // retrieve all hook methods\n *   return <input {...register(\"test\")} />;\n * }\n * ```\n */\nconst FormProvider = ({ children, watch, getValues, getFieldState, setError, clearErrors, setValue, setValues, trigger, formState, resetField, reset, handleSubmit, unregister, control, register, setFocus, subscribe, }) => {\n    const memoizedValue = React.useMemo(() => ({\n        watch,\n        getValues,\n        getFieldState,\n        setError,\n        clearErrors,\n        setValue,\n        setValues,\n        trigger,\n        formState,\n        resetField,\n        reset,\n        handleSubmit,\n        unregister,\n        control,\n        register,\n        setFocus,\n        subscribe,\n    }), [\n        clearErrors,\n        control,\n        formState,\n        getFieldState,\n        getValues,\n        handleSubmit,\n        register,\n        reset,\n        resetField,\n        setError,\n        setFocus,\n        setValue,\n        setValues,\n        subscribe,\n        trigger,\n        unregister,\n        watch,\n    ]);\n    return (React.createElement(HookFormContext.Provider, { value: memoizedValue },\n        React.createElement(HookFormControlContext.Provider, { value: memoizedValue.control }, children)));\n};\n\nconst POST_REQUEST = 'post';\n/**\n * Form component to manage submission.\n *\n * @param props - to setup submission detail. {@link FormProps}\n *\n * @returns form component or headless render prop.\n *\n * @example\n * ```tsx\n * function App() {\n *   const { control, formState: { errors } } = useForm();\n *\n *   return (\n *     <Form action=\"/api\" control={control}>\n *       <input {...register(\"name\")} />\n *       <p>{errors?.root?.server && 'Server error'}</p>\n *       <button>Submit</button>\n *     </Form>\n *   );\n * }\n * ```\n */\nfunction Form(props) {\n    const methods = useFormContext();\n    const [mounted, setMounted] = React.useState(false);\n    const { control = methods.control, onSubmit, children, action, method = POST_REQUEST, headers, encType, onError, render, onSuccess, validateStatus, ...rest } = props;\n    const submit = React.useCallback(async (event) => {\n        let hasError = false;\n        let type = '';\n        await control.handleSubmit(async (data) => {\n            const formData = new FormData();\n            let formDataJson = '';\n            try {\n                formDataJson = JSON.stringify(data);\n            }\n            catch (_a) { }\n            const flattenFormValues = flatten(data);\n            for (const key in flattenFormValues) {\n                formData.append(key, flattenFormValues[key]);\n            }\n            if (onSubmit) {\n                await onSubmit({\n                    data,\n                    event,\n                    method,\n                    formData,\n                    formDataJson,\n                });\n            }\n            if (action) {\n                try {\n                    const shouldStringifySubmissionData = [\n                        headers && headers['Content-Type'],\n                        encType,\n                    ].some((value) => value && value.includes('json'));\n                    const response = await fetch(String(action), {\n                        method,\n                        headers: {\n                            ...headers,\n                            ...(encType && encType !== 'multipart/form-data'\n                                ? { 'Content-Type': encType }\n                                : {}),\n                        },\n                        body: shouldStringifySubmissionData ? formDataJson : formData,\n                    });\n                    if (response &&\n                        (validateStatus\n                            ? !validateStatus(response.status)\n                            : response.status < 200 || response.status >= 300)) {\n                        hasError = true;\n                        onError && onError({ response });\n                        type = String(response.status);\n                    }\n                    else {\n                        onSuccess && onSuccess({ response });\n                    }\n                }\n                catch (error) {\n                    hasError = true;\n                    onError && onError({ error });\n                }\n            }\n        })(event);\n        if (hasError && control) {\n            control._subjects.state.next({\n                isSubmitSuccessful: false,\n            });\n            control.setError('root.server', {\n                type,\n            });\n        }\n    }, [\n        control,\n        onSubmit,\n        method,\n        action,\n        headers,\n        encType,\n        validateStatus,\n        onError,\n        onSuccess,\n    ]);\n    React.useEffect(() => {\n        setMounted(true);\n    }, []);\n    return render ? (React.createElement(React.Fragment, null, render({\n        submit,\n    }))) : (React.createElement(\"form\", { noValidate: mounted, action: action, method: method, encType: encType, onSubmit: submit, ...rest }, children));\n}\n\nconst FormStateSubscribe = ({ control, disabled, exact, name, render, }) => render(useFormState({ control, name, disabled, exact }));\n\nvar appendErrors = (name, validateAllFieldCriteria, errors, type, message) => validateAllFieldCriteria\n    ? {\n        ...errors[name],\n        types: {\n            ...(errors[name] && errors[name].types ? errors[name].types : {}),\n            [type]: message || true,\n        },\n    }\n    : {};\n\nvar compact = (value) => Array.isArray(value) ? value.filter(Boolean) : [];\n\nvar convertToArrayPayload = (value) => (Array.isArray(value) ? value : [value]);\n\nvar createSubject = () => {\n    let _observers = [];\n    const next = (value) => {\n        for (const observer of _observers) {\n            observer.next && observer.next(value);\n        }\n    };\n    const subscribe = (observer) => {\n        _observers.push(observer);\n        return {\n            unsubscribe: () => {\n                _observers = _observers.filter((o) => o !== observer);\n            },\n        };\n    };\n    const unsubscribe = () => {\n        _observers = [];\n    };\n    return {\n        get observers() {\n            return _observers;\n        },\n        next,\n        subscribe,\n        unsubscribe,\n    };\n};\n\nfunction extractFormValues(fieldsState, formValues) {\n    const values = {};\n    for (const key in fieldsState) {\n        if (fieldsState.hasOwnProperty(key)) {\n            const fieldState = fieldsState[key];\n            const fieldValue = formValues[key];\n            if (fieldState && isObject(fieldState) && fieldValue) {\n                const nestedFieldsState = extractFormValues(fieldState, fieldValue);\n                if (isObject(nestedFieldsState)) {\n                    values[key] = nestedFieldsState;\n                }\n            }\n            else if (fieldsState[key]) {\n                values[key] = fieldValue;\n            }\n        }\n    }\n    return values;\n}\n\nvar isEmptyObject = (value) => isObject(value) && !Object.keys(value).length;\n\nvar isFileInput = (element) => element.type === 'file';\n\nvar isHTMLElement = (value) => {\n    if (!isWeb) {\n        return false;\n    }\n    const owner = value ? value.ownerDocument : 0;\n    return (value instanceof\n        (owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement));\n};\n\nvar isMultipleSelect = (element) => element.type === `select-multiple`;\n\nvar isRadioInput = (element) => element.type === 'radio';\n\nvar isRadioOrCheckbox = (ref) => isRadioInput(ref) || isCheckBoxInput(ref);\n\nvar live = (ref) => isHTMLElement(ref) && ref.isConnected;\n\nfunction baseGet(object, updatePath) {\n    const length = updatePath.slice(0, -1).length;\n    let index = 0;\n    while (index < length) {\n        if (isNullOrUndefined(object)) {\n            object = undefined;\n            break;\n        }\n        object = object[updatePath[index]];\n        index++;\n    }\n    return object;\n}\nfunction isEmptyArray(obj) {\n    for (const key in obj) {\n        if (obj.hasOwnProperty(key) && !isUndefined(obj[key])) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction unset(object, path) {\n    if (isString(path) && Object.prototype.hasOwnProperty.call(object, path)) {\n        delete object[path];\n        return object;\n    }\n    const paths = Array.isArray(path)\n        ? path\n        : isKey(path)\n            ? [path]\n            : stringToPath(path);\n    if (paths.some((segment) => PROTOTYPE_KEYWORDS.includes(String(segment)))) {\n        return object;\n    }\n    const childObject = paths.length === 1 ? object : baseGet(object, paths);\n    const index = paths.length - 1;\n    const key = paths[index];\n    if (childObject) {\n        delete childObject[key];\n    }\n    if (index !== 0 &&\n        ((isObject(childObject) && isEmptyObject(childObject)) ||\n            (Array.isArray(childObject) && isEmptyArray(childObject)))) {\n        unset(object, paths.slice(0, -1));\n    }\n    return object;\n}\n\nvar objectHasFunction = (data) => {\n    for (const key in data) {\n        if (isFunction(data[key])) {\n            return true;\n        }\n    }\n    return false;\n};\n\nfunction isTraversable(value) {\n    return Array.isArray(value) || (isObject(value) && !objectHasFunction(value));\n}\nfunction markFieldsDirty(data, fields = {}) {\n    for (const key in data) {\n        const value = data[key];\n        if (isTraversable(value)) {\n            fields[key] = Array.isArray(value) ? [] : {};\n            markFieldsDirty(value, fields[key]);\n        }\n        else if (!isUndefined(value)) {\n            fields[key] = true;\n        }\n    }\n    return fields;\n}\nfunction pruneDirtyFields(value) {\n    if (value === false) {\n        return undefined;\n    }\n    if (value === true) {\n        return true;\n    }\n    if (Array.isArray(value)) {\n        const result = value.map((value) => pruneDirtyFields(value));\n        return (result.some((value) => value !== undefined) ? result : undefined);\n    }\n    if (isObject(value)) {\n        const result = {};\n        for (const key in value) {\n            const pruned = pruneDirtyFields(value[key]);\n            if (!isUndefined(pruned)) {\n                result[key] = pruned;\n            }\n        }\n        return (Object.keys(result).length ? result : undefined);\n    }\n    return undefined;\n}\nfunction getDirtyFields(data, formValues, dirtyFieldsFromValues) {\n    if (!dirtyFieldsFromValues) {\n        dirtyFieldsFromValues = markFieldsDirty(formValues);\n    }\n    for (const key in data) {\n        const value = data[key];\n        if (isTraversable(value)) {\n            if (isUndefined(formValues) || isPrimitive(dirtyFieldsFromValues[key])) {\n                dirtyFieldsFromValues[key] = markFieldsDirty(value, Array.isArray(value) ? [] : {});\n            }\n            else {\n                getDirtyFields(value, isNullOrUndefined(formValues) ? {} : formValues[key], dirtyFieldsFromValues[key]);\n            }\n        }\n        else {\n            const formValue = formValues[key];\n            dirtyFieldsFromValues[key] = !deepEqual(value, formValue);\n        }\n    }\n    return pruneDirtyFields(dirtyFieldsFromValues) || {};\n}\n\nconst defaultResult = {\n    value: false,\n    isValid: false,\n};\nconst validResult = { value: true, isValid: true };\nvar getCheckboxValue = (options) => {\n    if (Array.isArray(options)) {\n        if (options.length > 1) {\n            const values = options\n                .filter((option) => option && option.checked && !option.disabled)\n                .map((option) => option.value);\n            return { value: values, isValid: !!values.length };\n        }\n        return options[0].checked && !options[0].disabled\n            ? // @ts-expect-error expected to work in the browser\n                options[0].attributes && !isUndefined(options[0].attributes.value)\n                    ? isUndefined(options[0].value) || options[0].value === ''\n                        ? validResult\n                        : { value: options[0].value, isValid: true }\n                    : validResult\n            : defaultResult;\n    }\n    return defaultResult;\n};\n\nvar getFieldValueAs = (value, { valueAsNumber, valueAsDate, setValueAs }) => isUndefined(value)\n    ? value\n    : valueAsNumber\n        ? value === ''\n            ? NaN\n            : value\n                ? +value\n                : value\n        : valueAsDate && isString(value)\n            ? new Date(value)\n            : setValueAs\n                ? setValueAs(value)\n                : value;\n\nconst defaultReturn = {\n    isValid: false,\n    value: null,\n};\nvar getRadioValue = (options) => Array.isArray(options)\n    ? options.reduce((previous, option) => option && option.checked && !option.disabled\n        ? {\n            isValid: true,\n            value: option.value,\n        }\n        : previous, defaultReturn)\n    : defaultReturn;\n\nfunction getFieldValue(_f) {\n    const ref = _f.ref;\n    if (isFileInput(ref)) {\n        return ref.files;\n    }\n    if (isRadioInput(ref)) {\n        return getRadioValue(_f.refs).value;\n    }\n    if (isMultipleSelect(ref)) {\n        return [...ref.selectedOptions].map(({ value }) => value);\n    }\n    if (isCheckBoxInput(ref)) {\n        return getCheckboxValue(_f.refs).value;\n    }\n    return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\n}\n\nvar getResolverOptions = (fieldsNames, _fields, criteriaMode, shouldUseNativeValidation) => {\n    const fields = {};\n    for (const name of fieldsNames) {\n        const field = get(_fields, name);\n        field && set(fields, name, field._f);\n    }\n    return {\n        criteriaMode,\n        names: [...fieldsNames],\n        fields,\n        shouldUseNativeValidation,\n    };\n};\n\nvar isRegex = (value) => value instanceof RegExp;\n\nvar getRuleValue = (rule) => isUndefined(rule)\n    ? rule\n    : isRegex(rule)\n        ? rule.source\n        : isObject(rule)\n            ? isRegex(rule.value)\n                ? rule.value.source\n                : rule.value\n            : rule;\n\nvar getValidationModes = (mode) => ({\n    isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\n    isOnBlur: mode === VALIDATION_MODE.onBlur,\n    isOnChange: mode === VALIDATION_MODE.onChange,\n    isOnAll: mode === VALIDATION_MODE.all,\n    isOnTouch: mode === VALIDATION_MODE.onTouched,\n});\n\nconst ASYNC_FUNCTION = 'AsyncFunction';\nvar hasPromiseValidation = (fieldReference) => {\n    if (!fieldReference || !fieldReference.validate)\n        return false;\n    if (isFunction(fieldReference.validate)) {\n        return fieldReference.validate.constructor.name === ASYNC_FUNCTION;\n    }\n    if (isObject(fieldReference.validate)) {\n        for (const key in fieldReference.validate) {\n            if (fieldReference.validate[key].constructor\n                .name === ASYNC_FUNCTION) {\n                return true;\n            }\n        }\n    }\n    return false;\n};\n\nvar hasValidation = (options) => options.mount &&\n    (options.required ||\n        options.min ||\n        options.max ||\n        options.maxLength ||\n        options.minLength ||\n        options.pattern ||\n        options.validate);\n\nvar isWatched = (name, _names, isBlurEvent) => {\n    if (isBlurEvent)\n        return false;\n    if (_names.watchAll || _names.watch.has(name))\n        return true;\n    for (const watchName of _names.watch) {\n        if (name.startsWith(watchName) && name.charAt(watchName.length) === '.')\n            return true;\n    }\n    return false;\n};\n\nconst iterateFieldsByAction = (fields, action, fieldsNames, abortEarly) => {\n    for (const key of fieldsNames || Object.keys(fields)) {\n        const field = get(fields, key);\n        if (field) {\n            const { _f, ...currentField } = field;\n            if (_f) {\n                if (_f.refs && _f.refs[0] && action(_f.refs[0], key) && !abortEarly) {\n                    return true;\n                }\n                else if (_f.ref && action(_f.ref, _f.name) && !abortEarly) {\n                    return true;\n                }\n                else {\n                    if (iterateFieldsByAction(currentField, action)) {\n                        break;\n                    }\n                }\n            }\n            else if (isObject(currentField)) {\n                if (iterateFieldsByAction(currentField, action)) {\n                    break;\n                }\n            }\n        }\n    }\n    return;\n};\n\nfunction schemaErrorLookup(errors, _fields, name) {\n    const error = get(errors, name);\n    if (error || isKey(name)) {\n        return {\n            error,\n            name,\n        };\n    }\n    const names = name.split('.');\n    while (names.length) {\n        const fieldName = names.join('.');\n        const field = get(_fields, fieldName);\n        const foundError = get(errors, fieldName);\n        if (field && !Array.isArray(field) && name !== fieldName) {\n            return { name };\n        }\n        if (foundError && foundError.type) {\n            return {\n                name: fieldName,\n                error: foundError,\n            };\n        }\n        if (foundError && foundError.root && foundError.root.type) {\n            return {\n                name: `${fieldName}.root`,\n                error: foundError.root,\n            };\n        }\n        names.pop();\n    }\n    return {\n        name,\n    };\n}\n\nvar shouldRenderFormState = (formStateData, _proxyFormState, updateFormState, isRoot) => {\n    updateFormState(formStateData);\n    const { name, ...formState } = formStateData;\n    const keys = Object.keys(formState);\n    return (!keys.length ||\n        (isRoot && keys.length >= Object.keys(_proxyFormState).length) ||\n        keys.find((key) => _proxyFormState[key] ===\n            (!isRoot || VALIDATION_MODE.all)));\n};\n\nvar shouldSubscribeByName = (name, signalName, exact) => !name ||\n    !signalName ||\n    name === signalName ||\n    convertToArrayPayload(name).some((currentName) => currentName &&\n        (exact\n            ? currentName === signalName || currentName.startsWith(signalName + '.')\n            : currentName.startsWith(signalName) ||\n                signalName.startsWith(currentName)));\n\nvar skipValidation = (isBlurEvent, isTouched, isSubmitted, reValidateMode, mode) => {\n    if (mode.isOnAll) {\n        return false;\n    }\n    else if (!isSubmitted && mode.isOnTouch) {\n        return !(isTouched || isBlurEvent);\n    }\n    else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\n        return !isBlurEvent;\n    }\n    else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\n        return isBlurEvent;\n    }\n    return true;\n};\n\nvar unsetEmptyArray = (ref, name) => !compact(get(ref, name)).length && unset(ref, name);\n\nvar updateFieldArrayRootError = (errors, error, name) => {\n    const existingErrors = get(errors, name);\n    const fieldArrayErrors = Array.isArray(existingErrors) ? existingErrors : [];\n    set(fieldArrayErrors, ROOT_ERROR_TYPE, error[name]);\n    set(errors, name, fieldArrayErrors);\n    return errors;\n};\n\nfunction getValidateError(result, ref, type = 'validate') {\n    if (isString(result) ||\n        (Array.isArray(result) && result.every(isString)) ||\n        (isBoolean(result) && !result)) {\n        return {\n            type,\n            message: isString(result) ? result : '',\n            ref,\n        };\n    }\n}\n\nvar getValueAndMessage = (validationData) => isObject(validationData) && !isRegex(validationData)\n    ? validationData\n    : {\n        value: validationData,\n        message: '',\n    };\n\nvar validateField = async (field, disabledFieldNames, formValues, validateAllFieldCriteria, shouldUseNativeValidation, isFieldArray) => {\n    const { ref, refs, required, maxLength, minLength, min, max, pattern, validate, name, valueAsNumber, mount, } = field._f;\n    const inputValue = get(formValues, name);\n    if (!mount || disabledFieldNames.has(name)) {\n        return {};\n    }\n    const inputRef = refs ? refs[0] : ref;\n    const setCustomValidity = (message) => {\n        if (shouldUseNativeValidation && inputRef.reportValidity) {\n            const validityMessage = isBoolean(message) ? '' : message || '';\n            if (refs) {\n                refs.forEach((ref) => ref.setCustomValidity(validityMessage));\n            }\n            else {\n                inputRef.setCustomValidity(validityMessage);\n            }\n            inputRef.reportValidity();\n        }\n    };\n    const error = {};\n    const isRadio = isRadioInput(ref);\n    const isCheckBox = isCheckBoxInput(ref);\n    const isRadioOrCheckbox = isRadio || isCheckBox;\n    const isEmpty = ((valueAsNumber || isFileInput(ref)) &&\n        isUndefined(ref.value) &&\n        isUndefined(inputValue)) ||\n        (isHTMLElement(ref) && ref.value === '') ||\n        inputValue === '' ||\n        (Array.isArray(inputValue) && !inputValue.length);\n    const appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error);\n    const getMinMaxMessage = (exceedMax, maxLengthMessage, minLengthMessage, maxType = INPUT_VALIDATION_RULES.maxLength, minType = INPUT_VALIDATION_RULES.minLength) => {\n        const message = exceedMax ? maxLengthMessage : minLengthMessage;\n        error[name] = {\n            type: exceedMax ? maxType : minType,\n            message,\n            ref,\n            ...appendErrorsCurry(exceedMax ? maxType : minType, message),\n        };\n    };\n    if (isFieldArray\n        ? !Array.isArray(inputValue) || !inputValue.length\n        : required &&\n            ((!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue))) ||\n                (isBoolean(inputValue) && !inputValue) ||\n                (isCheckBox && !getCheckboxValue(refs).isValid) ||\n                (isRadio && !getRadioValue(refs).isValid))) {\n        const { value, message } = isString(required)\n            ? { value: !!required, message: required }\n            : getValueAndMessage(required);\n        if (value) {\n            error[name] = {\n                type: INPUT_VALIDATION_RULES.required,\n                message,\n                ref: inputRef,\n                ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\n            };\n            if (!validateAllFieldCriteria) {\n                setCustomValidity(message);\n                return error;\n            }\n        }\n    }\n    if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\n        let exceedMax;\n        let exceedMin;\n        const maxOutput = getValueAndMessage(max);\n        const minOutput = getValueAndMessage(min);\n        if (!isNullOrUndefined(inputValue) && !isNaN(inputValue)) {\n            const valueNumber = ref.valueAsNumber ||\n                (inputValue ? +inputValue : inputValue);\n            if (!isNullOrUndefined(maxOutput.value)) {\n                exceedMax = valueNumber > maxOutput.value;\n            }\n            if (!isNullOrUndefined(minOutput.value)) {\n                exceedMin = valueNumber < minOutput.value;\n            }\n        }\n        else {\n            const valueDate = ref.valueAsDate || new Date(inputValue);\n            const convertTimeToDate = (time) => new Date(new Date().toDateString() + ' ' + time);\n            const isTime = ref.type == 'time';\n            const isWeek = ref.type == 'week';\n            if (isString(maxOutput.value) && inputValue) {\n                exceedMax = isTime\n                    ? convertTimeToDate(inputValue) > convertTimeToDate(maxOutput.value)\n                    : isWeek\n                        ? inputValue > maxOutput.value\n                        : valueDate > new Date(maxOutput.value);\n            }\n            if (isString(minOutput.value) && inputValue) {\n                exceedMin = isTime\n                    ? convertTimeToDate(inputValue) < convertTimeToDate(minOutput.value)\n                    : isWeek\n                        ? inputValue < minOutput.value\n                        : valueDate < new Date(minOutput.value);\n            }\n        }\n        if (exceedMax || exceedMin) {\n            getMinMaxMessage(!!exceedMax, maxOutput.message, minOutput.message, INPUT_VALIDATION_RULES.max, INPUT_VALIDATION_RULES.min);\n            if (!validateAllFieldCriteria) {\n                setCustomValidity(error[name].message);\n                return error;\n            }\n        }\n    }\n    if ((maxLength || minLength) &&\n        !isEmpty &&\n        (isString(inputValue) || (isFieldArray && Array.isArray(inputValue)))) {\n        const maxLengthOutput = getValueAndMessage(maxLength);\n        const minLengthOutput = getValueAndMessage(minLength);\n        const exceedMax = !isNullOrUndefined(maxLengthOutput.value) &&\n            inputValue.length > +maxLengthOutput.value;\n        const exceedMin = !isNullOrUndefined(minLengthOutput.value) &&\n            inputValue.length < +minLengthOutput.value;\n        if (exceedMax || exceedMin) {\n            getMinMaxMessage(exceedMax, maxLengthOutput.message, minLengthOutput.message);\n            if (!validateAllFieldCriteria) {\n                setCustomValidity(error[name].message);\n                return error;\n            }\n        }\n    }\n    if (pattern && !isEmpty && isString(inputValue)) {\n        const { value: patternValue, message } = getValueAndMessage(pattern);\n        if (isRegex(patternValue) && !inputValue.match(patternValue)) {\n            error[name] = {\n                type: INPUT_VALIDATION_RULES.pattern,\n                message,\n                ref,\n                ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message),\n            };\n            if (!validateAllFieldCriteria) {\n                setCustomValidity(message);\n                return error;\n            }\n        }\n    }\n    if (validate) {\n        if (isFunction(validate)) {\n            const result = await validate(inputValue, formValues);\n            const validateError = getValidateError(result, inputRef);\n            if (validateError) {\n                error[name] = {\n                    ...validateError,\n                    ...appendErrorsCurry(INPUT_VALIDATION_RULES.validate, validateError.message),\n                };\n                if (!validateAllFieldCriteria) {\n                    setCustomValidity(validateError.message);\n                    return error;\n                }\n            }\n        }\n        else if (isObject(validate)) {\n            let validationResult = {};\n            for (const key in validate) {\n                if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\n                    break;\n                }\n                const validateError = getValidateError(await validate[key](inputValue, formValues), inputRef, key);\n                if (validateError) {\n                    validationResult = {\n                        ...validateError,\n                        ...appendErrorsCurry(key, validateError.message),\n                    };\n                    setCustomValidity(validateError.message);\n                    if (validateAllFieldCriteria) {\n                        error[name] = validationResult;\n                    }\n                }\n            }\n            if (!isEmptyObject(validationResult)) {\n                error[name] = {\n                    ref: inputRef,\n                    ...validationResult,\n                };\n                if (!validateAllFieldCriteria) {\n                    return error;\n                }\n            }\n        }\n    }\n    setCustomValidity(true);\n    return error;\n};\n\nconst defaultOptions = {\n    mode: VALIDATION_MODE.onSubmit,\n    reValidateMode: VALIDATION_MODE.onChange,\n    shouldFocusError: true,\n};\nconst FORM_ERROR_TYPE = 'form';\nconst DEFAULT_FORM_STATE = {\n    submitCount: 0,\n    isDirty: false,\n    isReady: false,\n    isValidating: false,\n    isSubmitted: false,\n    isSubmitting: false,\n    isSubmitSuccessful: false,\n    isValid: false,\n    touchedFields: {},\n    dirtyFields: {},\n    validatingFields: {},\n};\nfunction createFormControl(props = {}) {\n    let _options = {\n        ...defaultOptions,\n        ...props,\n    };\n    let _formState = {\n        ...cloneObject(DEFAULT_FORM_STATE),\n        isLoading: isFunction(_options.defaultValues),\n        errors: _options.errors || {},\n        disabled: _options.disabled || false,\n    };\n    let _fields = {};\n    let _defaultValues = isObject(_options.defaultValues) || isObject(_options.values)\n        ? cloneObject(_options.defaultValues || _options.values) || {}\n        : {};\n    let _formValues = _options.shouldUnregister\n        ? {}\n        : cloneObject(_defaultValues);\n    let _state = {\n        action: false,\n        mount: false,\n        watch: false,\n        keepIsValid: false,\n    };\n    let _names = {\n        mount: new Set(),\n        disabled: new Set(),\n        unMount: new Set(),\n        array: new Set(),\n        watch: new Set(),\n        registerName: new Set(),\n    };\n    let delayErrorCallback;\n    let timer = 0;\n    let _valuesSubscriberCount = 0;\n    let _validationModeBeforeSubmit = getValidationModes(_options.mode);\n    let _validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\n    const defaultProxyFormState = {\n        isDirty: false,\n        dirtyFields: false,\n        validatingFields: false,\n        touchedFields: false,\n        isValidating: false,\n        isValid: false,\n        errors: false,\n    };\n    const _proxyFormState = {\n        ...defaultProxyFormState,\n    };\n    let _proxySubscribeFormState = {\n        ..._proxyFormState,\n    };\n    const _subjects = {\n        array: createSubject(),\n        state: createSubject(),\n    };\n    const shouldDisplayAllAssociatedErrors = _options.criteriaMode === VALIDATION_MODE.all;\n    const debounce = (callback) => (wait) => {\n        clearTimeout(timer);\n        timer = setTimeout(callback, wait);\n    };\n    const _setValid = async (shouldUpdateValid) => {\n        if (_state.keepIsValid) {\n            return;\n        }\n        if (!_options.disabled &&\n            (_proxyFormState.isValid ||\n                _proxySubscribeFormState.isValid ||\n                shouldUpdateValid)) {\n            let isValid;\n            if (_options.resolver) {\n                isValid = isEmptyObject((await _runSchema()).errors);\n                _updateIsValidating();\n            }\n            else {\n                isValid = await executeBuiltInValidation({\n                    fields: _fields,\n                    onlyCheckValid: true,\n                    eventType: EVENTS.VALID,\n                });\n            }\n            if (isValid !== _formState.isValid) {\n                _subjects.state.next({\n                    isValid,\n                });\n            }\n        }\n    };\n    const _updateIsValidating = (names, isValidating) => {\n        if (!_options.disabled &&\n            (_proxyFormState.isValidating ||\n                _proxyFormState.validatingFields ||\n                _proxySubscribeFormState.isValidating ||\n                _proxySubscribeFormState.validatingFields)) {\n            (names || Array.from(_names.mount)).forEach((name) => {\n                if (name) {\n                    isValidating\n                        ? set(_formState.validatingFields, name, isValidating)\n                        : unset(_formState.validatingFields, name);\n                }\n            });\n            _subjects.state.next({\n                validatingFields: _formState.validatingFields,\n                isValidating: !isEmptyObject(_formState.validatingFields),\n            });\n        }\n    };\n    const _updateDirtyFields = () => {\n        _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\n    };\n    const _setFieldArray = (name, values = [], method, args, shouldSetValues = true, shouldUpdateFieldsAndState = true) => {\n        if (args && method && !_options.disabled) {\n            _state.action = true;\n            if (shouldUpdateFieldsAndState && Array.isArray(get(_fields, name))) {\n                const fieldValues = method(get(_fields, name), args.argA, args.argB);\n                shouldSetValues && set(_fields, name, fieldValues);\n            }\n            if (shouldUpdateFieldsAndState &&\n                Array.isArray(get(_formState.errors, name))) {\n                const errors = method(get(_formState.errors, name), args.argA, args.argB);\n                shouldSetValues && set(_formState.errors, name, errors);\n                unsetEmptyArray(_formState.errors, name);\n            }\n            if ((_proxyFormState.touchedFields ||\n                _proxySubscribeFormState.touchedFields) &&\n                shouldUpdateFieldsAndState &&\n                Array.isArray(get(_formState.touchedFields, name))) {\n                const touchedFields = method(get(_formState.touchedFields, name), args.argA, args.argB);\n                shouldSetValues && set(_formState.touchedFields, name, touchedFields);\n            }\n            if (_proxyFormState.dirtyFields || _proxySubscribeFormState.dirtyFields) {\n                _updateDirtyFields();\n            }\n            _subjects.state.next({\n                name,\n                isDirty: _getDirty(name, values),\n                dirtyFields: _formState.dirtyFields,\n                errors: _formState.errors,\n                isValid: _formState.isValid,\n            });\n        }\n        else {\n            set(_formValues, name, values);\n        }\n    };\n    const updateErrors = (name, error) => {\n        set(_formState.errors, name, error);\n        _formState.errors = { ..._formState.errors };\n        _subjects.state.next({\n            errors: _formState.errors,\n        });\n    };\n    const _setErrors = (errors) => {\n        _formState.errors = errors;\n        _subjects.state.next({\n            errors: _formState.errors,\n            isValid: false,\n        });\n    };\n    const hasExplicitNullIntermediate = (name) => {\n        const segments = isKey(name) ? [name] : stringToPath(name);\n        let formValues = _formValues;\n        let defaultValues = _defaultValues;\n        for (let i = 0; i < segments.length - 1; i++) {\n            const key = segments[i];\n            formValues = isNullOrUndefined(formValues) ? formValues : formValues[key];\n            defaultValues = isNullOrUndefined(defaultValues)\n                ? defaultValues\n                : defaultValues[key];\n            if (formValues === null && defaultValues !== null) {\n                return true;\n            }\n        }\n        return false;\n    };\n    const updateValidAndValue = (name, shouldSkipSetValueAs, value, ref) => {\n        const field = get(_fields, name);\n        if (field) {\n            if (hasExplicitNullIntermediate(name)) {\n                return;\n            }\n            const wasUnsetInFormValues = isUndefined(get(_formValues, name));\n            const defaultValue = get(_formValues, name, isUndefined(value) ? get(_defaultValues, name) : value);\n            isUndefined(defaultValue) ||\n                (ref && ref.defaultChecked) ||\n                shouldSkipSetValueAs\n                ? set(_formValues, name, shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f))\n                : setFieldValue(name, defaultValue);\n            if (_state.mount && !_state.action) {\n                _setValid();\n                if (wasUnsetInFormValues &&\n                    _formState.isDirty &&\n                    (_proxyFormState.isDirty || _proxySubscribeFormState.isDirty)) {\n                    const isDirty = _getDirty();\n                    if (!isDirty) {\n                        _formState.isDirty = false;\n                        _subjects.state.next({ ..._formState });\n                    }\n                }\n                if (props.shouldUnregister &&\n                    wasUnsetInFormValues &&\n                    !isUndefined(get(_formValues, name)) &&\n                    isWatched(name, _names)) {\n                    _state.watch = true;\n                }\n            }\n        }\n    };\n    const updateTouchAndDirty = (name, fieldValue, isBlurEvent, shouldDirty, shouldRender) => {\n        let shouldUpdateField = false;\n        let isPreviousDirty = false;\n        const output = {\n            name,\n        };\n        if (!_options.disabled) {\n            if (!isBlurEvent || shouldDirty) {\n                const isCurrentFieldPristine = deepEqual(get(_defaultValues, name), fieldValue);\n                if (_proxyFormState.isDirty || _proxySubscribeFormState.isDirty) {\n                    isPreviousDirty = _formState.isDirty;\n                    _formState.isDirty = output.isDirty =\n                        !isCurrentFieldPristine || _getDirty();\n                    shouldUpdateField = isPreviousDirty !== output.isDirty;\n                }\n                isPreviousDirty = !!get(_formState.dirtyFields, name);\n                if (isCurrentFieldPristine !== _formState.isDirty) {\n                    _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\n                }\n                else {\n                    isCurrentFieldPristine\n                        ? unset(_formState.dirtyFields, name)\n                        : set(_formState.dirtyFields, name, true);\n                }\n                output.dirtyFields = _formState.dirtyFields;\n                shouldUpdateField =\n                    shouldUpdateField ||\n                        ((_proxyFormState.dirtyFields ||\n                            _proxySubscribeFormState.dirtyFields) &&\n                            isPreviousDirty !== !isCurrentFieldPristine);\n            }\n            if (isBlurEvent) {\n                const isPreviousFieldTouched = get(_formState.touchedFields, name);\n                if (!isPreviousFieldTouched) {\n                    set(_formState.touchedFields, name, isBlurEvent);\n                    output.touchedFields = _formState.touchedFields;\n                    shouldUpdateField =\n                        shouldUpdateField ||\n                            ((_proxyFormState.touchedFields ||\n                                _proxySubscribeFormState.touchedFields) &&\n                                isPreviousFieldTouched !== isBlurEvent);\n                }\n            }\n            shouldUpdateField && shouldRender && _subjects.state.next(output);\n        }\n        return shouldUpdateField ? output : {};\n    };\n    const shouldRenderByError = (name, isValid, error, fieldState) => {\n        const previousFieldError = get(_formState.errors, name);\n        const shouldUpdateValid = (_proxyFormState.isValid || _proxySubscribeFormState.isValid) &&\n            isBoolean(isValid) &&\n            _formState.isValid !== isValid;\n        if (_options.delayError && error) {\n            delayErrorCallback = debounce(() => updateErrors(name, error));\n            delayErrorCallback(_options.delayError);\n        }\n        else {\n            clearTimeout(timer);\n            delayErrorCallback = null;\n            error\n                ? set(_formState.errors, name, error)\n                : unset(_formState.errors, name);\n            _formState.errors = { ..._formState.errors };\n        }\n        if ((error ? !deepEqual(previousFieldError, error) : previousFieldError) ||\n            !isEmptyObject(fieldState) ||\n            shouldUpdateValid) {\n            const updatedFormState = {\n                ...fieldState,\n                ...(shouldUpdateValid && isBoolean(isValid) ? { isValid } : {}),\n                errors: _formState.errors,\n                name,\n            };\n            _formState = {\n                ..._formState,\n                ...updatedFormState,\n            };\n            _subjects.state.next(updatedFormState);\n        }\n    };\n    const _runSchema = async (name) => {\n        _updateIsValidating(name, true);\n        return await _options.resolver(_formValues, _options.context, getResolverOptions(name || _names.mount, _fields, _options.criteriaMode, _options.shouldUseNativeValidation));\n    };\n    const executeSchemaAndUpdateState = async (names) => {\n        const { errors } = await _runSchema(names);\n        _updateIsValidating(names);\n        if (names) {\n            for (const name of names) {\n                const error = get(errors, name);\n                error\n                    ? _names.array.has(name) &&\n                        isObject(error) &&\n                        !Object.keys(error).some((key) => !Number.isNaN(Number(key)))\n                        ? updateFieldArrayRootError(_formState.errors, { [name]: error }, name)\n                        : set(_formState.errors, name, error)\n                    : unset(_formState.errors, name);\n            }\n            _formState.errors = { ..._formState.errors };\n        }\n        else {\n            _formState.errors = errors;\n        }\n        return errors;\n    };\n    const validateForm = async ({ name, eventType, }) => {\n        if (props.validate) {\n            const result = await props.validate({\n                formValues: _formValues,\n                formState: _formState,\n                name,\n                eventType,\n            });\n            if (isObject(result)) {\n                for (const key in result) {\n                    const error = result[key];\n                    if (error) {\n                        setError(`${FORM_ERROR_TYPE}.${key}`, {\n                            message: isString(error.message) ? error.message : '',\n                            type: error.type || INPUT_VALIDATION_RULES.validate,\n                        });\n                    }\n                }\n            }\n            else if (isString(result) || !result) {\n                setError(FORM_ERROR_TYPE, {\n                    message: result || '',\n                    type: INPUT_VALIDATION_RULES.validate,\n                });\n            }\n            else {\n                clearErrors(FORM_ERROR_TYPE);\n            }\n            return result;\n        }\n        return true;\n    };\n    const executeBuiltInValidation = async ({ fields, onlyCheckValid, name, eventType, context = {\n        valid: true,\n        runRootValidation: false,\n    }, }) => {\n        if (props.validate) {\n            context.runRootValidation = true;\n            const result = await validateForm({\n                name,\n                eventType,\n            });\n            if (!result) {\n                context.valid = false;\n                if (onlyCheckValid) {\n                    return context.valid;\n                }\n            }\n        }\n        for (const name in fields) {\n            const field = fields[name];\n            if (field) {\n                const { _f, ...fieldValue } = field;\n                if (_f) {\n                    const isFieldArrayRoot = _names.array.has(_f.name);\n                    const isPromiseFunction = field._f && hasPromiseValidation(field._f);\n                    const shouldTrackIsValidatingState = _proxyFormState.validatingFields ||\n                        _proxyFormState.isValidating ||\n                        _proxySubscribeFormState.validatingFields ||\n                        _proxySubscribeFormState.isValidating;\n                    if (isPromiseFunction && shouldTrackIsValidatingState) {\n                        _updateIsValidating([_f.name], true);\n                    }\n                    const fieldError = await validateField(field, _names.disabled, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation && !onlyCheckValid, isFieldArrayRoot);\n                    if (isPromiseFunction && shouldTrackIsValidatingState) {\n                        _updateIsValidating([_f.name]);\n                    }\n                    if (fieldError[_f.name]) {\n                        context.valid = false;\n                        if (onlyCheckValid) {\n                            break;\n                        }\n                    }\n                    !onlyCheckValid &&\n                        (get(fieldError, _f.name)\n                            ? isFieldArrayRoot\n                                ? updateFieldArrayRootError(_formState.errors, fieldError, _f.name)\n                                : set(_formState.errors, _f.name, fieldError[_f.name])\n                            : unset(_formState.errors, _f.name));\n                    if (props.shouldUseNativeValidation && fieldError[_f.name]) {\n                        break;\n                    }\n                }\n                !isEmptyObject(fieldValue) &&\n                    (await executeBuiltInValidation({\n                        context,\n                        onlyCheckValid,\n                        fields: fieldValue,\n                        name: name,\n                        eventType,\n                    }));\n            }\n        }\n        return context.valid;\n    };\n    const _removeUnmounted = () => {\n        for (const name of _names.unMount) {\n            const field = get(_fields, name);\n            field &&\n                (field._f.refs\n                    ? field._f.refs.every((ref) => !live(ref))\n                    : !live(field._f.ref)) &&\n                unregister(name);\n        }\n        _names.unMount = new Set();\n    };\n    const _getDirty = (name, data) => !_options.disabled &&\n        (name && data && set(_formValues, name, data),\n            !deepEqual(_state.mount ? _formValues : _defaultValues, _defaultValues));\n    const _getWatch = (names, defaultValue, isGlobal) => generateWatchOutput(names, _names, {\n        ...(_state.mount\n            ? _formValues\n            : isUndefined(defaultValue)\n                ? _defaultValues\n                : isString(names)\n                    ? { [names]: defaultValue }\n                    : defaultValue),\n    }, isGlobal, defaultValue);\n    const _getFieldArray = (name) => compact(get(_state.mount ? _formValues : _defaultValues, name, _options.shouldUnregister ? get(_defaultValues, name, []) : []));\n    const setFieldValue = (name, value, options = {}, skipClone = false, skipRender = false) => {\n        const field = get(_fields, name);\n        let fieldValue = value;\n        if (field) {\n            const fieldReference = field._f;\n            if (fieldReference) {\n                !fieldReference.disabled &&\n                    set(_formValues, name, getFieldValueAs(value, fieldReference));\n                fieldValue =\n                    isHTMLElement(fieldReference.ref) && isNullOrUndefined(value)\n                        ? ''\n                        : value;\n                if (isMultipleSelect(fieldReference.ref)) {\n                    [...fieldReference.ref.options].forEach((optionRef) => (optionRef.selected = fieldValue.includes(optionRef.value)));\n                }\n                else if (fieldReference.refs) {\n                    if (isCheckBoxInput(fieldReference.ref)) {\n                        fieldReference.refs.forEach((checkboxRef) => {\n                            if (!checkboxRef.defaultChecked || !checkboxRef.disabled) {\n                                if (Array.isArray(fieldValue)) {\n                                    checkboxRef.checked = !!fieldValue.find((data) => data === checkboxRef.value);\n                                }\n                                else {\n                                    checkboxRef.checked =\n                                        fieldValue === checkboxRef.value || !!fieldValue;\n                                }\n                            }\n                        });\n                    }\n                    else {\n                        fieldReference.refs.forEach((radioRef) => (radioRef.checked = radioRef.value === fieldValue));\n                    }\n                }\n                else if (isFileInput(fieldReference.ref)) {\n                    fieldReference.ref.value = '';\n                }\n                else {\n                    fieldReference.ref.value = fieldValue;\n                    if (!fieldReference.ref.type && !skipRender) {\n                        _subjects.state.next({\n                            name,\n                            values: skipClone ? _formValues : cloneObject(_formValues),\n                        });\n                    }\n                }\n            }\n        }\n        (options.shouldDirty || options.shouldTouch) &&\n            updateTouchAndDirty(name, fieldValue, options.shouldTouch, options.shouldDirty, !skipRender);\n        options.shouldValidate && trigger(name);\n    };\n    const setFieldValues = (name, value, options, skipClone = false, skipRender = false) => {\n        for (const fieldKey in value) {\n            if (!value.hasOwnProperty(fieldKey)) {\n                return;\n            }\n            const fieldValue = value[fieldKey];\n            const fieldName = name + '.' + fieldKey;\n            const field = get(_fields, fieldName);\n            (_names.array.has(name) ||\n                isObject(fieldValue) ||\n                (field && !field._f)) &&\n                !isDateObject(fieldValue)\n                ? setFieldValues(fieldName, fieldValue, options, skipClone, skipRender)\n                : setFieldValue(fieldName, fieldValue, options, skipClone, skipRender);\n        }\n    };\n    const _setValue = (name, value, options, skipClone, skipStateEmit = false) => {\n        const field = get(_fields, name);\n        const isFieldArray = _names.array.has(name);\n        const cloneValue = skipClone ? value : cloneObject(value);\n        const previousValue = get(_formValues, name);\n        const isValueUnchanged = deepEqual(previousValue, cloneValue);\n        if (!isValueUnchanged) {\n            set(_formValues, name, cloneValue);\n        }\n        if (isFieldArray) {\n            _subjects.array.next({\n                name,\n                values: skipClone ? _formValues : cloneObject(_formValues),\n            });\n            if ((_proxyFormState.isDirty ||\n                _proxyFormState.dirtyFields ||\n                _proxySubscribeFormState.isDirty ||\n                _proxySubscribeFormState.dirtyFields) &&\n                options.shouldDirty) {\n                _updateDirtyFields();\n                if (!skipStateEmit) {\n                    _subjects.state.next({\n                        name,\n                        dirtyFields: _formState.dirtyFields,\n                        isDirty: _getDirty(name, cloneValue),\n                    });\n                }\n            }\n        }\n        else {\n            const isEmpty = (Array.isArray(cloneValue) && !cloneValue.length) ||\n                isEmptyObject(cloneValue);\n            if (!field || field._f || isNullOrUndefined(cloneValue) || isEmpty) {\n                setFieldValue(name, cloneValue, options, skipClone, skipStateEmit);\n            }\n            else {\n                setFieldValues(name, cloneValue, options, skipClone, skipStateEmit);\n            }\n        }\n        if (!isValueUnchanged && !skipStateEmit) {\n            const watched = isWatched(name, _names);\n            const values = skipClone ? _formValues : cloneObject(_formValues);\n            _subjects.state.next({\n                ...(watched && _formState),\n                name: _state.mount || watched ? name : undefined,\n                values,\n            });\n        }\n    };\n    const setValue = (name, value, options = {}) => _setValue(name, value, options, false);\n    const setValues = (formValues, options = {}) => {\n        const updatedFormValues = isFunction(formValues)\n            ? formValues(_formValues)\n            : formValues;\n        if (!deepEqual(_formValues, updatedFormValues)) {\n            _formValues = {\n                ..._formValues,\n                ...updatedFormValues,\n            };\n            const flattenedUpdates = flatten(updatedFormValues);\n            for (const fieldName of _names.mount) {\n                if (fieldName in flattenedUpdates) {\n                    _setValue(fieldName, flattenedUpdates[fieldName], options, true, true);\n                }\n            }\n            _subjects.state.next({\n                ..._formState,\n                name: undefined,\n                type: undefined,\n                ...(_valuesSubscriberCount ? { values: _formValues } : {}),\n            });\n            if (options.shouldValidate) {\n                _setValid();\n            }\n        }\n    };\n    const onChange = async (event) => {\n        _state.mount = true;\n        const target = event.target;\n        let name = target.name;\n        let isFieldValueUpdated = true;\n        const field = get(_fields, name);\n        const _updateIsFieldValueUpdated = (fieldValue) => {\n            isFieldValueUpdated =\n                Number.isNaN(fieldValue) ||\n                    (isDateObject(fieldValue) && isNaN(fieldValue.getTime())) ||\n                    deepEqual(fieldValue, get(_formValues, name, fieldValue));\n        };\n        if (field) {\n            let error;\n            let isValid;\n            const fieldValue = target.type\n                ? getFieldValue(field._f)\n                : getEventValue(event);\n            const isBlurEvent = event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\n            const hasNoValidationEffect = !hasValidation(field._f) &&\n                !props.validate &&\n                !_options.resolver &&\n                !get(_formState.errors, name) &&\n                !field._f.deps;\n            const shouldSkipValidation = hasNoValidationEffect ||\n                skipValidation(isBlurEvent, get(_formState.touchedFields, name), _formState.isSubmitted, _validationModeAfterSubmit, _validationModeBeforeSubmit);\n            const watched = isWatched(name, _names, isBlurEvent);\n            set(_formValues, name, fieldValue);\n            if (isBlurEvent) {\n                if (!target || !target.readOnly) {\n                    field._f.onBlur && field._f.onBlur(event);\n                    delayErrorCallback && delayErrorCallback(0);\n                }\n            }\n            else if (field._f.onChange) {\n                field._f.onChange(event);\n            }\n            const fieldState = updateTouchAndDirty(name, fieldValue, isBlurEvent);\n            const shouldRender = !isEmptyObject(fieldState) || watched;\n            !isBlurEvent &&\n                _subjects.state.next({\n                    name,\n                    type: event.type,\n                    ...(_valuesSubscriberCount\n                        ? { values: cloneObject(_formValues) }\n                        : {}),\n                });\n            if (shouldSkipValidation) {\n                if ((!hasNoValidationEffect || !_formState.isValid) &&\n                    (_proxyFormState.isValid || _proxySubscribeFormState.isValid)) {\n                    if (_options.mode === 'onBlur') {\n                        if (isBlurEvent) {\n                            _setValid();\n                        }\n                    }\n                    else if (!isBlurEvent) {\n                        _setValid();\n                    }\n                }\n                return (shouldRender &&\n                    _subjects.state.next({ name, ...(watched ? {} : fieldState) }));\n            }\n            if (!_options.resolver && props.validate) {\n                await validateForm({\n                    name: name,\n                    eventType: event.type,\n                });\n            }\n            !isBlurEvent && watched && _subjects.state.next({ ..._formState });\n            if (_options.resolver) {\n                const { errors } = await _runSchema([name]);\n                _updateIsValidating([name]);\n                _updateIsFieldValueUpdated(fieldValue);\n                if (!isFieldValueUpdated) {\n                    !isEmptyObject(fieldState) && _subjects.state.next(fieldState);\n                    return;\n                }\n                const previousErrorLookupResult = schemaErrorLookup(_formState.errors, _fields, name);\n                const errorLookupResult = schemaErrorLookup(errors, _fields, previousErrorLookupResult.name || name);\n                error = errorLookupResult.error;\n                name = errorLookupResult.name;\n                isValid = isEmptyObject(errors);\n            }\n            else {\n                _updateIsValidating([name], true);\n                error = (await validateField(field, _names.disabled, _formValues, shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation))[name];\n                _updateIsValidating([name]);\n                _updateIsFieldValueUpdated(fieldValue);\n                if (isFieldValueUpdated) {\n                    if (error) {\n                        isValid = false;\n                    }\n                    else if (_proxyFormState.isValid ||\n                        _proxySubscribeFormState.isValid) {\n                        isValid = await executeBuiltInValidation({\n                            fields: _fields,\n                            onlyCheckValid: true,\n                            name: name,\n                            eventType: event.type,\n                        });\n                    }\n                }\n            }\n            if (isFieldValueUpdated) {\n                field._f.deps &&\n                    (!Array.isArray(field._f.deps) || field._f.deps.length > 0) &&\n                    trigger(field._f.deps);\n                shouldRenderByError(name, isValid, error, fieldState);\n            }\n        }\n    };\n    const _focusInput = (ref, key) => {\n        if (get(_formState.errors, key) && ref.focus) {\n            ref.focus();\n            return 1;\n        }\n        return;\n    };\n    const trigger = async (name, options = {}) => {\n        let isValid;\n        let validationResult;\n        const fieldNames = convertToArrayPayload(name);\n        if (_options.resolver) {\n            const errors = await executeSchemaAndUpdateState(isUndefined(name) ? name : fieldNames);\n            isValid = isEmptyObject(errors);\n            validationResult = name\n                ? !fieldNames.some((name) => get(errors, name))\n                : isValid;\n        }\n        else if (name) {\n            validationResult = (await Promise.all(fieldNames.map(async (fieldName) => {\n                const field = get(_fields, fieldName);\n                return await executeBuiltInValidation({\n                    fields: field && field._f ? { [fieldName]: field } : field,\n                    eventType: EVENTS.TRIGGER,\n                });\n            }))).every(Boolean);\n            !(!validationResult && !_formState.isValid) && _setValid();\n        }\n        else {\n            validationResult = isValid = await executeBuiltInValidation({\n                fields: _fields,\n                name,\n                eventType: EVENTS.TRIGGER,\n            });\n        }\n        _subjects.state.next({\n            ...(!isString(name) ||\n                ((_proxyFormState.isValid || _proxySubscribeFormState.isValid) &&\n                    isValid !== _formState.isValid)\n                ? {}\n                : { name }),\n            ...(_options.resolver || !name ? { isValid } : {}),\n            errors: _formState.errors,\n        });\n        options.shouldFocus &&\n            !validationResult &&\n            iterateFieldsByAction(_fields, _focusInput, name ? fieldNames : _names.mount);\n        return validationResult;\n    };\n    const getValues = (fieldNames, config) => {\n        let values = {\n            ...(_state.mount ? _formValues : _defaultValues),\n        };\n        if (config) {\n            values = extractFormValues(config.dirtyFields ? _formState.dirtyFields : _formState.touchedFields, values);\n        }\n        return isUndefined(fieldNames)\n            ? values\n            : isString(fieldNames)\n                ? get(values, fieldNames)\n                : fieldNames.map((name) => get(values, name));\n    };\n    const getFieldState = (name, formState) => ({\n        invalid: !!get((formState || _formState).errors, name),\n        isDirty: !!get((formState || _formState).dirtyFields, name),\n        error: get((formState || _formState).errors, name),\n        isValidating: !!get(_formState.validatingFields, name),\n        isTouched: !!get((formState || _formState).touchedFields, name),\n    });\n    const clearErrors = (name) => {\n        const names = name ? convertToArrayPayload(name) : undefined;\n        names === null || names === void 0 ? void 0 : names.forEach((inputName) => unset(_formState.errors, inputName));\n        if (names) {\n            names.forEach((inputName) => {\n                _subjects.state.next({\n                    name: inputName,\n                    errors: _formState.errors,\n                });\n            });\n        }\n        else {\n            _subjects.state.next({\n                errors: {},\n            });\n        }\n    };\n    const setError = (name, error, options) => {\n        const ref = (get(_fields, name, { _f: {} })._f || {}).ref;\n        const currentError = get(_formState.errors, name) || {};\n        const { ref: currentRef, message, type, ...restOfErrorTree } = currentError;\n        set(_formState.errors, name, {\n            ...restOfErrorTree,\n            ...error,\n            ref,\n        });\n        _subjects.state.next({\n            name,\n            errors: _formState.errors,\n            isValid: false,\n        });\n        options && options.shouldFocus && ref && ref.focus && ref.focus();\n    };\n    const watch = (name, defaultValue) => {\n        if (isFunction(name)) {\n            _valuesSubscriberCount++;\n            const { unsubscribe } = _subjects.state.subscribe({\n                next: (payload) => 'values' in payload &&\n                    name(payload.values || _getWatch(undefined, defaultValue), payload),\n            });\n            let called = false;\n            return {\n                unsubscribe: () => {\n                    if (called) {\n                        return;\n                    }\n                    called = true;\n                    _valuesSubscriberCount--;\n                    unsubscribe();\n                },\n            };\n        }\n        return _getWatch(name, defaultValue, true);\n    };\n    const _subscribe = (props) => {\n        var _a;\n        const needsValues = !!((_a = props.formState) === null || _a === void 0 ? void 0 : _a.values);\n        if (needsValues) {\n            _valuesSubscriberCount++;\n        }\n        const { unsubscribe } = _subjects.state.subscribe({\n            next: (formState) => {\n                if (shouldSubscribeByName(props.name, formState.name, props.exact) &&\n                    shouldRenderFormState(formState, props.formState || _proxyFormState, _setFormState, props.reRenderRoot)) {\n                    const snapshot = { ..._formValues };\n                    props.callback({\n                        values: snapshot,\n                        ..._formState,\n                        ...formState,\n                        defaultValues: _defaultValues,\n                    });\n                }\n            },\n        });\n        if (!needsValues) {\n            return unsubscribe;\n        }\n        let called = false;\n        return () => {\n            if (called) {\n                return;\n            }\n            called = true;\n            _valuesSubscriberCount--;\n            unsubscribe();\n        };\n    };\n    const subscribe = (props) => {\n        _state.mount = true;\n        _proxySubscribeFormState = {\n            ..._proxySubscribeFormState,\n            ...props.formState,\n        };\n        return _subscribe({\n            ...props,\n            formState: {\n                ...defaultProxyFormState,\n                ...props.formState,\n            },\n        });\n    };\n    const unregister = (name, options = {}) => {\n        for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\n            _names.mount.delete(fieldName);\n            _names.array.delete(fieldName);\n            if (!options.keepValue) {\n                unset(_fields, fieldName);\n                unset(_formValues, fieldName);\n            }\n            !options.keepError && unset(_formState.errors, fieldName);\n            !options.keepDirty && unset(_formState.dirtyFields, fieldName);\n            !options.keepTouched && unset(_formState.touchedFields, fieldName);\n            !options.keepIsValidating &&\n                unset(_formState.validatingFields, fieldName);\n            !_options.shouldUnregister &&\n                !options.keepDefaultValue &&\n                unset(_defaultValues, fieldName);\n        }\n        _subjects.state.next({\n            values: cloneObject(_formValues),\n        });\n        _subjects.state.next({\n            ..._formState,\n            ...(!options.keepDirty ? {} : { isDirty: _getDirty() }),\n        });\n        !options.keepIsValid && _setValid();\n    };\n    const _setDisabledField = ({ disabled, name, }) => {\n        if ((isBoolean(disabled) && _state.mount) ||\n            !!disabled ||\n            _names.disabled.has(name)) {\n            const wasDisabled = _names.disabled.has(name);\n            const isDisabled = !!disabled;\n            const disabledStateChanged = wasDisabled !== isDisabled;\n            disabled ? _names.disabled.add(name) : _names.disabled.delete(name);\n            disabledStateChanged && _state.mount && !_state.action && _setValid();\n        }\n    };\n    const register = (name, options = {}) => {\n        let field = get(_fields, name);\n        const disabledIsDefined = isBoolean(options.disabled) || isBoolean(_options.disabled);\n        const shouldRevalidateRemount = !_names.registerName.has(name) && field && field._f && !field._f.mount;\n        set(_fields, name, {\n            ...(field || {}),\n            _f: {\n                ...(field && field._f ? field._f : { ref: { name } }),\n                name,\n                mount: true,\n                ...options,\n            },\n        });\n        _names.mount.add(name);\n        if (field && !shouldRevalidateRemount) {\n            _setDisabledField({\n                disabled: isBoolean(options.disabled)\n                    ? options.disabled\n                    : _options.disabled,\n                name,\n            });\n        }\n        else {\n            updateValidAndValue(name, true, options.value);\n        }\n        return {\n            ...(disabledIsDefined\n                ? { disabled: options.disabled || _options.disabled }\n                : {}),\n            ...(_options.progressive\n                ? {\n                    required: !!options.required,\n                    min: getRuleValue(options.min),\n                    max: getRuleValue(options.max),\n                    minLength: getRuleValue(options.minLength),\n                    maxLength: getRuleValue(options.maxLength),\n                    pattern: getRuleValue(options.pattern),\n                }\n                : {}),\n            name,\n            onChange,\n            onBlur: onChange,\n            ref: (ref) => {\n                if (ref) {\n                    _names.registerName.add(name);\n                    register(name, options);\n                    _names.registerName.delete(name);\n                    field = get(_fields, name);\n                    const fieldRef = isUndefined(ref.value)\n                        ? ref.querySelectorAll\n                            ? ref.querySelectorAll('input,select,textarea')[0] || ref\n                            : ref\n                        : ref;\n                    const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\n                    const refs = field._f.refs || [];\n                    if (radioOrCheckbox\n                        ? refs.find((option) => option === fieldRef)\n                        : fieldRef === field._f.ref) {\n                        return;\n                    }\n                    set(_fields, name, {\n                        _f: {\n                            ...field._f,\n                            ...(radioOrCheckbox\n                                ? {\n                                    refs: [\n                                        ...refs.filter(live),\n                                        fieldRef,\n                                        ...(Array.isArray(get(_defaultValues, name)) ? [{}] : []),\n                                    ],\n                                    ref: { type: fieldRef.type, name },\n                                }\n                                : { ref: fieldRef }),\n                        },\n                    });\n                    updateValidAndValue(name, false, undefined, fieldRef);\n                }\n                else {\n                    field = get(_fields, name, {});\n                    if (field._f) {\n                        field._f.mount = false;\n                    }\n                    (_options.shouldUnregister || options.shouldUnregister) &&\n                        !(isNameInFieldArray(_names.array, name) && _state.action) &&\n                        _names.unMount.add(name);\n                }\n            },\n        };\n    };\n    const _focusError = () => _options.shouldFocusError &&\n        !_options.shouldUseNativeValidation &&\n        iterateFieldsByAction(_fields, _focusInput, _names.mount);\n    const _disableForm = (disabled) => {\n        if (isBoolean(disabled)) {\n            _subjects.state.next({ disabled });\n            iterateFieldsByAction(_fields, (ref, name) => {\n                const currentField = get(_fields, name);\n                if (currentField) {\n                    ref.disabled = currentField._f.disabled || disabled;\n                    if (Array.isArray(currentField._f.refs)) {\n                        currentField._f.refs.forEach((inputRef) => {\n                            inputRef.disabled = currentField._f.disabled || disabled;\n                        });\n                    }\n                }\n            }, 0, false);\n        }\n    };\n    const handleSubmit = (onValid, onInvalid) => async (e) => {\n        let onValidError = undefined;\n        if (e) {\n            e.preventDefault && e.preventDefault();\n            e.persist &&\n                e.persist();\n        }\n        let fieldValues = cloneObject(_formValues);\n        _subjects.state.next({\n            isSubmitting: true,\n        });\n        if (_options.resolver) {\n            const { errors, values } = await _runSchema();\n            _updateIsValidating();\n            _formState.errors = errors;\n            fieldValues = cloneObject(values);\n        }\n        else {\n            await executeBuiltInValidation({\n                fields: _fields,\n                eventType: EVENTS.SUBMIT,\n            });\n        }\n        if (_names.disabled.size) {\n            for (const name of _names.disabled) {\n                unset(fieldValues, name);\n            }\n        }\n        unset(_formState.errors, ROOT_ERROR_TYPE);\n        if (isEmptyObject(_formState.errors)) {\n            _subjects.state.next({\n                errors: {},\n            });\n            try {\n                await onValid(fieldValues, e);\n            }\n            catch (error) {\n                onValidError = error;\n            }\n        }\n        else {\n            if (onInvalid) {\n                await onInvalid({ ..._formState.errors }, e);\n            }\n            _focusError();\n            setTimeout(_focusError);\n        }\n        _subjects.state.next({\n            isSubmitted: true,\n            isSubmitting: false,\n            isSubmitSuccessful: isEmptyObject(_formState.errors) && !onValidError,\n            submitCount: _formState.submitCount + 1,\n            errors: _formState.errors,\n        });\n        if (onValidError) {\n            throw onValidError;\n        }\n    };\n    const resetField = (name, options = {}) => {\n        if (get(_fields, name)) {\n            if (isUndefined(options.defaultValue)) {\n                setValue(name, cloneObject(get(_defaultValues, name)));\n            }\n            else {\n                setValue(name, options.defaultValue);\n                set(_defaultValues, name, cloneObject(options.defaultValue));\n            }\n            if (!options.keepTouched) {\n                unset(_formState.touchedFields, name);\n            }\n            if (!options.keepDirty) {\n                unset(_formState.dirtyFields, name);\n                _formState.isDirty = options.defaultValue\n                    ? _getDirty(name, cloneObject(get(_defaultValues, name)))\n                    : _getDirty();\n            }\n            if (!options.keepError) {\n                unset(_formState.errors, name);\n                _proxyFormState.isValid && _setValid();\n            }\n            _subjects.state.next({ ..._formState });\n        }\n    };\n    const _reset = (formValues, keepStateOptions = {}) => {\n        const updatedValues = formValues ? cloneObject(formValues) : _defaultValues;\n        const cloneUpdatedValues = cloneObject(updatedValues);\n        const isEmptyResetValues = isEmptyObject(formValues);\n        const values = cloneUpdatedValues;\n        if (!keepStateOptions.keepDefaultValues) {\n            _defaultValues = updatedValues;\n        }\n        if (!keepStateOptions.keepValues) {\n            if (keepStateOptions.keepDirtyValues) {\n                const fieldsToCheck = new Set([\n                    ..._names.mount,\n                    ...Object.keys(getDirtyFields(_defaultValues, _formValues)),\n                ]);\n                for (const fieldName of Array.from(fieldsToCheck)) {\n                    const isDirty = get(_formState.dirtyFields, fieldName);\n                    const existingValue = get(_formValues, fieldName);\n                    const newValue = get(values, fieldName);\n                    if (isDirty && !isUndefined(existingValue)) {\n                        set(values, fieldName, existingValue);\n                    }\n                    else if (!isDirty && !isUndefined(newValue)) {\n                        setValue(fieldName, newValue);\n                    }\n                }\n            }\n            else {\n                if (isWeb && isUndefined(formValues)) {\n                    for (const name of _names.mount) {\n                        const field = get(_fields, name);\n                        if (field && field._f) {\n                            const fieldReference = Array.isArray(field._f.refs)\n                                ? field._f.refs[0]\n                                : field._f.ref;\n                            if (isHTMLElement(fieldReference)) {\n                                const form = fieldReference.closest('form');\n                                if (form) {\n                                    form.reset();\n                                    break;\n                                }\n                            }\n                        }\n                    }\n                }\n                if (keepStateOptions.keepFieldsRef) {\n                    for (const fieldName of _names.mount) {\n                        setValue(fieldName, get(values, fieldName));\n                    }\n                }\n                else {\n                    _fields = {};\n                }\n            }\n            if (_options.shouldUnregister) {\n                _formValues = keepStateOptions.keepDefaultValues\n                    ? cloneObject(_defaultValues)\n                    : {};\n                if (keepStateOptions.keepFieldsRef) {\n                    for (const fieldName of _names.mount) {\n                        set(_formValues, fieldName, get(values, fieldName));\n                    }\n                }\n            }\n            else {\n                _formValues = cloneObject(values);\n            }\n            _subjects.array.next({\n                values: { ...values },\n            });\n            _subjects.state.next({\n                name: undefined,\n                type: undefined,\n                values: { ...values },\n            });\n        }\n        _names = {\n            mount: keepStateOptions.keepDirtyValues ? _names.mount : new Set(),\n            unMount: new Set(),\n            array: new Set(),\n            registerName: new Set(),\n            disabled: new Set(),\n            watch: new Set(),\n            watchAll: false,\n            focus: '',\n        };\n        _state.mount =\n            !_proxyFormState.isValid ||\n                !!keepStateOptions.keepIsValid ||\n                !!keepStateOptions.keepDirtyValues ||\n                (!_options.shouldUnregister && !isEmptyObject(values));\n        _state.watch = !!_options.shouldUnregister;\n        _state.keepIsValid = !!keepStateOptions.keepIsValid;\n        _state.action = false;\n        if (!keepStateOptions.keepErrors) {\n            _formState.errors = {};\n        }\n        _subjects.state.next({\n            submitCount: keepStateOptions.keepSubmitCount\n                ? _formState.submitCount\n                : 0,\n            isDirty: isEmptyResetValues\n                ? false\n                : keepStateOptions.keepDirty\n                    ? _formState.isDirty\n                    : keepStateOptions.keepValues\n                        ? _getDirty()\n                        : !!(keepStateOptions.keepDefaultValues &&\n                            !deepEqual(formValues, _defaultValues)),\n            isSubmitted: keepStateOptions.keepIsSubmitted\n                ? _formState.isSubmitted\n                : false,\n            dirtyFields: isEmptyResetValues\n                ? {}\n                : keepStateOptions.keepDirtyValues\n                    ? keepStateOptions.keepDefaultValues && _formValues\n                        ? getDirtyFields(_defaultValues, _formValues)\n                        : _formState.dirtyFields\n                    : keepStateOptions.keepDefaultValues && formValues\n                        ? getDirtyFields(_defaultValues, formValues)\n                        : keepStateOptions.keepDirty\n                            ? _formState.dirtyFields\n                            : {},\n            touchedFields: keepStateOptions.keepTouched\n                ? _formState.touchedFields\n                : {},\n            errors: keepStateOptions.keepErrors ? _formState.errors : {},\n            isSubmitSuccessful: keepStateOptions.keepIsSubmitSuccessful\n                ? _formState.isSubmitSuccessful\n                : false,\n            isSubmitting: false,\n            defaultValues: _defaultValues,\n        });\n    };\n    const reset = (formValues, keepStateOptions) => _reset(isFunction(formValues)\n        ? formValues(_formValues)\n        : formValues, { ..._options.resetOptions, ...keepStateOptions });\n    const setFocus = (name, options = {}) => {\n        const field = get(_fields, name);\n        const fieldReference = field && field._f;\n        if (fieldReference) {\n            const fieldRef = fieldReference.refs\n                ? fieldReference.refs[0]\n                : fieldReference.ref;\n            if (fieldRef.focus) {\n                setTimeout(() => {\n                    fieldRef.focus();\n                    options.shouldSelect &&\n                        isFunction(fieldRef.select) &&\n                        fieldRef.select();\n                });\n            }\n        }\n    };\n    const _setFormState = (updatedFormState) => {\n        // `name`, `type`, and `values` describe the event that produced this\n        // update, not the form's persisted state (they aren't part of\n        // `FormState`). Merging them in would leak a stale `name`/`type` from\n        // one event into a later, unrelated notification that doesn't specify\n        // its own.\n        const { name, type, values, ...formState } = updatedFormState;\n        _formState = {\n            ..._formState,\n            ...formState,\n        };\n    };\n    const _resetDefaultValues = () => isFunction(_options.defaultValues) &&\n        _options.defaultValues().then((values) => {\n            reset(values, _options.resetOptions);\n            _subjects.state.next({\n                isLoading: false,\n            });\n        });\n    const resetDefaultValues = (values, options = {}) => {\n        _defaultValues = cloneObject(values);\n        if (!options.keepDirty) {\n            const newDirtyFields = getDirtyFields(_defaultValues, _formValues);\n            _formState.dirtyFields = newDirtyFields;\n            _formState.isDirty = !isEmptyObject(newDirtyFields);\n        }\n        if (!options.keepIsValid) {\n            _setValid();\n        }\n        _subjects.state.next({\n            ..._formState,\n            defaultValues: _defaultValues,\n        });\n    };\n    const methods = {\n        control: {\n            register,\n            unregister,\n            getFieldState,\n            handleSubmit,\n            setError,\n            _subscribe,\n            _runSchema,\n            _updateIsValidating,\n            _focusError,\n            _getWatch,\n            _getDirty,\n            _setValid,\n            _setFieldArray,\n            _setDisabledField,\n            _setErrors,\n            _getFieldArray,\n            _reset,\n            _resetDefaultValues,\n            _removeUnmounted,\n            _disableForm,\n            _subjects,\n            _proxyFormState,\n            get _fields() {\n                return _fields;\n            },\n            get _formValues() {\n                return _formValues;\n            },\n            get _state() {\n                return _state;\n            },\n            set _state(value) {\n                _state = value;\n            },\n            get _defaultValues() {\n                return _defaultValues;\n            },\n            get _names() {\n                return _names;\n            },\n            set _names(value) {\n                _names = value;\n            },\n            get _formState() {\n                return _formState;\n            },\n            get _options() {\n                return _options;\n            },\n            set _options(value) {\n                _options = {\n                    ..._options,\n                    ...value,\n                };\n                _validationModeBeforeSubmit = getValidationModes(_options.mode);\n                _validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\n            },\n        },\n        subscribe,\n        trigger,\n        register,\n        handleSubmit,\n        watch,\n        setValue,\n        setValues,\n        getValues,\n        reset,\n        resetField,\n        resetDefaultValues,\n        clearErrors,\n        unregister,\n        setError,\n        setFocus,\n        getFieldState,\n    };\n    return {\n        ...methods,\n        formControl: methods,\n    };\n}\n\nvar generateId = () => {\n    if (typeof crypto !== 'undefined' && crypto.randomUUID) {\n        return crypto.randomUUID();\n    }\n    const d = typeof performance === 'undefined' ? Date.now() : performance.now() * 1000;\n    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n        const r = ((Math.random() * 16 + d) % 16) | 0;\n        return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\n    });\n};\n\nvar getFocusFieldName = (name, index, options = {}) => options.shouldFocus || isUndefined(options.shouldFocus)\n    ? options.focusName ||\n        `${name}.${isUndefined(options.focusIndex) ? index : options.focusIndex}.`\n    : '';\n\nvar appendAt = (data, value) => [\n    ...data,\n    ...convertToArrayPayload(value),\n];\n\nvar fillEmptyArray = (value) => Array.isArray(value) ? value.map(() => undefined) : undefined;\n\nfunction insert(data, index, value) {\n    return [\n        ...data.slice(0, index),\n        ...convertToArrayPayload(value),\n        ...data.slice(index),\n    ];\n}\n\nvar moveArrayAt = (data, from, to) => {\n    if (!Array.isArray(data)) {\n        return [];\n    }\n    if (isUndefined(data[to])) {\n        data[to] = undefined;\n    }\n    data.splice(to, 0, data.splice(from, 1)[0]);\n    return data;\n};\n\nvar prependAt = (data, value) => [\n    ...convertToArrayPayload(value),\n    ...convertToArrayPayload(data),\n];\n\nfunction removeAtIndexes(data, indexes) {\n    let i = 0;\n    const temp = [...data];\n    for (const index of indexes) {\n        temp.splice(index - i, 1);\n        i++;\n    }\n    return compact(temp).length ? temp : [];\n}\nvar removeArrayAt = (data, index) => isUndefined(index)\n    ? []\n    : removeAtIndexes(data, convertToArrayPayload(index).sort((a, b) => a - b));\n\nvar swapArrayAt = (data, indexA, indexB) => {\n    [data[indexA], data[indexB]] = [data[indexB], data[indexA]];\n};\n\nvar updateAt = (fieldValues, index, value) => {\n    fieldValues[index] = value;\n    return fieldValues;\n};\n\n/**\n * A custom hook that exposes convenient methods to perform operations with a list of dynamic inputs that need to be appended, updated, removed etc. • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn) • [Video](https://youtu.be/4MrbfGSFY2A)\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/usefieldarray) • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn)\n *\n * @param props - useFieldArray props\n *\n * @returns methods - functions to manipulate with the Field Arrays (dynamic inputs) {@link UseFieldArrayReturn}\n *\n * @example\n * ```tsx\n * function App() {\n *   const { register, control, handleSubmit, reset, trigger, setError } = useForm({\n *     defaultValues: {\n *       test: []\n *     }\n *   });\n *   const { fields, append } = useFieldArray({\n *     control,\n *     name: \"test\"\n *   });\n *\n *   return (\n *     <form onSubmit={handleSubmit(data => console.log(data))}>\n *       {fields.map((item, index) => (\n *          <input key={item.id} {...register(`test.${index}.firstName`)}  />\n *       ))}\n *       <button type=\"button\" onClick={() => append({ firstName: \"bill\" })}>\n *         append\n *       </button>\n *       <input type=\"submit\" />\n *     </form>\n *   );\n * }\n * ```\n */\nfunction useFieldArray(props) {\n    const formControl = useFormControlContext();\n    const { control = formControl, name, keyName = 'id', disabled, shouldUnregister, rules, } = props;\n    const [fields, setFields] = React.useState(control._getFieldArray(name));\n    const ids = React.useRef(control._getFieldArray(name).map(generateId));\n    const _actioned = React.useRef(false);\n    if (!disabled) {\n        control._names.array.add(name);\n    }\n    React.useMemo(() => !disabled &&\n        rules &&\n        fields.length >= 0 &&\n        control.register(name, rules), [control, name, fields.length, rules, disabled]);\n    useIsomorphicLayoutEffect(() => {\n        if (disabled) {\n            return;\n        }\n        return control._subjects.array.subscribe({\n            next: ({ values, name: fieldArrayName, }) => {\n                if (fieldArrayName === name || !fieldArrayName) {\n                    const fieldValues = get(values, name);\n                    if (Array.isArray(fieldValues)) {\n                        setFields(fieldValues);\n                        ids.current = fieldValues.map(generateId);\n                    }\n                    else if (!fieldArrayName) {\n                        setFields([]);\n                        ids.current = [];\n                    }\n                }\n            },\n        }).unsubscribe;\n    }, [control, name, disabled]);\n    const updateValues = React.useCallback((updatedFieldArrayValues) => {\n        _actioned.current = true;\n        control._setFieldArray(name, updatedFieldArrayValues);\n    }, [control, name]);\n    const append = (value, options) => {\n        if (disabled) {\n            return;\n        }\n        const appendValue = convertToArrayPayload(cloneObject(value));\n        const updatedFieldArrayValues = appendAt(control._getFieldArray(name), appendValue);\n        control._names.focus = getFocusFieldName(name, updatedFieldArrayValues.length - 1, options);\n        ids.current = appendAt(ids.current, appendValue.map(generateId));\n        updateValues(updatedFieldArrayValues);\n        setFields(updatedFieldArrayValues);\n        control._setFieldArray(name, updatedFieldArrayValues, appendAt, {\n            argA: fillEmptyArray(value),\n        });\n    };\n    const prepend = (value, options) => {\n        if (disabled) {\n            return;\n        }\n        const prependValue = convertToArrayPayload(cloneObject(value));\n        const updatedFieldArrayValues = prependAt(control._getFieldArray(name), prependValue);\n        control._names.focus = getFocusFieldName(name, 0, options);\n        ids.current = prependAt(ids.current, prependValue.map(generateId));\n        updateValues(updatedFieldArrayValues);\n        setFields(updatedFieldArrayValues);\n        control._setFieldArray(name, updatedFieldArrayValues, prependAt, {\n            argA: fillEmptyArray(value),\n        });\n    };\n    const remove = (index) => {\n        if (disabled) {\n            return;\n        }\n        const updatedFieldArrayValues = removeArrayAt(control._getFieldArray(name), index);\n        ids.current = removeArrayAt(ids.current, index);\n        updateValues(updatedFieldArrayValues);\n        setFields(updatedFieldArrayValues);\n        !Array.isArray(get(control._fields, name)) &&\n            set(control._fields, name, undefined);\n        control._setFieldArray(name, updatedFieldArrayValues, removeArrayAt, {\n            argA: index,\n        });\n    };\n    const insert$1 = (index, value, options) => {\n        if (disabled) {\n            return;\n        }\n        const insertValue = convertToArrayPayload(cloneObject(value));\n        const updatedFieldArrayValues = insert(control._getFieldArray(name), index, insertValue);\n        control._names.focus = getFocusFieldName(name, index, options);\n        ids.current = insert(ids.current, index, insertValue.map(generateId));\n        updateValues(updatedFieldArrayValues);\n        setFields(updatedFieldArrayValues);\n        control._setFieldArray(name, updatedFieldArrayValues, insert, {\n            argA: index,\n            argB: fillEmptyArray(value),\n        });\n    };\n    const swap = (indexA, indexB) => {\n        if (disabled) {\n            return;\n        }\n        const updatedFieldArrayValues = control._getFieldArray(name);\n        swapArrayAt(updatedFieldArrayValues, indexA, indexB);\n        swapArrayAt(ids.current, indexA, indexB);\n        updateValues(updatedFieldArrayValues);\n        setFields(updatedFieldArrayValues);\n        control._setFieldArray(name, updatedFieldArrayValues, swapArrayAt, {\n            argA: indexA,\n            argB: indexB,\n        }, false);\n    };\n    const move = (from, to) => {\n        if (disabled) {\n            return;\n        }\n        const updatedFieldArrayValues = control._getFieldArray(name);\n        moveArrayAt(updatedFieldArrayValues, from, to);\n        moveArrayAt(ids.current, from, to);\n        updateValues(updatedFieldArrayValues);\n        setFields(updatedFieldArrayValues);\n        control._setFieldArray(name, updatedFieldArrayValues, moveArrayAt, {\n            argA: from,\n            argB: to,\n        }, false);\n    };\n    const update = (index, value) => {\n        if (disabled) {\n            return;\n        }\n        const updateValue = cloneObject(value);\n        const updatedFieldArrayValues = updateAt(control._getFieldArray(name), index, updateValue);\n        ids.current = [...updatedFieldArrayValues].map((item, i) => !item || i === index ? generateId() : ids.current[i]);\n        updateValues(updatedFieldArrayValues);\n        setFields([...updatedFieldArrayValues]);\n        control._setFieldArray(name, updatedFieldArrayValues, updateAt, {\n            argA: index,\n            argB: updateValue,\n        }, true, false);\n    };\n    const replace = (value) => {\n        if (disabled) {\n            return;\n        }\n        const updatedFieldArrayValues = convertToArrayPayload(cloneObject(value));\n        ids.current = updatedFieldArrayValues.map(generateId);\n        updateValues([...updatedFieldArrayValues]);\n        setFields([...updatedFieldArrayValues]);\n        control._setFieldArray(name, [...updatedFieldArrayValues], (data) => data, {}, true, false);\n    };\n    React.useEffect(() => {\n        if (disabled) {\n            return;\n        }\n        control._state.action = false;\n        isWatched(name, control._names) &&\n            control._subjects.state.next({\n                ...control._formState,\n            });\n        const validationModes = getValidationModes(control._options.mode);\n        if (_actioned.current &&\n            (!validationModes.isOnSubmit || control._formState.isSubmitted) &&\n            !getValidationModes(control._options.reValidateMode).isOnSubmit &&\n            !validationModes.isOnBlur) {\n            if (control._options.resolver) {\n                control._runSchema([name]).then((result) => {\n                    var _a, _b;\n                    control._updateIsValidating([name]);\n                    const error = get(result.errors, name);\n                    const existingError = get(control._formState.errors, name);\n                    const existingErrorType = existingError && (existingError.type || ((_a = existingError.root) === null || _a === void 0 ? void 0 : _a.type));\n                    const existingErrorMessage = existingError &&\n                        (existingError.message || ((_b = existingError.root) === null || _b === void 0 ? void 0 : _b.message));\n                    if (existingError\n                        ? (!error && existingErrorType) ||\n                            (error &&\n                                (existingErrorType !== error.type ||\n                                    existingErrorMessage !== error.message))\n                        : error && error.type) {\n                        if (error) {\n                            isObject(error) &&\n                                !Object.keys(error).some((key) => !Number.isNaN(+key))\n                                ? updateFieldArrayRootError(control._formState.errors, { [name]: error }, name)\n                                : set(control._formState.errors, name, error);\n                        }\n                        else {\n                            unset(control._formState.errors, name);\n                        }\n                        control._subjects.state.next({\n                            errors: control._formState.errors,\n                        });\n                    }\n                });\n            }\n            else {\n                const field = get(control._fields, name);\n                if (field &&\n                    field._f &&\n                    !(getValidationModes(control._options.reValidateMode).isOnSubmit &&\n                        getValidationModes(control._options.mode).isOnSubmit)) {\n                    validateField(field, control._names.disabled, control._formValues, control._options.criteriaMode === VALIDATION_MODE.all, control._options.shouldUseNativeValidation, true).then((error) => !isEmptyObject(error) &&\n                        control._subjects.state.next({\n                            errors: updateFieldArrayRootError(control._formState.errors, error, name),\n                        }));\n                }\n            }\n        }\n        // External updates that change `fields` (e.g. reset() or setValue() on\n        // the array) already notify subscribers with the up-to-date values\n        // themselves, so only re-broadcast here for genuine array method calls.\n        _actioned.current &&\n            control._subjects.state.next({\n                name,\n                values: cloneObject(control._formValues),\n            });\n        control._names.focus &&\n            iterateFieldsByAction(control._fields, (ref, key) => {\n                if (control._names.focus &&\n                    key.startsWith(control._names.focus) &&\n                    ref.focus) {\n                    ref.focus();\n                    return 1;\n                }\n                return;\n            });\n        control._names.focus = '';\n        control._setValid();\n        _actioned.current = false;\n    }, [fields, name, control, disabled]);\n    React.useEffect(() => {\n        if (!disabled) {\n            !get(control._formValues, name) && control._setFieldArray(name);\n        }\n        return () => {\n            if (disabled) {\n                return;\n            }\n            const shouldKeepFieldArrayValues = !(control._options.shouldUnregister || shouldUnregister);\n            const updateMounted = (name, value) => {\n                const field = get(control._fields, name);\n                if (field && field._f) {\n                    field._f.mount = value;\n                }\n            };\n            if (_actioned.current && shouldKeepFieldArrayValues) {\n                control._subjects.state.next({\n                    name,\n                    values: cloneObject(control._formValues),\n                });\n            }\n            shouldKeepFieldArrayValues\n                ? updateMounted(name, false)\n                : control.unregister(name);\n        };\n    }, [name, control, keyName, shouldUnregister, disabled]);\n    return {\n        swap: React.useCallback(swap, [updateValues, name, control, disabled]),\n        move: React.useCallback(move, [updateValues, name, control, disabled]),\n        prepend: React.useCallback(prepend, [\n            updateValues,\n            name,\n            control,\n            disabled,\n        ]),\n        append: React.useCallback(append, [updateValues, name, control, disabled]),\n        remove: React.useCallback(remove, [updateValues, name, control, disabled]),\n        insert: React.useCallback(insert$1, [updateValues, name, control, disabled]),\n        update: React.useCallback(update, [updateValues, name, control, disabled]),\n        replace: React.useCallback(replace, [\n            updateValues,\n            name,\n            control,\n            disabled,\n        ]),\n        fields: React.useMemo(() => fields.map((field, index) => ({\n            ...field,\n            ...(isBoolean(disabled) ? { disabled } : {}),\n            [keyName]: ids.current[index] || generateId(),\n        })), [fields, keyName, disabled]),\n    };\n}\n\n/**\n * Custom hook to manage the entire form.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useform) • [Demo](https://codesandbox.io/s/react-hook-form-get-started-ts-5ksmm) • [Video](https://www.youtube.com/watch?v=RkXv4AXXC_4)\n *\n * @param props - form configuration and validation parameters.\n *\n * @returns methods - individual functions to manage the form state. {@link UseFormReturn}\n *\n * @example\n * ```tsx\n * function App() {\n *   const { register, handleSubmit, watch, formState: { errors } } = useForm();\n *   const onSubmit = data => console.log(data);\n *\n *   console.log(watch(\"example\"));\n *\n *   return (\n *     <form onSubmit={handleSubmit(onSubmit)}>\n *       <input defaultValue=\"test\" {...register(\"example\")} />\n *       <input {...register(\"exampleRequired\", { required: true })} />\n *       {errors.exampleRequired && <span>This field is required</span>}\n *       <button>Submit</button>\n *     </form>\n *   );\n * }\n * ```\n */\nfunction useForm(props = {}) {\n    const _formControl = React.useRef(undefined);\n    const _values = React.useRef(undefined);\n    const _formControlProp = React.useRef(props.formControl);\n    const [formState, updateFormState] = React.useState(() => ({\n        ...cloneObject(DEFAULT_FORM_STATE),\n        isLoading: isFunction(props.defaultValues),\n        errors: props.errors || {},\n        disabled: props.disabled || false,\n        defaultValues: isFunction(props.defaultValues)\n            ? undefined\n            : props.defaultValues,\n    }));\n    if (!_formControl.current ||\n        (props.formControl && _formControlProp.current !== props.formControl)) {\n        _formControlProp.current = props.formControl;\n        if (props.formControl) {\n            _formControl.current = {\n                ...props.formControl,\n                formState,\n            };\n            if (props.defaultValues && !isFunction(props.defaultValues)) {\n                props.formControl.reset(props.defaultValues, props.resetOptions);\n            }\n        }\n        else {\n            const { formControl, ...rest } = createFormControl(props);\n            _formControl.current = {\n                ...rest,\n                formState,\n            };\n        }\n    }\n    const control = _formControl.current.control;\n    control._options = props;\n    useIsomorphicLayoutEffect(() => {\n        const sub = control._subscribe({\n            formState: control._proxyFormState,\n            callback: () => updateFormState({\n                ...control._formState,\n                defaultValues: control._defaultValues,\n            }),\n            reRenderRoot: true,\n        });\n        updateFormState((data) => ({\n            ...data,\n            isReady: true,\n        }));\n        control._formState.isReady = true;\n        return sub;\n    }, [control]);\n    React.useEffect(() => control._disableForm(props.disabled), [control, props.disabled]);\n    React.useEffect(() => {\n        if (props.mode) {\n            control._options.mode = props.mode;\n        }\n        if (props.reValidateMode) {\n            control._options.reValidateMode = props.reValidateMode;\n        }\n    }, [control, props.mode, props.reValidateMode]);\n    React.useEffect(() => {\n        if (props.errors) {\n            control._setErrors(props.errors);\n            control._focusError();\n        }\n    }, [control, props.errors]);\n    React.useEffect(() => {\n        props.shouldUnregister &&\n            control._subjects.state.next({\n                values: control._getWatch(),\n            });\n    }, [control, props.shouldUnregister]);\n    React.useEffect(() => {\n        if (control._proxyFormState.isDirty) {\n            const isDirty = control._getDirty();\n            if (isDirty !== formState.isDirty) {\n                control._subjects.state.next({\n                    isDirty,\n                });\n            }\n        }\n    }, [control, formState.isDirty]);\n    React.useEffect(() => {\n        var _a;\n        if (props.values && !deepEqual(props.values, _values.current)) {\n            control._reset(props.values, {\n                keepFieldsRef: true,\n                ...control._options.resetOptions,\n            });\n            if (!((_a = control._options.resetOptions) === null || _a === void 0 ? void 0 : _a.keepIsValid)) {\n                control._setValid();\n            }\n            _values.current = props.values;\n            updateFormState((state) => ({ ...state }));\n        }\n        else {\n            control._resetDefaultValues();\n        }\n    }, [control, props.values]);\n    React.useEffect(() => {\n        if (!control._state.mount) {\n            control._setValid();\n            control._state.mount = true;\n        }\n        if (control._state.watch) {\n            control._state.watch = false;\n            control._subjects.state.next({ ...control._formState });\n        }\n        control._removeUnmounted();\n    });\n    _formControl.current.formState = React.useMemo(() => getProxyFormState(formState, control), [control, formState]);\n    return _formControl.current;\n}\n\n/**\n * Watch component that subscribes to form field changes and re-renders when watched fields update.\n *\n * @param control - The form control object from useForm\n * @param name - Can be field name, array of field names, or undefined to watch the entire form\n * @param disabled - Disable subscription\n * @param exact - Whether to watch exact field names or not\n * @param defaultValue - The default value to use if the field is not yet set\n * @param compute - Function to compute derived values from watched fields\n * @param render - The function that receives watched values and returns ReactNode\n * @returns The result of calling render function with watched values\n *\n * @example\n * The `Watch` component only re-render when the values of `foo`, `bar`, and `baz.qux` change.\n * The types of `foo`, `bar`, and `baz.qux` are precisely inferred.\n *\n * ```tsx\n * const { control } = useForm();\n *\n * <Watch\n *   control={control}\n *   names={['foo', 'bar', 'baz.qux']}\n *   render={([foo, bar, baz_qux]) => <div>{foo}{bar}{baz_qux}</div>}\n * />\n * ```\n */\nconst Watch = (props) => props.render(useWatch({ name: props.names, ...props }));\n\nexport { Controller, Form, FormProvider, FormStateSubscribe, Watch, appendErrors, createFormControl, get, set, useController, useFieldArray, useForm, useFormContext, useFormState, useWatch };\n//# sourceMappingURL=index.esm.mjs.map\n","import { getBackendSrv } from '@grafana/runtime';\nimport { formKey } from './config';\nimport type { ConfigField, FieldOverride } from '../../../schema/schema';\n\nexport type DatasourceResponse = Record<string, unknown> & {\n  name: string;\n  id: number;\n  uid: string;\n  access?: 'proxy' | 'direct';\n  type?: string;\n  typeLogoUrl?: string;\n  url?: string;\n  withCredentials?: boolean;\n  basicAuth?: boolean;\n  basicAuthUser?: string;\n  user?: string;\n  database?: string;\n  jsonData?: Record<string, unknown>;\n  secureJsonFields?: Record<string, boolean>;\n  readOnly?: boolean;\n};\n\nexport type DatasourceConfigPayload = {\n  rootFields: Record<string, unknown>;\n  jsonData: Record<string, unknown>;\n  secureJsonData: Record<string, string>;\n  secureJsonFields: Record<string, boolean>;\n};\n\nexport type FormValues = Record<string, unknown>;\n\nexport const SECURE_FIELD_CONFIGURED = '__CONFIGURED__';\n\n// ============================================================\n// secureKey helpers for per-item secure routing\n// ============================================================\n\n/**\n * Resolve a secureKey template string by replacing placeholders.\n *\n * Supported placeholders:\n * - `{index}`  — 0-based array position\n * - `{index1}` — 1-based array position\n * - `{item.KEY}` — value of sibling field `KEY` in the same item object\n */\nexport function resolveSecureKeyTemplate(template: string, item: Record<string, unknown>, index: number): string {\n  return template\n    .replace(/\\{index1\\}/g, String(index + 1))\n    .replace(/\\{index\\}/g, String(index))\n    .replace(/\\{item\\.(\\w+)\\}/g, (_, key) => String(item[key] ?? ''));\n}\n\n/**\n * Evaluate a simple item-scoped condition like `item.secure == true`.\n * Only supports `item.KEY == VALUE` and the literal `true`.\n * Returns false for expressions it cannot evaluate.\n */\nfunction evaluateItemCondition(condition: string, item: Record<string, unknown>): boolean {\n  const trimmed = condition.trim();\n  if (trimmed === 'true') {\n    return true;\n  }\n  // Match: item.KEY == VALUE (with optional quotes)\n  const match = trimmed.match(/^item\\.(\\w+)\\s*==\\s*(.+)$/);\n  if (!match) {\n    return false;\n  }\n  const [, key, rawValue] = match;\n  const actualValue = item[key];\n  // Parse the expected value\n  const expected = rawValue.trim();\n  if (expected === 'true') {\n    return actualValue === true;\n  }\n  if (expected === 'false') {\n    return actualValue === false;\n  }\n  // String comparison (strip quotes)\n  const unquoted = expected.replace(/^['\"]|['\"]$/g, '');\n  return String(actualValue) === unquoted;\n}\n\n/**\n * For a given item object at a given index, find the first active secureKey\n * override across all item fields. Returns the resolved secureJsonData key\n * and the item field key whose value should be routed, or null if none active.\n */\nexport function findActiveSecureOverride(\n  itemFields: ConfigField[],\n  item: Record<string, unknown>,\n  index: number\n): { fieldKey: string; resolvedKey: string } | null {\n  for (const field of itemFields) {\n    if (!field.overrides) {\n      continue;\n    }\n    for (const override of field.overrides) {\n      if (!override.secureKey) {\n        continue;\n      }\n      if (evaluateItemCondition(override.when, item)) {\n        return {\n          fieldKey: field.key,\n          resolvedKey: resolveSecureKeyTemplate(override.secureKey, item, index),\n        };\n      }\n    }\n  }\n  return null;\n}\n\nexport type FetchExistingResult = {\n  values: FormValues;\n  readOnly: boolean;\n  error?: string;\n};\n\n/** Indexed pair item as stored in form values. Each item tracks its original storage index. */\nexport type IndexedPairItem = {\n  /** Original storage index (e.g. 1 for httpHeaderName1). 0 = new item, not yet persisted. */\n  index: number;\n  name: string;\n  value: string;\n};\n\n/**\n * Build a RegExp that matches keys produced by a pattern like \"httpHeaderName{index}\"\n * and captures the numeric index.\n */\nfunction patternToRegex(pattern: string): RegExp {\n  const escaped = pattern.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n  return new RegExp('^' + escaped.replace('\\\\{index\\\\}', '(\\\\d+)') + '$');\n}\n\n/**\n * Find all numeric indices present in a record for a given pattern.\n * E.g. for pattern \"httpHeaderName{index}\" and keys {httpHeaderName1, httpHeaderName3}\n * returns a sorted array [1, 3].\n */\nfunction findIndicesForPattern(record: Record<string, unknown>, pattern: string): number[] {\n  const re = patternToRegex(pattern);\n  const indices: number[] = [];\n  for (const key of Object.keys(record)) {\n    const m = key.match(re);\n    if (m) {\n      const n = Number(m[1]);\n      if (!Number.isNaN(n)) {\n        indices.push(n);\n      }\n    }\n  }\n  return indices.sort((a, b) => a - b);\n}\n\n/**\n * Expand indexed pair storage (e.g. httpHeaderName1..N / httpHeaderValue1..N)\n * into an array of {index, name, value} items for the form.\n * Each item's `index` tracks its storage position so deletes don't shift others.\n * Scans all keys in the source record to find matching indices — no gap heuristics.\n */\nexport function expandIndexedPair(field: ConfigField, ds: DatasourceResponse): IndexedPairItem[] {\n  const storage = field.storage;\n  if (storage?.type !== 'indexedPair' || !storage.key || !storage.value) {\n    return [];\n  }\n  const source = storage.key.target === 'jsonData' ? (ds.jsonData ?? {}) : (ds as Record<string, unknown>);\n  const indices = findIndicesForPattern(source as Record<string, unknown>, storage.key.pattern);\n  const items: IndexedPairItem[] = [];\n  for (const i of indices) {\n    const nameKey = storage.key.pattern.replace('{index}', String(i));\n    const valueKey = storage.value.pattern.replace('{index}', String(i));\n    const nameVal = (source as Record<string, unknown>)[nameKey];\n    if (nameVal === undefined || nameVal === null) {\n      continue;\n    }\n    const hasValue =\n      storage.value.target === 'secureJsonData' ? !!ds.secureJsonFields?.[valueKey] : !!ds.jsonData?.[valueKey];\n    items.push({\n      index: i,\n      name: String(nameVal),\n      value: hasValue ? SECURE_FIELD_CONFIGURED : '',\n    });\n  }\n  return items;\n}\n\n/**\n * Flatten an array of indexed pair items back into individual indexed keys\n * for jsonData and secureJsonData.\n */\nexport function flattenIndexedPair(\n  field: ConfigField,\n  items: IndexedPairItem[],\n  jsonData: Record<string, unknown>,\n  secureJsonData: Record<string, string>,\n  secureJsonFields: Record<string, boolean>\n) {\n  const storage = field.storage;\n  if (storage?.type !== 'indexedPair' || !storage.key || !storage.value) {\n    return;\n  }\n  // Find all existing storage indices by scanning keys in jsonData.\n  const existingIndices = new Set(\n    storage.key.target === 'jsonData'\n      ? findIndicesForPattern(jsonData as Record<string, unknown>, storage.key.pattern)\n      : []\n  );\n\n  // Track which indices are still in use by the surviving items.\n  const usedIndices = new Set<number>();\n  const startIdx = storage.startIndex ?? 1;\n  let nextIndex = existingIndices.size > 0 ? Math.max(...existingIndices) + 1 : startIdx;\n\n  // Write each item at its original index. New items (index === 0) get the next available.\n  for (const item of items) {\n    let idx = item.index;\n    if (idx === 0) {\n      idx = nextIndex++;\n    }\n    usedIndices.add(idx);\n    const nameKey = storage.key.pattern.replace('{index}', String(idx));\n    const valueKey = storage.value.pattern.replace('{index}', String(idx));\n    if (storage.key.target === 'jsonData') {\n      jsonData[nameKey] = item.name;\n    }\n    if (storage.value.target === 'secureJsonData') {\n      if (item.value === SECURE_FIELD_CONFIGURED) {\n        secureJsonFields[valueKey] = true;\n      } else if (item.value) {\n        secureJsonData[valueKey] = item.value;\n        secureJsonFields[valueKey] = false;\n      }\n    } else if (storage.value.target === 'jsonData') {\n      jsonData[valueKey] = item.value;\n    }\n  }\n\n  // Clear deleted indices: indices that existed before but are no longer in use.\n  for (const idx of existingIndices) {\n    if (usedIndices.has(idx)) {\n      continue;\n    }\n    const nameKey = storage.key.pattern.replace('{index}', String(idx));\n    const valueKey = storage.value.pattern.replace('{index}', String(idx));\n    if (storage.key.target === 'jsonData') {\n      delete jsonData[nameKey];\n    }\n    if (storage.value.target === 'secureJsonData') {\n      delete secureJsonFields[valueKey];\n      delete secureJsonData[valueKey];\n    } else if (storage.value.target === 'jsonData') {\n      delete jsonData[valueKey];\n    }\n  }\n}\n\n/**\n * Resolve a dotted storage path against the raw API response.\n * Handles: \"jsonData.server\", \"root.database\", \"secureJsonData.password\"\n */\nfunction resolveRawPath(ref: string, ds: DatasourceResponse): unknown {\n  const trimmed = ref.trim();\n  if (trimmed.startsWith('jsonData.')) {\n    return ds.jsonData?.[trimmed.slice(9)];\n  }\n  if (trimmed.startsWith('root.')) {\n    return (ds as Record<string, unknown>)[trimmed.slice(5)];\n  }\n  return undefined;\n}\n\nexport async function fetchExistingValues(dsUid: string, fields: ConfigField[]): Promise<FetchExistingResult> {\n  try {\n    const ds: DatasourceResponse = await getBackendSrv().get(`/api/datasources/uid/${dsUid}`, undefined, undefined, {\n      showErrorAlert: false,\n    });\n\n    const values: FormValues = {};\n    for (const field of fields) {\n      // Expand indexedPair storage: read httpHeaderName1..N + secureJsonFields httpHeaderValue1..N\n      if (field.storage?.type === 'indexedPair') {\n        values[field.key] = expandIndexedPair(field, ds);\n        continue;\n      }\n      const fk = formKey(field);\n      switch (field.target) {\n        case 'root':\n          if (ds[field.key] !== undefined) {\n            values[fk] = ds[field.key];\n          }\n          break;\n        case 'jsonData':\n          // Section-scoped fields are stored nested: jsonData.{section}.{key}\n          if (field.section) {\n            const sectionObj = ds.jsonData?.[field.section] as Record<string, unknown> | undefined;\n            if (sectionObj?.[field.key] !== undefined) {\n              values[fk] = sectionObj[field.key];\n            }\n          } else if (ds.jsonData?.[field.key] !== undefined) {\n            values[fk] = ds.jsonData[field.key];\n          }\n          break;\n        case 'secureJsonData':\n          if (ds.secureJsonFields?.[field.key]) {\n            values[fk] = SECURE_FIELD_CONFIGURED;\n          }\n          break;\n      }\n\n      // Fallback: if value is still missing and field has storage.read,\n      // resolve the expression against the raw API response.\n      if (values[fk] === undefined && field.storage?.type === 'computed' && field.storage.read) {\n        const fallback = resolveRawPath(field.storage.read, ds);\n        if (fallback !== undefined) {\n          values[fk] = fallback;\n        }\n      }\n    }\n\n    // Post-process arrays with secureKey overrides: for each item, check\n    // whether the item's value is stored in secureJsonFields and mark it.\n    for (const field of fields) {\n      if (field.valueType !== 'array' || !field.item?.fields) {\n        continue;\n      }\n      const itemFields = field.item.fields;\n      const hasSecureOverride = itemFields.some((f) => f.overrides?.some((o) => o.secureKey));\n      if (!hasSecureOverride) {\n        continue;\n      }\n      const fk = formKey(field);\n      const arr = values[fk];\n      if (!Array.isArray(arr)) {\n        continue;\n      }\n      values[fk] = arr.map((item: Record<string, unknown>, idx: number) => {\n        const match = findActiveSecureOverride(itemFields, item, idx);\n        if (match && ds.secureJsonFields?.[match.resolvedKey]) {\n          return { ...item, [match.fieldKey]: SECURE_FIELD_CONFIGURED };\n        }\n        return item;\n      });\n    }\n\n    return { values, readOnly: !!ds.readOnly };\n  } catch (err: unknown) {\n    const message = err instanceof Error ? err.message : 'Failed to load datasource configuration';\n    return { values: {}, readOnly: false, error: message };\n  }\n}\n\nexport function buildDatasourceConfigPayload(\n  data: FormValues,\n  fields: ConfigField[],\n  existing: DatasourceResponse,\n  isFieldVisible: (field: ConfigField) => boolean\n): DatasourceConfigPayload {\n  const rootFields: Record<string, unknown> = {};\n  const jsonData: Record<string, unknown> = { ...(existing.jsonData ?? {}) };\n  const secureJsonData: Record<string, string> = {};\n  const secureJsonFields: Record<string, boolean> = { ...(existing.secureJsonFields ?? {}) };\n\n  for (const field of fields) {\n    // Flatten indexedPair storage back into individual indexed keys\n    if (field.storage?.type === 'indexedPair') {\n      const items = Array.isArray(data[field.key]) ? (data[field.key] as IndexedPairItem[]) : [];\n      flattenIndexedPair(field, items, jsonData, secureJsonData, secureJsonFields);\n      continue;\n    }\n\n    // Always include fields managed by effects (tagged \"managed-by:*\")\n    // even when they're hidden from the UI — their values are set by effects.\n    const isManagedByEffect = field.tags?.some((t) => t.startsWith('managed-by:'));\n    if (!isManagedByEffect && !isFieldVisible(field)) {\n      continue;\n    }\n    const fk = formKey(field);\n    const value = data[fk];\n\n    if (field.target === 'secureJsonData') {\n      if (value === SECURE_FIELD_CONFIGURED) {\n        secureJsonFields[field.key] = true;\n        continue;\n      }\n      if (value && value !== '') {\n        secureJsonData[field.key] = String(value);\n        secureJsonFields[field.key] = false;\n      } else {\n        secureJsonFields[field.key] = false;\n      }\n      continue;\n    }\n\n    if (value === undefined || value === '') {\n      continue;\n    }\n    switch (field.target) {\n      case 'root':\n        rootFields[field.key] = value;\n        break;\n      case 'jsonData':\n        // Section-scoped fields write to jsonData.{section}.{key}\n        if (field.section) {\n          if (!jsonData[field.section] || typeof jsonData[field.section] !== 'object') {\n            jsonData[field.section] = {};\n          }\n          (jsonData[field.section] as Record<string, unknown>)[field.key] = value;\n        } else {\n          jsonData[field.key] = value;\n        }\n        break;\n    }\n  }\n\n  // Post-process arrays with secureKey overrides: route values to secureJsonData\n  // and clean up stale secure keys from previous saves.\n  for (const field of fields) {\n    if (field.valueType !== 'array' || !field.item?.fields || field.target !== 'jsonData') {\n      continue;\n    }\n    const itemFields = field.item.fields;\n    const hasSecureOverride = itemFields.some((f) => f.overrides?.some((o) => o.secureKey));\n    if (!hasSecureOverride) {\n      continue;\n    }\n    const arr = (\n      field.section ? (jsonData[field.section] as Record<string, unknown>)?.[field.key] : jsonData[field.key]\n    ) as Array<Record<string, unknown>> | undefined;\n    if (!Array.isArray(arr)) {\n      continue;\n    }\n\n    // Collect all secureKey patterns from this field's item overrides for cleanup\n    const secureKeyOverrides: Array<{ fieldKey: string; override: FieldOverride }> = [];\n    for (const f of itemFields) {\n      for (const o of f.overrides ?? []) {\n        if (o.secureKey) {\n          secureKeyOverrides.push({ fieldKey: f.key, override: o });\n        }\n      }\n    }\n\n    // Track which secure keys are still active so we can remove stale ones\n    const activeSecureKeys = new Set<string>();\n\n    for (let i = 0; i < arr.length; i++) {\n      const item = arr[i];\n      const match = findActiveSecureOverride(itemFields, item, i);\n      if (!match) {\n        continue;\n      }\n      const resolvedKey = match.resolvedKey;\n      activeSecureKeys.add(resolvedKey);\n      const itemValue = item[match.fieldKey];\n\n      if (itemValue === SECURE_FIELD_CONFIGURED) {\n        // Value already stored in secureJsonData, keep it\n        secureJsonFields[resolvedKey] = true;\n      } else if (itemValue && itemValue !== '') {\n        // New or updated secret value — route to secureJsonData\n        secureJsonData[resolvedKey] = String(itemValue);\n        secureJsonFields[resolvedKey] = false;\n        // Clear the value from the inline array\n        item[match.fieldKey] = '';\n      }\n    }\n\n    // Remove stale secure keys that were previously set but are no longer in the array\n    const existingSecureFields = existing.secureJsonFields ?? {};\n    for (const existingKey of Object.keys(existingSecureFields)) {\n      // Check if this key could have been produced by any of this field's secureKey templates\n      const couldBeFromThisField = secureKeyOverrides.some((sko) => {\n        // Simple heuristic: check if the existing key starts with the static prefix\n        // of the template (everything before the first placeholder)\n        const staticPrefix = sko.override.secureKey!.split('{')[0];\n        return staticPrefix && existingKey.startsWith(staticPrefix);\n      });\n      if (couldBeFromThisField && !activeSecureKeys.has(existingKey)) {\n        secureJsonFields[existingKey] = false;\n        secureJsonData[existingKey] = '';\n      }\n    }\n  }\n\n  return { rootFields, jsonData, secureJsonData, secureJsonFields };\n}\n\nexport async function submitDatasourceConfig(\n  dsUid: string,\n  data: FormValues,\n  fields: ConfigField[],\n  isFieldVisible: (field: ConfigField) => boolean\n): Promise<void> {\n  const existing: DatasourceResponse = await getBackendSrv().get(`/api/datasources/uid/${dsUid}`);\n  const { rootFields, jsonData, secureJsonData, secureJsonFields } = buildDatasourceConfigPayload(\n    data,\n    fields,\n    existing,\n    isFieldVisible\n  );\n\n  await getBackendSrv().put(`/api/datasources/uid/${dsUid}`, {\n    ...existing,\n    ...rootFields,\n    jsonData,\n    secureJsonData,\n    secureJsonFields,\n  });\n}\n","import { parseDependsOn, evaluateDependsOn, formKey, getWatchedValue } from '../config';\nimport { evaluateCelExpression } from '../cel';\nimport { SECURE_FIELD_CONFIGURED } from '../datasource';\nimport type { ConfigField } from '../../../../schema/schema';\n\n/**\n * Evaluate an effect's `when` condition against a field value.\n * Supports: \"value == 'literal'\", \"value == true\", \"value != 'literal'\"\n * The keyword `value` refers to the current value of the source field.\n */\nexport function evaluateEffectCondition(when: string, fieldValue: unknown): boolean {\n  const m = when.match(/^value\\s*(==|!=)\\s*(?:'([^']*)'|\"([^\"]*)\"|(.+))$/);\n  if (!m) {\n    return false;\n  }\n  const op = m[1];\n  let target: unknown = m[2] ?? m[3] ?? m[4];\n  if (target === 'true') {\n    target = true;\n  } else if (target === 'false') {\n    target = false;\n  } else if (typeof target === 'string' && /^-?\\d+(\\.\\d+)?$/.test(target)) {\n    target = Number(target);\n  }\n\n  const eq = String(fieldValue) === String(target);\n  return op === '==' ? eq : !eq;\n}\n\n/**\n * Evaluate whether a field is currently required, considering both the static\n * `required` flag and the conditional `requiredWhen` expression.\n */\nexport function isFieldRequired(\n  field: ConfigField,\n  watchedValues: Record<string, unknown>,\n  fieldById: Map<string, ConfigField>,\n  celContext?: Record<string, unknown>\n): boolean {\n  if (field.required) {\n    return true;\n  }\n  if (field.requiredWhen) {\n    // Use CEL evaluation if context is available (supports compound expressions)\n    if (celContext) {\n      return evaluateCelExpression(field.requiredWhen, celContext);\n    }\n    // Fallback to simple parser for backward compatibility\n    const parsed = parseDependsOn(field.requiredWhen);\n    if (parsed) {\n      const depField = fieldById.get(parsed.field);\n      const depKey = depField ? formKey(depField) : parsed.field;\n      return evaluateDependsOn(parsed, getWatchedValue(watchedValues, depKey));\n    }\n  }\n  return false;\n}\n\nexport function buildValidationRules(field: ConfigField, required: boolean) {\n  const rules: Record<string, unknown> = {};\n  const label = field.label ?? field.key;\n\n  if (required) {\n    if (field.target === 'secureJsonData') {\n      rules.validate = (value: unknown) => {\n        if (value === SECURE_FIELD_CONFIGURED) {\n          return true;\n        }\n        if (!value || value === '') {\n          return `${label} is required`;\n        }\n        return true;\n      };\n    } else {\n      rules.required = `${label} is required`;\n    }\n  }\n\n  // Validate required item fields inside object arrays.\n  // Returns a JSON-encoded map of {itemIndex: \"message\"} so ObjectArrayEditor\n  // can render errors inline per item. react-hook-form treats any non-true\n  // string as an error message.\n  if (field.valueType === 'array' && field.item?.valueType === 'object' && field.item.fields?.length) {\n    const requiredItemFields = field.item.fields.filter((f) => f.required);\n    if (requiredItemFields.length > 0) {\n      const existingValidate = rules.validate as ((v: unknown) => true | string) | undefined;\n      rules.validate = (value: unknown) => {\n        if (existingValidate) {\n          const r = existingValidate(value);\n          if (r !== true) {\n            return r;\n          }\n        }\n        if (!Array.isArray(value)) {\n          return true;\n        }\n        const itemErrors: Record<number, string> = {};\n        for (let i = 0; i < value.length; i++) {\n          const item = value[i] as Record<string, unknown>;\n          const missing: string[] = [];\n          for (const rf of requiredItemFields) {\n            const v = item[rf.key];\n            if (v === undefined || v === null || v === '') {\n              missing.push(rf.label ?? rf.key);\n            }\n          }\n          if (missing.length > 0) {\n            itemErrors[i] = `${missing.join(', ')} required`;\n          }\n        }\n        if (Object.keys(itemErrors).length === 0) {\n          return true;\n        }\n        // Encode as JSON so ObjectArrayEditor can parse and show per-item\n        return `__ITEM_ERRORS__${JSON.stringify(itemErrors)}`;\n      };\n    }\n  }\n\n  if (field.validations) {\n    for (const v of field.validations) {\n      switch (v.type) {\n        case 'pattern':\n          rules.pattern = {\n            value: new RegExp(v.pattern),\n            message: v.message ?? `Invalid ${label}`,\n          };\n          break;\n        case 'range':\n          if (v.min !== undefined) {\n            rules.min = { value: v.min, message: v.message ?? `Minimum value is ${v.min}` };\n          }\n          if (v.max !== undefined) {\n            rules.max = { value: v.max, message: v.message ?? `Maximum value is ${v.max}` };\n          }\n          break;\n        case 'length':\n          if (v.min !== undefined) {\n            rules.minLength = { value: v.min, message: v.message ?? `Minimum length is ${v.min}` };\n          }\n          if (v.max !== undefined) {\n            rules.maxLength = { value: v.max, message: v.message ?? `Maximum length is ${v.max}` };\n          }\n          break;\n      }\n    }\n  }\n\n  return rules;\n}\nconst ITEM_ERRORS_PREFIX = '__ITEM_ERRORS__';\n\n/**\n * Parse a per-item error message encoded by buildValidationRules.\n * Returns a map of item index → error message, or null if not an item error.\n */\nexport function parseItemErrors(errorMessage: string | undefined): Record<number, string> | null {\n  if (!errorMessage || !errorMessage.startsWith(ITEM_ERRORS_PREFIX)) {\n    return null;\n  }\n  try {\n    return JSON.parse(errorMessage.slice(ITEM_ERRORS_PREFIX.length));\n  } catch {\n    return null;\n  }\n}\n","import React from 'react';\nimport { Input, Select, RadioButtonGroup, Switch, TextArea } from '@grafana/ui';\nimport type { FieldInputProps } from './types';\n\n/** Plain text input — the default when no other kind matches. */\nexport function TextInput({ field, formField, disabled }: FieldInputProps) {\n  return (\n    <Input\n      {...formField}\n      value={String(formField.value ?? '')}\n      placeholder={field.ui?.placeholder}\n      disabled={disabled}\n    />\n  );\n}\n\n/** Numeric input that preserves `undefined` for empty/NaN values. */\nexport function NumberInput({ field, formField, disabled }: FieldInputProps) {\n  const value = formField.value;\n  return (\n    <Input\n      {...formField}\n      value={value !== undefined && value !== null ? Number(value) : ''}\n      type=\"number\"\n      placeholder={field.ui?.placeholder}\n      disabled={disabled}\n      onChange={(e) => {\n        const n = e.currentTarget.valueAsNumber;\n        formField.onChange(Number.isNaN(n) ? undefined : n);\n      }}\n    />\n  );\n}\n\n/** Boolean toggle. */\nexport function BooleanInput({ formField, disabled }: FieldInputProps) {\n  return (\n    <Switch\n      value={!!formField.value}\n      onChange={(e) => formField.onChange(e.currentTarget.checked)}\n      disabled={disabled}\n    />\n  );\n}\n\n/** Multi-line text input. */\nexport function TextAreaInput({ field, formField, disabled }: FieldInputProps) {\n  return (\n    <TextArea\n      {...formField}\n      value={String(formField.value ?? '')}\n      placeholder={field.ui?.placeholder}\n      disabled={disabled}\n      rows={field.ui?.rows ?? 3}\n    />\n  );\n}\n\n/** Dropdown select. Values are compared as strings to match the option list. */\nexport function SelectInput({ field, formField, disabled }: FieldInputProps) {\n  const options = (field.ui?.options ?? []).map((opt) => ({\n    label: opt.label,\n    value: String(opt.value),\n    description: opt.description,\n  }));\n  return (\n    <Select\n      options={options}\n      value={options.find((o) => o.value === String(formField.value ?? ''))}\n      onChange={(v) => formField.onChange(v?.value)}\n      disabled={disabled}\n    />\n  );\n}\n\n/** Radio button group. Preserves the field's native number type on change. */\nexport function RadioInput({ field, formField, disabled }: FieldInputProps) {\n  const options = (field.ui?.options ?? []).map((opt) => ({\n    label: opt.label,\n    value: String(opt.value),\n    description: opt.description,\n  }));\n  return (\n    <div style={{ display: 'flex' }}>\n      <RadioButtonGroup\n        options={options}\n        value={String(formField.value ?? '')}\n        onChange={(v) => {\n          // Preserve the field's native type when the radio value is selected.\n          if (field.valueType === 'number') {\n            const n = Number(v);\n            formField.onChange(Number.isNaN(n) ? v : n);\n          } else {\n            formField.onChange(v);\n          }\n        }}\n        disabled={disabled}\n      />\n    </div>\n  );\n}\n","import React, { useState } from 'react';\nimport { css } from '@emotion/css';\nimport type { GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2, Button, Input, Icon } from '@grafana/ui';\nimport { SECURE_FIELD_CONFIGURED } from '../datasource';\nimport type { FormFieldRef, FieldInputProps } from './types';\n\ntype Props = {\n  formField: FormFieldRef;\n  placeholder?: string;\n  disabled?: boolean;\n  label: string;\n};\n\n/** Password/token stored in secureJsonData. */\nexport function SecureInput({ field, formField, disabled }: FieldInputProps) {\n  const label = field.label ?? field.key;\n  return (\n    <SecureFieldInput\n      formField={formField}\n      placeholder={field.ui?.placeholder ?? label}\n      disabled={disabled}\n      label={label}\n    />\n  );\n}\n\nexport function SecureFieldInput(props: Props) {\n  const { formField, placeholder, disabled } = props;\n  const isConfigured = formField.value === SECURE_FIELD_CONFIGURED;\n  const [revealed, setRevealed] = useState(false);\n  const styles = useStyles2(getSecureFieldStyles);\n\n  if (isConfigured) {\n    return (\n      <div className={styles.configuredRow}>\n        <span className={styles.configuredBadge}>\n          <Icon name=\"lock\" size=\"xs\" />\n          Configured\n        </span>\n        {!disabled && (\n          <Button variant=\"secondary\" fill=\"text\" size=\"sm\" onClick={() => formField.onChange('')} type=\"button\">\n            Reset\n          </Button>\n        )}\n      </div>\n    );\n  }\n\n  return (\n    <Input\n      {...formField}\n      value={String(formField.value ?? '')}\n      type={revealed ? 'text' : 'password'}\n      placeholder={placeholder}\n      disabled={disabled}\n      suffix={\n        <Button\n          variant=\"secondary\"\n          fill=\"text\"\n          size=\"sm\"\n          icon={revealed ? 'eye-slash' : 'eye'}\n          aria-label={revealed ? 'Hide' : 'Reveal'}\n          onClick={() => setRevealed((r) => !r)}\n          type=\"button\"\n        />\n      }\n    />\n  );\n}\n\nexport const getSecureFieldStyles = (theme: GrafanaTheme2) => ({\n  configuredRow: css({\n    display: 'flex',\n    alignItems: 'center',\n    gap: theme.spacing(1),\n    whiteSpace: 'nowrap',\n  }),\n  configuredBadge: css({\n    display: 'inline-flex',\n    alignItems: 'center',\n    gap: theme.spacing(0.5),\n    padding: `${theme.spacing(0.25)} ${theme.spacing(0.75)}`,\n    borderRadius: theme.shape.radius.pill,\n    backgroundColor: theme.colors.success.transparent,\n    color: theme.colors.success.text,\n    fontSize: theme.typography.bodySmall.fontSize,\n    whiteSpace: 'nowrap',\n  }),\n});\n","import React, { useEffect, useRef } from 'react';\nimport { css } from '@emotion/css';\nimport { useStyles2, Button, Input, Stack, Tooltip } from '@grafana/ui';\nimport type { GrafanaTheme2 } from '@grafana/data';\nimport type { FieldInputProps } from './types';\n\ntype Props = {\n  value: string[];\n  onChange: (v: string[]) => void;\n  placeholder?: string;\n  disabled?: boolean;\n  itemLabel?: string;\n};\n\nexport function StringArrayField({ field, formField, disabled }: FieldInputProps) {\n  const label = field.label ?? field.key;\n  return (\n    <StringArrayInput\n      value={Array.isArray(formField.value) ? (formField.value as string[]) : []}\n      onChange={formField.onChange}\n      placeholder={field.ui?.placeholder}\n      disabled={disabled}\n      itemLabel={label.toLowerCase().replace(/s$/, '')}\n    />\n  );\n}\n\nexport const StringArrayInput = (props: Props) => {\n  const { value, onChange, placeholder, disabled, itemLabel = 'item' } = props;\n  const styles = useStyles2(getStyles);\n  const items = Array.isArray(value) ? value : [];\n\n  const lastInputRef = useRef<HTMLInputElement | null>(null);\n  const shouldFocusLastRef = useRef(false);\n\n  useEffect(() => {\n    if (shouldFocusLastRef.current && lastInputRef.current) {\n      lastInputRef.current.focus();\n      shouldFocusLastRef.current = false;\n    }\n  }, [items.length]);\n\n  const addItem = () => {\n    shouldFocusLastRef.current = true;\n    onChange([...items, '']);\n  };\n\n  const removeItem = (index: number) => {\n    onChange(items.filter((_, i) => i !== index));\n  };\n\n  const updateItem = (index: number, val: string) => {\n    onChange(items.map((item, i) => (i === index ? val : item)));\n  };\n\n  const isItemValid = (index: number, val: string): boolean => {\n    const trimmed = val.trim();\n    if (trimmed === '') {\n      return false;\n    }\n    return !items.some((item, i) => i !== index && item.trim() === trimmed);\n  };\n\n  const handleEnter = (index: number, currentValue: string) => {\n    if (!isItemValid(index, currentValue)) {\n      return;\n    }\n    if (index === items.length - 1) {\n      shouldFocusLastRef.current = true;\n      onChange([...items, '']);\n    }\n  };\n\n  return (\n    <Stack direction=\"column\" gap={0.5}>\n      {items.map((item, i) => (\n        <Stack direction=\"row\" gap={1} key={i}>\n          <div className={styles.inputCell}>\n            <Input\n              ref={i === items.length - 1 ? lastInputRef : undefined}\n              value={item}\n              placeholder={placeholder ?? itemLabel}\n              disabled={disabled}\n              onChange={(e) => updateItem(i, e.currentTarget.value)}\n              onKeyDown={(e) => {\n                if (e.key === 'Enter') {\n                  e.preventDefault();\n                  handleEnter(i, e.currentTarget.value);\n                }\n              }}\n            />\n          </div>\n          {!disabled && (\n            <Tooltip content={`Remove ${itemLabel}`}>\n              <Button\n                variant=\"secondary\"\n                fill=\"text\"\n                size=\"sm\"\n                icon=\"trash-alt\"\n                aria-label={`Remove ${itemLabel}`}\n                onClick={() => removeItem(i)}\n                type=\"button\"\n              />\n            </Tooltip>\n          )}\n        </Stack>\n      ))}\n      {!disabled && (\n        <div>\n          <Button variant=\"secondary\" size=\"sm\" icon=\"plus\" onClick={addItem} type=\"button\">\n            Add\n          </Button>\n        </div>\n      )}\n    </Stack>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  inputCell: css({\n    flex: '1 1 0',\n    minWidth: 0,\n    overflow: 'hidden',\n  }),\n});\n","import React, { useState } from 'react';\nimport { css } from '@emotion/css';\nimport { useStyles2, Button, Input, Icon, Tooltip, Stack } from '@grafana/ui';\nimport { SECURE_FIELD_CONFIGURED, type IndexedPairItem } from '../datasource';\nimport { getSecureFieldStyles } from './SecureFieldInput';\nimport type { GrafanaTheme2 } from '@grafana/data';\nimport type { FieldInputProps } from './types';\n\ntype Props = {\n  value: IndexedPairItem[];\n  onChange: (items: IndexedPairItem[]) => void;\n  maxItems?: number;\n  disabled?: boolean;\n  hideControls?: boolean;\n  itemLabel?: string;\n};\n\n/** Editable key/value list backed by indexed storage (e.g. HTTP headers). */\nexport function IndexedPairInput({ field, formField, disabled }: FieldInputProps) {\n  const items = Array.isArray(formField.value) ? (formField.value as IndexedPairItem[]) : [];\n  const maxItems =\n    field.validations?.find((v): v is { type: 'itemCount'; max?: number } => v.type === 'itemCount')?.max ?? 10;\n  const itemLabel = field.label?.toLowerCase().replace(/s$/, '') ?? 'header';\n  return (\n    <IndexedPairEditor\n      value={items}\n      onChange={formField.onChange}\n      maxItems={maxItems}\n      disabled={disabled}\n      itemLabel={itemLabel}\n    />\n  );\n}\n\nexport const IndexedPairEditor = (props: Props) => {\n  const { value, onChange, maxItems = 10, disabled, hideControls, itemLabel = 'header' } = props;\n  const styles = useStyles2(getStyles);\n  const items = Array.isArray(value) ? value : [];\n  const addItem = () => {\n    if (items.length >= maxItems) {\n      return;\n    }\n    onChange([...items, { index: 0, name: '', value: '' }]);\n  };\n  const removeItem = (index: number) => {\n    onChange(items.filter((_, i) => i !== index));\n  };\n  const updateItem = (index: number, key: 'name' | 'value', val: string) => {\n    const updated = items.map((item, i) => (i === index ? { ...item, [key]: val } : item));\n    onChange(updated);\n  };\n  return (\n    <Stack direction=\"column\" gap={0.5}>\n      {items.map((item, i) => (\n        <IndexedPairRow\n          key={item.index || `new-${i}`}\n          item={item}\n          index={i}\n          disabled={disabled}\n          onUpdate={updateItem}\n          onRemove={removeItem}\n          hideControls={hideControls}\n          itemLabel={itemLabel}\n        />\n      ))}\n      {!hideControls && items.length < maxItems && (\n        <div>\n          <Button variant=\"secondary\" size=\"sm\" icon=\"plus\" disabled={disabled} onClick={addItem} type=\"button\">\n            Add {itemLabel}\n          </Button>\n        </div>\n      )}\n      {!hideControls && items.length >= maxItems && (\n        <span className={styles.limitNote}>\n          Maximum {maxItems} {itemLabel}s reached\n        </span>\n      )}\n    </Stack>\n  );\n};\n\ntype IndexedPairRowProps = {\n  item: IndexedPairItem;\n  index: number;\n  disabled?: boolean;\n  onUpdate: (index: number, key: 'name' | 'value', val: string) => void;\n  onRemove: (index: number) => void;\n  hideControls?: boolean;\n  itemLabel?: string;\n};\n\nconst IndexedPairRow = (props: IndexedPairRowProps) => {\n  const { item, index, disabled, onUpdate, onRemove, hideControls, itemLabel = 'header' } = props;\n  const styles = useStyles2(getStyles);\n  const secureStyles = useStyles2(getSecureFieldStyles);\n  const isConfigured = item.value === SECURE_FIELD_CONFIGURED;\n  const [editing, setEditing] = useState(false);\n  const [revealed, setRevealed] = useState(false);\n  return (\n    <Stack direction=\"row\" gap={1}>\n      <div className={styles.inputCell}>\n        <Input\n          value={item.name}\n          placeholder=\"key\"\n          disabled={disabled || hideControls}\n          onChange={(e) => onUpdate(index, 'name', e.currentTarget.value)}\n          onKeyDown={(e) => {\n            if (e.key === 'Enter') {\n              e.preventDefault();\n            }\n          }}\n        />\n      </div>\n      <div className={styles.inputCell}>\n        {isConfigured && !editing ? (\n          <Stack direction=\"row\" gap={1} alignItems=\"center\">\n            <span className={secureStyles.configuredBadge}>\n              <Icon name=\"lock\" size=\"xs\" />\n              Configured\n            </span>\n            {!disabled && (\n              <Button\n                variant=\"secondary\"\n                fill=\"text\"\n                size=\"sm\"\n                onClick={() => {\n                  setEditing(true);\n                  onUpdate(index, 'value', '');\n                }}\n                type=\"button\"\n              >\n                Reset\n              </Button>\n            )}\n          </Stack>\n        ) : (\n          <Input\n            value={item.value === SECURE_FIELD_CONFIGURED ? '' : item.value}\n            placeholder={`${itemLabel} value`}\n            disabled={disabled}\n            type={revealed ? 'text' : 'password'}\n            onChange={(e) => onUpdate(index, 'value', e.currentTarget.value)}\n            onKeyDown={(e) => {\n              if (e.key === 'Enter') {\n                e.preventDefault();\n              }\n            }}\n            suffix={\n              <Button\n                variant=\"secondary\"\n                fill=\"text\"\n                size=\"sm\"\n                icon={revealed ? 'eye-slash' : 'eye'}\n                aria-label={revealed ? 'Hide' : 'Reveal'}\n                onClick={() => setRevealed((r) => !r)}\n                type=\"button\"\n              />\n            }\n          />\n        )}\n      </div>\n      {!hideControls && (\n        <Tooltip content={`Remove ${itemLabel}`}>\n          <Button\n            variant=\"secondary\"\n            fill=\"text\"\n            size=\"sm\"\n            icon=\"trash-alt\"\n            aria-label={`Remove ${itemLabel}`}\n            disabled={disabled}\n            onClick={() => onRemove(index)}\n            type=\"button\"\n          />\n        </Tooltip>\n      )}\n    </Stack>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  inputCell: css({\n    flex: '1 1 0',\n    minWidth: 0,\n    overflow: 'hidden',\n  }),\n  limitNote: css({\n    fontSize: theme.typography.bodySmall.fontSize,\n    color: theme.colors.text.secondary,\n  }),\n});\n","import React, { useState, useCallback } from 'react';\nimport { FileDropzone, TextArea, Button, useTheme2 } from '@grafana/ui';\nimport { css } from '@emotion/css';\nimport type { ConfigField } from '../../../../schema/schema';\nimport type { FormFieldRef, FieldInputProps } from './types';\n\ntype EntryMode = 'upload' | 'paste' | 'manual';\n\ntype Props = {\n  field: ConfigField;\n  formField: FormFieldRef;\n  disabled?: boolean;\n  setValue: (name: string, value: unknown) => void;\n};\n\nexport function FileUploadInput({ field, formField, disabled, setValue }: FieldInputProps) {\n  // Only reachable when setValue exists (see resolveFieldInputKind), but guard anyway.\n  if (!setValue) {\n    return null;\n  }\n  return <FileUploadField field={field} formField={formField} disabled={disabled} setValue={setValue} />;\n}\n\nfunction FileUploadField(props: Props) {\n  const { field, formField, disabled, setValue } = props;\n  const [mode, setModeLocal] = useState<EntryMode>('upload');\n  const [error, setError] = useState<string | null>(null);\n  const theme = useTheme2();\n  const mapping = field.ui?.fileMapping;\n  const accept = field.ui?.accept ?? ['.json'];\n\n  // Write mode into this field's own Controller value so dependsOn can observe it.\n  // e.g. other fields use dependsOn: \"virtual.jwtUpload == 'manual'\" to show/hide.\n  const setMode = useCallback(\n    (next: EntryMode) => {\n      setModeLocal(next);\n      formField.onChange(next);\n    },\n    [formField]\n  );\n\n  const processJson = useCallback(\n    (text: string) => {\n      const fileMapping = mapping ?? {};\n      try {\n        const parsed = JSON.parse(text);\n        if (typeof parsed !== 'object' || parsed === null) {\n          setError('Invalid JSON object');\n          return;\n        }\n        const requiredKeys = Object.keys(fileMapping);\n        const missingKeys = requiredKeys.filter((k) => parsed[k] === undefined);\n        if (missingKeys.length > 0) {\n          setError(`Missing keys: ${missingKeys.join(', ')}`);\n          return;\n        }\n        for (const [jsonKey, targetFieldId] of Object.entries(fileMapping)) {\n          if (parsed[jsonKey] !== undefined) {\n            const parts = targetFieldId.split('.');\n            const fk = parts.length === 2 ? parts[1] : targetFieldId;\n            setValue(fk, parsed[jsonKey]);\n          }\n        }\n        setError(null);\n        setModeLocal('manual');\n        formField.onChange('manual');\n      } catch {\n        setError('Invalid JSON');\n      }\n    },\n    [mapping, setValue, formField]\n  );\n\n  const styles = getStyles(theme);\n\n  // Manual mode: just show toggle buttons, fields below are rendered by schema\n  if (mode === 'manual') {\n    return (\n      <div className={styles.buttonRow}>\n        <Button type=\"button\" fill=\"outline\" size=\"sm\" onClick={() => setMode('paste')} disabled={disabled}>\n          Paste JWT Token\n        </Button>\n        <span className={styles.separator}>or</span>\n        <Button type=\"button\" fill=\"outline\" size=\"sm\" onClick={() => setMode('upload')} disabled={disabled}>\n          Upload JWT Token\n        </Button>\n      </div>\n    );\n  }\n\n  // Paste mode: textarea + toggle buttons\n  if (mode === 'paste') {\n    return (\n      <div>\n        <TextArea\n          placeholder={field.ui?.placeholder ?? 'Paste Google JWT token here'}\n          rows={field.ui?.rows ?? 10}\n          onBlur={(e) => {\n            const val = e.currentTarget.value;\n            if (val.trim()) {\n              processJson(val);\n            }\n          }}\n          disabled={disabled}\n        />\n        <div className={styles.buttonRow}>\n          <Button type=\"button\" fill=\"outline\" size=\"sm\" onClick={() => setMode('upload')} disabled={disabled}>\n            Upload JWT Token\n          </Button>\n          <span className={styles.separator}>or</span>\n          <Button type=\"button\" fill=\"outline\" size=\"sm\" onClick={() => setMode('manual')} disabled={disabled}>\n            Fill In JWT Token manually\n          </Button>\n        </div>\n        {error && <span className={styles.error}>{error}</span>}\n      </div>\n    );\n  }\n\n  // Upload mode (default): FileDropzone + toggle buttons\n  return (\n    <div>\n      <FileDropzone\n        options={{ multiple: false, accept: accept.join(',') }}\n        readAs=\"readAsText\"\n        onLoad={(result) => {\n          if (typeof result === 'string') {\n            processJson(result);\n          }\n        }}\n      />\n      <div className={styles.buttonRow}>\n        <Button type=\"button\" fill=\"outline\" size=\"sm\" onClick={() => setMode('paste')} disabled={disabled}>\n          Paste JWT Token\n        </Button>\n        <span className={styles.separator}>or</span>\n        <Button type=\"button\" fill=\"outline\" size=\"sm\" onClick={() => setMode('manual')} disabled={disabled}>\n          Fill In JWT Token manually\n        </Button>\n      </div>\n      {error && <span className={styles.error}>{error}</span>}\n    </div>\n  );\n}\n\nfunction getStyles(theme: ReturnType<typeof useTheme2>) {\n  return {\n    buttonRow: css({\n      marginTop: theme.spacing(1),\n      display: 'flex',\n      alignItems: 'center',\n      gap: theme.spacing(0.5),\n    }),\n    separator: css({\n      padding: `0 ${theme.spacing(0.5)}`,\n      color: theme.colors.text.secondary,\n    }),\n    error: css({\n      color: theme.colors.error.text,\n      fontSize: theme.typography.bodySmall.fontSize,\n      marginTop: theme.spacing(0.5),\n      display: 'block',\n    }),\n  };\n}\n","import React from 'react';\nimport { css } from '@emotion/css';\nimport { useStyles2, Button, Tooltip, Stack } from '@grafana/ui';\nimport { SECURE_FIELD_CONFIGURED, findActiveSecureOverride } from '../datasource';\nimport { FieldInput } from './FieldInput';\nimport { parseItemErrors } from './fieldUtils';\nimport { type ConfigField } from '../../../../schema/schema';\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { type FormFieldRef, type FieldInputProps } from './types';\n\ntype Props = {\n  field: ConfigField;\n  value: unknown;\n  onChange: (items: Array<Record<string, unknown>>) => void;\n  disabled?: boolean;\n  errorMessage?: string;\n};\n\n/** Inline editor for an array of objects with defined item fields. */\nexport function ObjectArrayInput({ field, formField, disabled, errorMessage }: FieldInputProps) {\n  return (\n    <ObjectArrayEditor\n      field={field}\n      value={formField.value}\n      onChange={formField.onChange}\n      disabled={disabled}\n      errorMessage={errorMessage}\n    />\n  );\n}\n\nfunction ObjectArrayEditor(props: Props) {\n  const { field, value, onChange, disabled, errorMessage } = props;\n  const styles = useStyles2(getStyles);\n  const itemFields = field.item?.fields ?? [];\n  const layoutRows = computeLayoutRows(itemFields);\n  const items = Array.isArray(value) ? (value as Array<Record<string, unknown>>) : [];\n  const maxItems =\n    field.validations?.find((v): v is { type: 'itemCount'; max?: number } => v.type === 'itemCount')?.max ?? 20;\n  const label = field.label ?? field.key;\n  const itemErrors = parseItemErrors(errorMessage);\n\n  const addItem = () => {\n    if (items.length >= maxItems) {\n      return;\n    }\n    const empty: Record<string, unknown> = {};\n    for (const f of itemFields) {\n      if (f.valueType === 'boolean') {\n        empty[f.key] = f.defaultValue ?? false;\n      } else {\n        empty[f.key] = f.defaultValue ?? '';\n      }\n    }\n    onChange([...items, empty]);\n  };\n\n  const removeItem = (index: number) => {\n    onChange(items.filter((_, i) => i !== index));\n  };\n\n  const updateItem = (index: number, key: string, val: unknown) => {\n    const updated = items.map((item, i) => (i === index ? { ...item, [key]: val } : item));\n    onChange(updated);\n  };\n\n  return (\n    <Stack direction=\"column\" gap={1}>\n      {items.map((item, i) => (\n        <ObjectArrayItemRow\n          key={i}\n          item={item}\n          index={i}\n          itemFields={itemFields}\n          layoutRows={layoutRows}\n          disabled={!!disabled}\n          onUpdate={updateItem}\n          onRemove={removeItem}\n          showLabels={true}\n          error={itemErrors?.[i]}\n        />\n      ))}\n      {items.length < maxItems && (\n        <div>\n          <Button variant=\"secondary\" size=\"sm\" icon=\"plus\" disabled={disabled} onClick={addItem} type=\"button\">\n            Add {label.toLowerCase()}\n          </Button>\n        </div>\n      )}\n      {items.length >= maxItems && <span className={styles.limitNote}>Maximum {maxItems} items reached</span>}\n    </Stack>\n  );\n}\n\nfunction computeLayoutRows(fields: ConfigField[]): ConfigField[][] {\n  const hasExplicitRow = fields.some((f) => f.ui?.row !== undefined);\n\n  if (!hasExplicitRow) {\n    if (fields.length <= 3) {\n      return [fields];\n    }\n    return fields.map((f) => [f]);\n  }\n\n  // Group by row number\n  const rowMap = new Map<number, ConfigField[]>();\n  const noRow: ConfigField[] = [];\n\n  for (const f of fields) {\n    if (f.ui?.row !== undefined) {\n      const existing = rowMap.get(f.ui.row);\n      if (existing) {\n        existing.push(f);\n      } else {\n        rowMap.set(f.ui.row, [f]);\n      }\n    } else {\n      noRow.push(f);\n    }\n  }\n\n  // Sort by row number ascending\n  const sortedKeys = [...rowMap.keys()].sort((a, b) => a - b);\n  const rows: ConfigField[][] = sortedKeys.map((k) => rowMap.get(k)!);\n\n  // Append fields without row, one per row\n  for (const f of noRow) {\n    rows.push([f]);\n  }\n\n  return rows;\n}\n\nfunction makeItemFormField(\n  item: Record<string, unknown>,\n  index: number,\n  fieldKey: string,\n  onUpdate: (index: number, key: string, value: unknown) => void\n): FormFieldRef {\n  return {\n    name: `item-${index}-${fieldKey}`,\n    value: item[fieldKey],\n    onChange: (eventOrValue: unknown) => {\n      // FieldInput spreads formField onto <Input> / <TextArea>,\n      // so onChange receives a React ChangeEvent. Extract the value.\n      if (eventOrValue != null && typeof eventOrValue === 'object' && 'target' in (eventOrValue as object)) {\n        onUpdate(index, fieldKey, (eventOrValue as React.ChangeEvent<HTMLInputElement>).target.value);\n      } else {\n        onUpdate(index, fieldKey, eventOrValue);\n      }\n    },\n    onBlur: () => {},\n  };\n}\n\nfunction effectiveItemField(field: ConfigField, isSecure: boolean): ConfigField {\n  if (!isSecure) {\n    return field;\n  }\n  return { ...field };\n}\n\nfunction ObjectArrayItemRow({\n  item,\n  index,\n  itemFields,\n  layoutRows,\n  disabled,\n  onUpdate,\n  onRemove,\n  error,\n}: {\n  item: Record<string, unknown>;\n  index: number;\n  itemFields: ConfigField[];\n  layoutRows: ConfigField[][];\n  disabled: boolean;\n  onUpdate: (index: number, key: string, value: unknown) => void;\n  onRemove: (index: number) => void;\n  showLabels: boolean;\n  error?: string;\n}) {\n  const styles = useStyles2(getStyles);\n  const secureOverride = findActiveSecureOverride(itemFields, item, index);\n\n  return (\n    <div className={styles.itemRow}>\n      {layoutRows.map((row, rowIdx) => (\n        <Stack key={rowIdx} direction=\"row\" gap={1} alignItems=\"flex-end\" wrap=\"wrap\">\n          {row.map((field) => {\n            const isSecureTarget = secureOverride?.fieldKey === field.key;\n            const eff = effectiveItemField(field, !!isSecureTarget);\n            const formField = makeItemFormField(item, index, field.key, onUpdate);\n\n            if (isSecureTarget && item[field.key] === SECURE_FIELD_CONFIGURED) {\n              formField.value = SECURE_FIELD_CONFIGURED;\n            }\n\n            return (\n              <div key={field.key} className={field.valueType === 'boolean' ? styles.boolCell : styles.inputCell}>\n                <span className={styles.cellLabel}>\n                  {field.label ?? field.key}\n                  {field.required && <span className={styles.required}> *</span>}\n                </span>\n                <FieldInput field={eff} formField={formField} disabled={disabled} />\n              </div>\n            );\n          })}\n          {rowIdx === 0 && (\n            <div className={styles.removeCellWithLabel}>\n              <Tooltip content=\"Remove\">\n                <Button\n                  variant=\"secondary\"\n                  fill=\"text\"\n                  size=\"sm\"\n                  icon=\"trash-alt\"\n                  aria-label=\"Remove item\"\n                  disabled={disabled}\n                  onClick={() => onRemove(index)}\n                  type=\"button\"\n                />\n              </Tooltip>\n            </div>\n          )}\n        </Stack>\n      ))}\n      {error && <span className={styles.itemError}>{error}</span>}\n    </div>\n  );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  itemRow: css({\n    display: 'flex',\n    flexDirection: 'column',\n    gap: theme.spacing(0.5),\n    padding: theme.spacing(1),\n    borderRadius: theme.shape.radius.default,\n    border: `1px solid ${theme.colors.border.weak}`,\n  }),\n  inputCell: css({\n    flex: '1 1 120px',\n    minWidth: 120,\n    overflow: 'hidden',\n  }),\n  boolCell: css({\n    flex: '0 0 auto',\n    minWidth: 0,\n  }),\n  cellLabel: css({\n    fontSize: theme.typography.bodySmall.fontSize,\n    color: theme.colors.text.secondary,\n    marginBottom: theme.spacing(0.25),\n  }),\n  required: css({\n    color: theme.colors.error.text,\n  }),\n  removeCellWithLabel: css({\n    flex: '0 0 auto',\n    display: 'flex',\n    alignItems: 'flex-end',\n    paddingBottom: theme.spacing(0.25),\n  }),\n  itemError: css({\n    fontSize: theme.typography.bodySmall.fontSize,\n    color: theme.colors.error.text,\n  }),\n  limitNote: css({\n    fontSize: theme.typography.bodySmall.fontSize,\n    color: theme.colors.text.secondary,\n  }),\n});\n","import React from 'react';\nimport { css } from '@emotion/css';\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2, Icon } from '@grafana/ui';\nimport type { FieldInputProps } from './types';\n\ntype Props = { count: number; label: string };\n\nexport function ComplexInput({ field, formField }: FieldInputProps) {\n  const label = field.label ?? field.key;\n  const count = Array.isArray(formField.value) ? formField.value.length : 0;\n  return <ComplexFieldNote count={count} label={label} />;\n}\n\nconst ComplexFieldNote = (props: Props) => {\n  const { count, label } = props;\n  const styles = useStyles2(getStyles);\n  return (\n    <div className={styles.note}>\n      <Icon name=\"info-circle\" size=\"xs\" />\n      <span>\n        {count > 0 ? `${count} ${label.toLowerCase()} configured.` : `No ${label.toLowerCase()} configured.`} Configure\n        in Grafana UI.\n      </span>\n    </div>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  note: css({\n    display: 'inline-flex',\n    alignItems: 'center',\n    gap: theme.spacing(0.5),\n    padding: `${theme.spacing(0.5)} ${theme.spacing(0.75)}`,\n    fontSize: theme.typography.bodySmall.fontSize,\n    color: theme.colors.text.secondary,\n    backgroundColor: theme.colors.background.secondary,\n    borderRadius: theme.shape.radius.default,\n    border: `1px solid ${theme.colors.border.weak}`,\n  }),\n});\n","import type { DatasourceConfigSchema } from '../schema';\n\ntype TroubleShootingContext = {\n  label: string;\n  key: string;\n  target: string;\n  type: string;\n  required: boolean;\n  description?: string;\n  defaultValue?: unknown;\n  options?: string[];\n  section?: string;\n  dependsOn?: string;\n};\n\n/**\n * Generate LLM hints for select fields (used when creating datasources).\n */\nexport function generateLLMHint(schema: DatasourceConfigSchema): string {\n  const hints: string[] = [];\n  for (const field of schema.fields) {\n    if (field.ui?.component !== 'select' || field.target !== 'jsonData' || field.kind === 'virtual') {\n      continue;\n    }\n    const options = field.ui?.options ?? [];\n    const values = options\n      .map((opt) => {\n        const isDefault = field.defaultValue != null && String(opt.value) === String(field.defaultValue);\n        return isDefault ? `\"${opt.value}\" (default)` : `\"${opt.value}\"`;\n      })\n      .join(', ');\n    if (values) {\n      hints.push(`- ${field.label ?? field.key}: jsonData.${field.key} — values: ${values}`);\n    }\n  }\n  return hints.join('\\n');\n}\n\n/**\n * Generate comprehensive structured field data for troubleshooting context.\n * Returns an array of field descriptors the LLM can use to render rich tables.\n */\nexport function generateTroubleshootingFields(schema: DatasourceConfigSchema): TroubleShootingContext[] {\n  const result: TroubleShootingContext[] = [];\n  for (const field of schema.fields) {\n    if (field.kind === 'virtual' || field.isItemField) {\n      continue;\n    }\n    const entry: (typeof result)[0] = {\n      label: field.label ?? field.key,\n      key: field.target === 'root' ? field.key : `${field.target}.${field.key}`,\n      target: field.target ?? 'jsonData',\n      type: field.valueType,\n      required: !!field.required,\n    };\n    if (field.description) {\n      entry.description = field.description;\n    }\n    if (field.defaultValue != null) {\n      entry.defaultValue = field.defaultValue;\n    }\n    if (field.ui?.options && field.ui.options.length > 0) {\n      entry.options = field.ui.options.map((o) => String(o.value));\n    }\n    if (field.section) {\n      entry.section = field.section;\n    }\n    if (field.dependsOn) {\n      entry.dependsOn = field.dependsOn;\n    }\n    result.push(entry);\n  }\n  return result;\n}\n","function getDefaultExportFromCjs(x) {\n  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar jsYaml = {};\nvar loader = {};\nvar common = {};\nvar hasRequiredCommon;\nfunction requireCommon() {\n  if (hasRequiredCommon) return common;\n  hasRequiredCommon = 1;\n  function isNothing(subject) {\n    return typeof subject === \"undefined\" || subject === null;\n  }\n  function isObject(subject) {\n    return typeof subject === \"object\" && subject !== null;\n  }\n  function toArray(sequence) {\n    if (Array.isArray(sequence)) return sequence;\n    else if (isNothing(sequence)) return [];\n    return [sequence];\n  }\n  function extend(target, source) {\n    if (source) {\n      const sourceKeys = Object.keys(source);\n      for (let index = 0, length = sourceKeys.length; index < length; index += 1) {\n        const key = sourceKeys[index];\n        target[key] = source[key];\n      }\n    }\n    return target;\n  }\n  function repeat(string, count) {\n    let result = \"\";\n    for (let cycle = 0; cycle < count; cycle += 1) {\n      result += string;\n    }\n    return result;\n  }\n  function isNegativeZero(number) {\n    return number === 0 && Number.NEGATIVE_INFINITY === 1 / number;\n  }\n  common.isNothing = isNothing;\n  common.isObject = isObject;\n  common.toArray = toArray;\n  common.repeat = repeat;\n  common.isNegativeZero = isNegativeZero;\n  common.extend = extend;\n  return common;\n}\nvar exception;\nvar hasRequiredException;\nfunction requireException() {\n  if (hasRequiredException) return exception;\n  hasRequiredException = 1;\n  function formatError(exception2, compact) {\n    let where = \"\";\n    const message = exception2.reason || \"(unknown reason)\";\n    if (!exception2.mark) return message;\n    if (exception2.mark.name) {\n      where += 'in \"' + exception2.mark.name + '\" ';\n    }\n    where += \"(\" + (exception2.mark.line + 1) + \":\" + (exception2.mark.column + 1) + \")\";\n    if (!compact && exception2.mark.snippet) {\n      where += \"\\n\\n\" + exception2.mark.snippet;\n    }\n    return message + \" \" + where;\n  }\n  function YAMLException2(reason, mark) {\n    Error.call(this);\n    this.name = \"YAMLException\";\n    this.reason = reason;\n    this.mark = mark;\n    this.message = formatError(this, false);\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, this.constructor);\n    } else {\n      this.stack = new Error().stack || \"\";\n    }\n  }\n  YAMLException2.prototype = Object.create(Error.prototype);\n  YAMLException2.prototype.constructor = YAMLException2;\n  YAMLException2.prototype.toString = function toString(compact) {\n    return this.name + \": \" + formatError(this, compact);\n  };\n  exception = YAMLException2;\n  return exception;\n}\nvar snippet;\nvar hasRequiredSnippet;\nfunction requireSnippet() {\n  if (hasRequiredSnippet) return snippet;\n  hasRequiredSnippet = 1;\n  const common2 = requireCommon();\n  function getLine(buffer, lineStart, lineEnd, position, maxLineLength) {\n    let head = \"\";\n    let tail = \"\";\n    const maxHalfLength = Math.floor(maxLineLength / 2) - 1;\n    if (position - lineStart > maxHalfLength) {\n      head = \" ... \";\n      lineStart = position - maxHalfLength + head.length;\n    }\n    if (lineEnd - position > maxHalfLength) {\n      tail = \" ...\";\n      lineEnd = position + maxHalfLength - tail.length;\n    }\n    return {\n      str: head + buffer.slice(lineStart, lineEnd).replace(/\\t/g, \"→\") + tail,\n      pos: position - lineStart + head.length\n      // relative position\n    };\n  }\n  function padStart(string, max) {\n    return common2.repeat(\" \", max - string.length) + string;\n  }\n  function makeSnippet(mark, options) {\n    options = Object.create(options || null);\n    if (!mark.buffer) return null;\n    if (!options.maxLength) options.maxLength = 79;\n    if (typeof options.indent !== \"number\") options.indent = 1;\n    if (typeof options.linesBefore !== \"number\") options.linesBefore = 3;\n    if (typeof options.linesAfter !== \"number\") options.linesAfter = 2;\n    const re = /\\r?\\n|\\r|\\0/g;\n    const lineStarts = [0];\n    const lineEnds = [];\n    let match;\n    let foundLineNo = -1;\n    while (match = re.exec(mark.buffer)) {\n      lineEnds.push(match.index);\n      lineStarts.push(match.index + match[0].length);\n      if (mark.position <= match.index && foundLineNo < 0) {\n        foundLineNo = lineStarts.length - 2;\n      }\n    }\n    if (foundLineNo < 0) foundLineNo = lineStarts.length - 1;\n    let result = \"\";\n    const lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length;\n    const maxLineLength = options.maxLength - (options.indent + lineNoLength + 3);\n    for (let i = 1; i <= options.linesBefore; i++) {\n      if (foundLineNo - i < 0) break;\n      const line2 = getLine(\n        mark.buffer,\n        lineStarts[foundLineNo - i],\n        lineEnds[foundLineNo - i],\n        mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]),\n        maxLineLength\n      );\n      result = common2.repeat(\" \", options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) + \" | \" + line2.str + \"\\n\" + result;\n    }\n    const line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength);\n    result += common2.repeat(\" \", options.indent) + padStart((mark.line + 1).toString(), lineNoLength) + \" | \" + line.str + \"\\n\";\n    result += common2.repeat(\"-\", options.indent + lineNoLength + 3 + line.pos) + \"^\\n\";\n    for (let i = 1; i <= options.linesAfter; i++) {\n      if (foundLineNo + i >= lineEnds.length) break;\n      const line2 = getLine(\n        mark.buffer,\n        lineStarts[foundLineNo + i],\n        lineEnds[foundLineNo + i],\n        mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]),\n        maxLineLength\n      );\n      result += common2.repeat(\" \", options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) + \" | \" + line2.str + \"\\n\";\n    }\n    return result.replace(/\\n$/, \"\");\n  }\n  snippet = makeSnippet;\n  return snippet;\n}\nvar type;\nvar hasRequiredType;\nfunction requireType() {\n  if (hasRequiredType) return type;\n  hasRequiredType = 1;\n  const YAMLException2 = requireException();\n  const TYPE_CONSTRUCTOR_OPTIONS = [\n    \"kind\",\n    \"multi\",\n    \"resolve\",\n    \"construct\",\n    \"instanceOf\",\n    \"predicate\",\n    \"represent\",\n    \"representName\",\n    \"defaultStyle\",\n    \"styleAliases\"\n  ];\n  const YAML_NODE_KINDS = [\n    \"scalar\",\n    \"sequence\",\n    \"mapping\"\n  ];\n  function compileStyleAliases(map2) {\n    const result = {};\n    if (map2 !== null) {\n      Object.keys(map2).forEach(function(style) {\n        map2[style].forEach(function(alias) {\n          result[String(alias)] = style;\n        });\n      });\n    }\n    return result;\n  }\n  function Type2(tag, options) {\n    options = options || {};\n    Object.keys(options).forEach(function(name) {\n      if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n        throw new YAMLException2('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n      }\n    });\n    this.options = options;\n    this.tag = tag;\n    this.kind = options[\"kind\"] || null;\n    this.resolve = options[\"resolve\"] || function() {\n      return true;\n    };\n    this.construct = options[\"construct\"] || function(data) {\n      return data;\n    };\n    this.instanceOf = options[\"instanceOf\"] || null;\n    this.predicate = options[\"predicate\"] || null;\n    this.represent = options[\"represent\"] || null;\n    this.representName = options[\"representName\"] || null;\n    this.defaultStyle = options[\"defaultStyle\"] || null;\n    this.multi = options[\"multi\"] || false;\n    this.styleAliases = compileStyleAliases(options[\"styleAliases\"] || null);\n    if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n      throw new YAMLException2('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n    }\n  }\n  type = Type2;\n  return type;\n}\nvar schema;\nvar hasRequiredSchema;\nfunction requireSchema() {\n  if (hasRequiredSchema) return schema;\n  hasRequiredSchema = 1;\n  const YAMLException2 = requireException();\n  const Type2 = requireType();\n  function compileList(schema2, name) {\n    const result = [];\n    schema2[name].forEach(function(currentType) {\n      let newIndex = result.length;\n      result.forEach(function(previousType, previousIndex) {\n        if (previousType.tag === currentType.tag && previousType.kind === currentType.kind && previousType.multi === currentType.multi) {\n          newIndex = previousIndex;\n        }\n      });\n      result[newIndex] = currentType;\n    });\n    return result;\n  }\n  function compileMap() {\n    const result = {\n      scalar: {},\n      sequence: {},\n      mapping: {},\n      fallback: {},\n      multi: {\n        scalar: [],\n        sequence: [],\n        mapping: [],\n        fallback: []\n      }\n    };\n    function collectType(type2) {\n      if (type2.multi) {\n        result.multi[type2.kind].push(type2);\n        result.multi[\"fallback\"].push(type2);\n      } else {\n        result[type2.kind][type2.tag] = result[\"fallback\"][type2.tag] = type2;\n      }\n    }\n    for (let index = 0, length = arguments.length; index < length; index += 1) {\n      arguments[index].forEach(collectType);\n    }\n    return result;\n  }\n  function Schema2(definition) {\n    return this.extend(definition);\n  }\n  Schema2.prototype.extend = function extend(definition) {\n    let implicit = [];\n    let explicit = [];\n    if (definition instanceof Type2) {\n      explicit.push(definition);\n    } else if (Array.isArray(definition)) {\n      explicit = explicit.concat(definition);\n    } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) {\n      if (definition.implicit) implicit = implicit.concat(definition.implicit);\n      if (definition.explicit) explicit = explicit.concat(definition.explicit);\n    } else {\n      throw new YAMLException2(\"Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })\");\n    }\n    implicit.forEach(function(type2) {\n      if (!(type2 instanceof Type2)) {\n        throw new YAMLException2(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\");\n      }\n      if (type2.loadKind && type2.loadKind !== \"scalar\") {\n        throw new YAMLException2(\"There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.\");\n      }\n      if (type2.multi) {\n        throw new YAMLException2(\"There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.\");\n      }\n    });\n    explicit.forEach(function(type2) {\n      if (!(type2 instanceof Type2)) {\n        throw new YAMLException2(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\");\n      }\n    });\n    const result = Object.create(Schema2.prototype);\n    result.implicit = (this.implicit || []).concat(implicit);\n    result.explicit = (this.explicit || []).concat(explicit);\n    result.compiledImplicit = compileList(result, \"implicit\");\n    result.compiledExplicit = compileList(result, \"explicit\");\n    result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit);\n    return result;\n  };\n  schema = Schema2;\n  return schema;\n}\nvar str;\nvar hasRequiredStr;\nfunction requireStr() {\n  if (hasRequiredStr) return str;\n  hasRequiredStr = 1;\n  const Type2 = requireType();\n  str = new Type2(\"tag:yaml.org,2002:str\", {\n    kind: \"scalar\",\n    construct: function(data) {\n      return data !== null ? data : \"\";\n    }\n  });\n  return str;\n}\nvar seq;\nvar hasRequiredSeq;\nfunction requireSeq() {\n  if (hasRequiredSeq) return seq;\n  hasRequiredSeq = 1;\n  const Type2 = requireType();\n  seq = new Type2(\"tag:yaml.org,2002:seq\", {\n    kind: \"sequence\",\n    construct: function(data) {\n      return data !== null ? data : [];\n    }\n  });\n  return seq;\n}\nvar map;\nvar hasRequiredMap;\nfunction requireMap() {\n  if (hasRequiredMap) return map;\n  hasRequiredMap = 1;\n  const Type2 = requireType();\n  map = new Type2(\"tag:yaml.org,2002:map\", {\n    kind: \"mapping\",\n    construct: function(data) {\n      return data !== null ? data : {};\n    }\n  });\n  return map;\n}\nvar failsafe;\nvar hasRequiredFailsafe;\nfunction requireFailsafe() {\n  if (hasRequiredFailsafe) return failsafe;\n  hasRequiredFailsafe = 1;\n  const Schema2 = requireSchema();\n  failsafe = new Schema2({\n    explicit: [\n      requireStr(),\n      requireSeq(),\n      requireMap()\n    ]\n  });\n  return failsafe;\n}\nvar _null;\nvar hasRequired_null;\nfunction require_null() {\n  if (hasRequired_null) return _null;\n  hasRequired_null = 1;\n  const Type2 = requireType();\n  function resolveYamlNull(data) {\n    if (data === null) return true;\n    const max = data.length;\n    return max === 1 && data === \"~\" || max === 4 && (data === \"null\" || data === \"Null\" || data === \"NULL\");\n  }\n  function constructYamlNull() {\n    return null;\n  }\n  function isNull(object) {\n    return object === null;\n  }\n  _null = new Type2(\"tag:yaml.org,2002:null\", {\n    kind: \"scalar\",\n    resolve: resolveYamlNull,\n    construct: constructYamlNull,\n    predicate: isNull,\n    represent: {\n      canonical: function() {\n        return \"~\";\n      },\n      lowercase: function() {\n        return \"null\";\n      },\n      uppercase: function() {\n        return \"NULL\";\n      },\n      camelcase: function() {\n        return \"Null\";\n      },\n      empty: function() {\n        return \"\";\n      }\n    },\n    defaultStyle: \"lowercase\"\n  });\n  return _null;\n}\nvar bool;\nvar hasRequiredBool;\nfunction requireBool() {\n  if (hasRequiredBool) return bool;\n  hasRequiredBool = 1;\n  const Type2 = requireType();\n  function resolveYamlBoolean(data) {\n    if (data === null) return false;\n    const max = data.length;\n    return max === 4 && (data === \"true\" || data === \"True\" || data === \"TRUE\") || max === 5 && (data === \"false\" || data === \"False\" || data === \"FALSE\");\n  }\n  function constructYamlBoolean(data) {\n    return data === \"true\" || data === \"True\" || data === \"TRUE\";\n  }\n  function isBoolean(object) {\n    return Object.prototype.toString.call(object) === \"[object Boolean]\";\n  }\n  bool = new Type2(\"tag:yaml.org,2002:bool\", {\n    kind: \"scalar\",\n    resolve: resolveYamlBoolean,\n    construct: constructYamlBoolean,\n    predicate: isBoolean,\n    represent: {\n      lowercase: function(object) {\n        return object ? \"true\" : \"false\";\n      },\n      uppercase: function(object) {\n        return object ? \"TRUE\" : \"FALSE\";\n      },\n      camelcase: function(object) {\n        return object ? \"True\" : \"False\";\n      }\n    },\n    defaultStyle: \"lowercase\"\n  });\n  return bool;\n}\nvar int;\nvar hasRequiredInt;\nfunction requireInt() {\n  if (hasRequiredInt) return int;\n  hasRequiredInt = 1;\n  const common2 = requireCommon();\n  const Type2 = requireType();\n  function isHexCode(c) {\n    return c >= 48 && c <= 57 || c >= 65 && c <= 70 || c >= 97 && c <= 102;\n  }\n  function isOctCode(c) {\n    return c >= 48 && c <= 55;\n  }\n  function isDecCode(c) {\n    return c >= 48 && c <= 57;\n  }\n  function resolveYamlInteger(data) {\n    if (data === null) return false;\n    const max = data.length;\n    let index = 0;\n    let hasDigits = false;\n    if (!max) return false;\n    let ch = data[index];\n    if (ch === \"-\" || ch === \"+\") {\n      ch = data[++index];\n    }\n    if (ch === \"0\") {\n      if (index + 1 === max) return true;\n      ch = data[++index];\n      if (ch === \"b\") {\n        index++;\n        for (; index < max; index++) {\n          ch = data[index];\n          if (ch !== \"0\" && ch !== \"1\") return false;\n          hasDigits = true;\n        }\n        return hasDigits && isFinite(parseYamlInteger(data));\n      }\n      if (ch === \"x\") {\n        index++;\n        for (; index < max; index++) {\n          if (!isHexCode(data.charCodeAt(index))) return false;\n          hasDigits = true;\n        }\n        return hasDigits && isFinite(parseYamlInteger(data));\n      }\n      if (ch === \"o\") {\n        index++;\n        for (; index < max; index++) {\n          if (!isOctCode(data.charCodeAt(index))) return false;\n          hasDigits = true;\n        }\n        return hasDigits && isFinite(parseYamlInteger(data));\n      }\n    }\n    for (; index < max; index++) {\n      if (!isDecCode(data.charCodeAt(index))) {\n        return false;\n      }\n      hasDigits = true;\n    }\n    if (!hasDigits) return false;\n    return isFinite(parseYamlInteger(data));\n  }\n  function parseYamlInteger(data) {\n    let value = data;\n    let sign = 1;\n    let ch = value[0];\n    if (ch === \"-\" || ch === \"+\") {\n      if (ch === \"-\") sign = -1;\n      value = value.slice(1);\n      ch = value[0];\n    }\n    if (value === \"0\") return 0;\n    if (ch === \"0\") {\n      if (value[1] === \"b\") return sign * parseInt(value.slice(2), 2);\n      if (value[1] === \"x\") return sign * parseInt(value.slice(2), 16);\n      if (value[1] === \"o\") return sign * parseInt(value.slice(2), 8);\n    }\n    return sign * parseInt(value, 10);\n  }\n  function constructYamlInteger(data) {\n    return parseYamlInteger(data);\n  }\n  function isInteger(object) {\n    return Object.prototype.toString.call(object) === \"[object Number]\" && (object % 1 === 0 && !common2.isNegativeZero(object));\n  }\n  int = new Type2(\"tag:yaml.org,2002:int\", {\n    kind: \"scalar\",\n    resolve: resolveYamlInteger,\n    construct: constructYamlInteger,\n    predicate: isInteger,\n    represent: {\n      binary: function(obj) {\n        return obj >= 0 ? \"0b\" + obj.toString(2) : \"-0b\" + obj.toString(2).slice(1);\n      },\n      octal: function(obj) {\n        return obj >= 0 ? \"0o\" + obj.toString(8) : \"-0o\" + obj.toString(8).slice(1);\n      },\n      decimal: function(obj) {\n        return obj.toString(10);\n      },\n      hexadecimal: function(obj) {\n        return obj >= 0 ? \"0x\" + obj.toString(16).toUpperCase() : \"-0x\" + obj.toString(16).toUpperCase().slice(1);\n      }\n    },\n    defaultStyle: \"decimal\",\n    styleAliases: {\n      binary: [2, \"bin\"],\n      octal: [8, \"oct\"],\n      decimal: [10, \"dec\"],\n      hexadecimal: [16, \"hex\"]\n    }\n  });\n  return int;\n}\nvar float;\nvar hasRequiredFloat;\nfunction requireFloat() {\n  if (hasRequiredFloat) return float;\n  hasRequiredFloat = 1;\n  const common2 = requireCommon();\n  const Type2 = requireType();\n  const YAML_FLOAT_PATTERN = new RegExp(\n    // 2.5e4, 2.5 and integers\n    \"^(?:[-+]?(?:[0-9]+)(?:\\\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?|\\\\.[0-9]+(?:[eE][-+]?[0-9]+)?|[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))$\"\n  );\n  const YAML_FLOAT_SPECIAL_PATTERN = new RegExp(\n    \"^(?:[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))$\"\n  );\n  function resolveYamlFloat(data) {\n    if (data === null) return false;\n    if (!YAML_FLOAT_PATTERN.test(data)) {\n      return false;\n    }\n    if (isFinite(parseFloat(data, 10))) {\n      return true;\n    }\n    return YAML_FLOAT_SPECIAL_PATTERN.test(data);\n  }\n  function constructYamlFloat(data) {\n    let value = data.toLowerCase();\n    const sign = value[0] === \"-\" ? -1 : 1;\n    if (\"+-\".indexOf(value[0]) >= 0) {\n      value = value.slice(1);\n    }\n    if (value === \".inf\") {\n      return sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n    } else if (value === \".nan\") {\n      return NaN;\n    }\n    return sign * parseFloat(value, 10);\n  }\n  const SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n  function representYamlFloat(object, style) {\n    if (isNaN(object)) {\n      switch (style) {\n        case \"lowercase\":\n          return \".nan\";\n        case \"uppercase\":\n          return \".NAN\";\n        case \"camelcase\":\n          return \".NaN\";\n      }\n    } else if (Number.POSITIVE_INFINITY === object) {\n      switch (style) {\n        case \"lowercase\":\n          return \".inf\";\n        case \"uppercase\":\n          return \".INF\";\n        case \"camelcase\":\n          return \".Inf\";\n      }\n    } else if (Number.NEGATIVE_INFINITY === object) {\n      switch (style) {\n        case \"lowercase\":\n          return \"-.inf\";\n        case \"uppercase\":\n          return \"-.INF\";\n        case \"camelcase\":\n          return \"-.Inf\";\n      }\n    } else if (common2.isNegativeZero(object)) {\n      return \"-0.0\";\n    }\n    const res = object.toString(10);\n    return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace(\"e\", \".e\") : res;\n  }\n  function isFloat(object) {\n    return Object.prototype.toString.call(object) === \"[object Number]\" && (object % 1 !== 0 || common2.isNegativeZero(object));\n  }\n  float = new Type2(\"tag:yaml.org,2002:float\", {\n    kind: \"scalar\",\n    resolve: resolveYamlFloat,\n    construct: constructYamlFloat,\n    predicate: isFloat,\n    represent: representYamlFloat,\n    defaultStyle: \"lowercase\"\n  });\n  return float;\n}\nvar json;\nvar hasRequiredJson;\nfunction requireJson() {\n  if (hasRequiredJson) return json;\n  hasRequiredJson = 1;\n  json = requireFailsafe().extend({\n    implicit: [\n      require_null(),\n      requireBool(),\n      requireInt(),\n      requireFloat()\n    ]\n  });\n  return json;\n}\nvar core;\nvar hasRequiredCore;\nfunction requireCore() {\n  if (hasRequiredCore) return core;\n  hasRequiredCore = 1;\n  core = requireJson();\n  return core;\n}\nvar timestamp;\nvar hasRequiredTimestamp;\nfunction requireTimestamp() {\n  if (hasRequiredTimestamp) return timestamp;\n  hasRequiredTimestamp = 1;\n  const Type2 = requireType();\n  const YAML_DATE_REGEXP = new RegExp(\n    \"^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$\"\n  );\n  const YAML_TIMESTAMP_REGEXP = new RegExp(\n    \"^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\\\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\\\.([0-9]*))?(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$\"\n  );\n  function resolveYamlTimestamp(data) {\n    if (data === null) return false;\n    if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n    if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n    return false;\n  }\n  function constructYamlTimestamp(data) {\n    let fraction = 0;\n    let delta = null;\n    let match = YAML_DATE_REGEXP.exec(data);\n    if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n    if (match === null) throw new Error(\"Date resolve error\");\n    const year = +match[1];\n    const month = +match[2] - 1;\n    const day = +match[3];\n    if (!match[4]) {\n      return new Date(Date.UTC(year, month, day));\n    }\n    const hour = +match[4];\n    const minute = +match[5];\n    const second = +match[6];\n    if (match[7]) {\n      fraction = match[7].slice(0, 3);\n      while (fraction.length < 3) {\n        fraction += \"0\";\n      }\n      fraction = +fraction;\n    }\n    if (match[9]) {\n      const tzHour = +match[10];\n      const tzMinute = +(match[11] || 0);\n      delta = (tzHour * 60 + tzMinute) * 6e4;\n      if (match[9] === \"-\") delta = -delta;\n    }\n    const date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n    if (delta) date.setTime(date.getTime() - delta);\n    return date;\n  }\n  function representYamlTimestamp(object) {\n    return object.toISOString();\n  }\n  timestamp = new Type2(\"tag:yaml.org,2002:timestamp\", {\n    kind: \"scalar\",\n    resolve: resolveYamlTimestamp,\n    construct: constructYamlTimestamp,\n    instanceOf: Date,\n    represent: representYamlTimestamp\n  });\n  return timestamp;\n}\nvar merge;\nvar hasRequiredMerge;\nfunction requireMerge() {\n  if (hasRequiredMerge) return merge;\n  hasRequiredMerge = 1;\n  const Type2 = requireType();\n  function resolveYamlMerge(data) {\n    return data === \"<<\" || data === null;\n  }\n  merge = new Type2(\"tag:yaml.org,2002:merge\", {\n    kind: \"scalar\",\n    resolve: resolveYamlMerge\n  });\n  return merge;\n}\nvar binary;\nvar hasRequiredBinary;\nfunction requireBinary() {\n  if (hasRequiredBinary) return binary;\n  hasRequiredBinary = 1;\n  const Type2 = requireType();\n  const BASE64_MAP = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r\";\n  function resolveYamlBinary(data) {\n    if (data === null) return false;\n    let bitlen = 0;\n    const max = data.length;\n    const map2 = BASE64_MAP;\n    for (let idx = 0; idx < max; idx++) {\n      const code = map2.indexOf(data.charAt(idx));\n      if (code > 64) continue;\n      if (code < 0) return false;\n      bitlen += 6;\n    }\n    return bitlen % 8 === 0;\n  }\n  function constructYamlBinary(data) {\n    const input = data.replace(/[\\r\\n=]/g, \"\");\n    const max = input.length;\n    const map2 = BASE64_MAP;\n    let bits = 0;\n    const result = [];\n    for (let idx = 0; idx < max; idx++) {\n      if (idx % 4 === 0 && idx) {\n        result.push(bits >> 16 & 255);\n        result.push(bits >> 8 & 255);\n        result.push(bits & 255);\n      }\n      bits = bits << 6 | map2.indexOf(input.charAt(idx));\n    }\n    const tailbits = max % 4 * 6;\n    if (tailbits === 0) {\n      result.push(bits >> 16 & 255);\n      result.push(bits >> 8 & 255);\n      result.push(bits & 255);\n    } else if (tailbits === 18) {\n      result.push(bits >> 10 & 255);\n      result.push(bits >> 2 & 255);\n    } else if (tailbits === 12) {\n      result.push(bits >> 4 & 255);\n    }\n    return new Uint8Array(result);\n  }\n  function representYamlBinary(object) {\n    let result = \"\";\n    let bits = 0;\n    const max = object.length;\n    const map2 = BASE64_MAP;\n    for (let idx = 0; idx < max; idx++) {\n      if (idx % 3 === 0 && idx) {\n        result += map2[bits >> 18 & 63];\n        result += map2[bits >> 12 & 63];\n        result += map2[bits >> 6 & 63];\n        result += map2[bits & 63];\n      }\n      bits = (bits << 8) + object[idx];\n    }\n    const tail = max % 3;\n    if (tail === 0) {\n      result += map2[bits >> 18 & 63];\n      result += map2[bits >> 12 & 63];\n      result += map2[bits >> 6 & 63];\n      result += map2[bits & 63];\n    } else if (tail === 2) {\n      result += map2[bits >> 10 & 63];\n      result += map2[bits >> 4 & 63];\n      result += map2[bits << 2 & 63];\n      result += map2[64];\n    } else if (tail === 1) {\n      result += map2[bits >> 2 & 63];\n      result += map2[bits << 4 & 63];\n      result += map2[64];\n      result += map2[64];\n    }\n    return result;\n  }\n  function isBinary(obj) {\n    return Object.prototype.toString.call(obj) === \"[object Uint8Array]\";\n  }\n  binary = new Type2(\"tag:yaml.org,2002:binary\", {\n    kind: \"scalar\",\n    resolve: resolveYamlBinary,\n    construct: constructYamlBinary,\n    predicate: isBinary,\n    represent: representYamlBinary\n  });\n  return binary;\n}\nvar omap;\nvar hasRequiredOmap;\nfunction requireOmap() {\n  if (hasRequiredOmap) return omap;\n  hasRequiredOmap = 1;\n  const Type2 = requireType();\n  const _hasOwnProperty = Object.prototype.hasOwnProperty;\n  const _toString = Object.prototype.toString;\n  function resolveYamlOmap(data) {\n    if (data === null) return true;\n    const objectKeys = {};\n    const object = data;\n    for (let index = 0, length = object.length; index < length; index += 1) {\n      const pair = object[index];\n      let pairHasKey = false;\n      if (_toString.call(pair) !== \"[object Object]\") return false;\n      let pairKey;\n      for (pairKey in pair) {\n        if (_hasOwnProperty.call(pair, pairKey)) {\n          if (!pairHasKey) pairHasKey = true;\n          else return false;\n        }\n      }\n      if (!pairHasKey) return false;\n      if (_hasOwnProperty.call(objectKeys, pairKey)) return false;\n      Object.defineProperty(objectKeys, pairKey, { value: true });\n    }\n    return true;\n  }\n  function constructYamlOmap(data) {\n    return data !== null ? data : [];\n  }\n  omap = new Type2(\"tag:yaml.org,2002:omap\", {\n    kind: \"sequence\",\n    resolve: resolveYamlOmap,\n    construct: constructYamlOmap\n  });\n  return omap;\n}\nvar pairs;\nvar hasRequiredPairs;\nfunction requirePairs() {\n  if (hasRequiredPairs) return pairs;\n  hasRequiredPairs = 1;\n  const Type2 = requireType();\n  const _toString = Object.prototype.toString;\n  function resolveYamlPairs(data) {\n    if (data === null) return true;\n    const object = data;\n    const result = new Array(object.length);\n    for (let index = 0, length = object.length; index < length; index += 1) {\n      const pair = object[index];\n      if (_toString.call(pair) !== \"[object Object]\") return false;\n      const keys = Object.keys(pair);\n      if (keys.length !== 1) return false;\n      result[index] = [keys[0], pair[keys[0]]];\n    }\n    return true;\n  }\n  function constructYamlPairs(data) {\n    if (data === null) return [];\n    const object = data;\n    const result = new Array(object.length);\n    for (let index = 0, length = object.length; index < length; index += 1) {\n      const pair = object[index];\n      const keys = Object.keys(pair);\n      result[index] = [keys[0], pair[keys[0]]];\n    }\n    return result;\n  }\n  pairs = new Type2(\"tag:yaml.org,2002:pairs\", {\n    kind: \"sequence\",\n    resolve: resolveYamlPairs,\n    construct: constructYamlPairs\n  });\n  return pairs;\n}\nvar set;\nvar hasRequiredSet;\nfunction requireSet() {\n  if (hasRequiredSet) return set;\n  hasRequiredSet = 1;\n  const Type2 = requireType();\n  const _hasOwnProperty = Object.prototype.hasOwnProperty;\n  function resolveYamlSet(data) {\n    if (data === null) return true;\n    const object = data;\n    for (const key in object) {\n      if (_hasOwnProperty.call(object, key)) {\n        if (object[key] !== null) return false;\n      }\n    }\n    return true;\n  }\n  function constructYamlSet(data) {\n    return data !== null ? data : {};\n  }\n  set = new Type2(\"tag:yaml.org,2002:set\", {\n    kind: \"mapping\",\n    resolve: resolveYamlSet,\n    construct: constructYamlSet\n  });\n  return set;\n}\nvar _default;\nvar hasRequired_default;\nfunction require_default() {\n  if (hasRequired_default) return _default;\n  hasRequired_default = 1;\n  _default = requireCore().extend({\n    implicit: [\n      requireTimestamp(),\n      requireMerge()\n    ],\n    explicit: [\n      requireBinary(),\n      requireOmap(),\n      requirePairs(),\n      requireSet()\n    ]\n  });\n  return _default;\n}\nvar hasRequiredLoader;\nfunction requireLoader() {\n  if (hasRequiredLoader) return loader;\n  hasRequiredLoader = 1;\n  const common2 = requireCommon();\n  const YAMLException2 = requireException();\n  const makeSnippet = requireSnippet();\n  const DEFAULT_SCHEMA2 = require_default();\n  const _hasOwnProperty = Object.prototype.hasOwnProperty;\n  const CONTEXT_FLOW_IN = 1;\n  const CONTEXT_FLOW_OUT = 2;\n  const CONTEXT_BLOCK_IN = 3;\n  const CONTEXT_BLOCK_OUT = 4;\n  const CHOMPING_CLIP = 1;\n  const CHOMPING_STRIP = 2;\n  const CHOMPING_KEEP = 3;\n  const PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n  const PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\n  const PATTERN_FLOW_INDICATORS = /[,\\[\\]{}]/;\n  const PATTERN_TAG_HANDLE = /^(?:!|!!|![0-9A-Za-z-]+!)$/;\n  const PATTERN_TAG_URI = /^(?:!|[^,\\[\\]{}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;/?:@&=+$,_.!~*'()\\[\\]])*$/i;\n  function _class(obj) {\n    return Object.prototype.toString.call(obj);\n  }\n  function isEol(c) {\n    return c === 10 || c === 13;\n  }\n  function isWhiteSpace(c) {\n    return c === 9 || c === 32;\n  }\n  function isWsOrEol(c) {\n    return c === 9 || c === 32 || c === 10 || c === 13;\n  }\n  function isFlowIndicator(c) {\n    return c === 44 || c === 91 || c === 93 || c === 123 || c === 125;\n  }\n  function fromHexCode(c) {\n    if (c >= 48 && c <= 57) {\n      return c - 48;\n    }\n    const lc = c | 32;\n    if (lc >= 97 && lc <= 102) {\n      return lc - 97 + 10;\n    }\n    return -1;\n  }\n  function escapedHexLen(c) {\n    if (c === 120) {\n      return 2;\n    }\n    if (c === 117) {\n      return 4;\n    }\n    if (c === 85) {\n      return 8;\n    }\n    return 0;\n  }\n  function fromDecimalCode(c) {\n    if (c >= 48 && c <= 57) {\n      return c - 48;\n    }\n    return -1;\n  }\n  function simpleEscapeSequence(c) {\n    switch (c) {\n      case 48:\n        return \"\\0\";\n      case 97:\n        return \"\\x07\";\n      case 98:\n        return \"\\b\";\n      case 116:\n        return \"\t\";\n      case 9:\n        return \"\t\";\n      case 110:\n        return \"\\n\";\n      case 118:\n        return \"\\v\";\n      case 102:\n        return \"\\f\";\n      case 114:\n        return \"\\r\";\n      case 101:\n        return \"\\x1B\";\n      case 32:\n        return \" \";\n      case 34:\n        return '\"';\n      case 47:\n        return \"/\";\n      case 92:\n        return \"\\\\\";\n      case 78:\n        return \"\";\n      case 95:\n        return \" \";\n      case 76:\n        return \"\\u2028\";\n      case 80:\n        return \"\\u2029\";\n      default:\n        return \"\";\n    }\n  }\n  function charFromCodepoint(c) {\n    if (c <= 65535) {\n      return String.fromCharCode(c);\n    }\n    return String.fromCharCode(\n      (c - 65536 >> 10) + 55296,\n      (c - 65536 & 1023) + 56320\n    );\n  }\n  function setProperty(object, key, value) {\n    if (key === \"__proto__\") {\n      Object.defineProperty(object, key, {\n        configurable: true,\n        enumerable: true,\n        writable: true,\n        value\n      });\n    } else {\n      object[key] = value;\n    }\n  }\n  const simpleEscapeCheck = new Array(256);\n  const simpleEscapeMap = new Array(256);\n  for (let i = 0; i < 256; i++) {\n    simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n    simpleEscapeMap[i] = simpleEscapeSequence(i);\n  }\n  function State(input, options) {\n    this.input = input;\n    this.filename = options[\"filename\"] || null;\n    this.schema = options[\"schema\"] || DEFAULT_SCHEMA2;\n    this.onWarning = options[\"onWarning\"] || null;\n    this.legacy = options[\"legacy\"] || false;\n    this.json = options[\"json\"] || false;\n    this.listener = options[\"listener\"] || null;\n    this.maxDepth = typeof options[\"maxDepth\"] === \"number\" ? options[\"maxDepth\"] : 100;\n    this.maxTotalMergeKeys = typeof options[\"maxTotalMergeKeys\"] === \"number\" ? options[\"maxTotalMergeKeys\"] : 1e4;\n    this.implicitTypes = this.schema.compiledImplicit;\n    this.typeMap = this.schema.compiledTypeMap;\n    this.length = input.length;\n    this.position = 0;\n    this.line = 0;\n    this.lineStart = 0;\n    this.lineIndent = 0;\n    this.depth = 0;\n    this.totalMergeKeys = 0;\n    this.firstTabInLine = -1;\n    this.documents = [];\n    this.anchorMapTransactions = [];\n  }\n  function generateError(state, message) {\n    const mark = {\n      name: state.filename,\n      buffer: state.input.slice(0, -1),\n      // omit trailing \\0\n      position: state.position,\n      line: state.line,\n      column: state.position - state.lineStart\n    };\n    mark.snippet = makeSnippet(mark);\n    return new YAMLException2(message, mark);\n  }\n  function throwError(state, message) {\n    throw generateError(state, message);\n  }\n  function throwWarning(state, message) {\n    if (state.onWarning) {\n      state.onWarning.call(null, generateError(state, message));\n    }\n  }\n  function storeAnchor(state, name, value) {\n    const transactions = state.anchorMapTransactions;\n    if (transactions.length !== 0) {\n      const transaction = transactions[transactions.length - 1];\n      if (!_hasOwnProperty.call(transaction, name)) {\n        transaction[name] = {\n          existed: _hasOwnProperty.call(state.anchorMap, name),\n          value: state.anchorMap[name]\n        };\n      }\n    }\n    state.anchorMap[name] = value;\n  }\n  function beginAnchorTransaction(state) {\n    state.anchorMapTransactions.push(/* @__PURE__ */ Object.create(null));\n  }\n  function commitAnchorTransaction(state) {\n    const transaction = state.anchorMapTransactions.pop();\n    const transactions = state.anchorMapTransactions;\n    if (transactions.length === 0) return;\n    const parent = transactions[transactions.length - 1];\n    const names = Object.keys(transaction);\n    for (let index = 0, length = names.length; index < length; index += 1) {\n      const name = names[index];\n      if (!_hasOwnProperty.call(parent, name)) {\n        parent[name] = transaction[name];\n      }\n    }\n  }\n  function rollbackAnchorTransaction(state) {\n    const transaction = state.anchorMapTransactions.pop();\n    const names = Object.keys(transaction);\n    for (let index = names.length - 1; index >= 0; index -= 1) {\n      const entry = transaction[names[index]];\n      if (entry.existed) {\n        state.anchorMap[names[index]] = entry.value;\n      } else {\n        delete state.anchorMap[names[index]];\n      }\n    }\n  }\n  function snapshotState(state) {\n    return {\n      position: state.position,\n      line: state.line,\n      lineStart: state.lineStart,\n      lineIndent: state.lineIndent,\n      firstTabInLine: state.firstTabInLine,\n      tag: state.tag,\n      anchor: state.anchor,\n      kind: state.kind,\n      result: state.result\n    };\n  }\n  function restoreState(state, snapshot) {\n    state.position = snapshot.position;\n    state.line = snapshot.line;\n    state.lineStart = snapshot.lineStart;\n    state.lineIndent = snapshot.lineIndent;\n    state.firstTabInLine = snapshot.firstTabInLine;\n    state.tag = snapshot.tag;\n    state.anchor = snapshot.anchor;\n    state.kind = snapshot.kind;\n    state.result = snapshot.result;\n  }\n  const directiveHandlers = {\n    YAML: function handleYamlDirective(state, name, args) {\n      if (state.version !== null) {\n        throwError(state, \"duplication of %YAML directive\");\n      }\n      if (args.length !== 1) {\n        throwError(state, \"YAML directive accepts exactly one argument\");\n      }\n      const match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n      if (match === null) {\n        throwError(state, \"ill-formed argument of the YAML directive\");\n      }\n      const major = parseInt(match[1], 10);\n      const minor = parseInt(match[2], 10);\n      if (major !== 1) {\n        throwError(state, \"unacceptable YAML version of the document\");\n      }\n      state.version = args[0];\n      state.checkLineBreaks = minor < 2;\n      if (minor !== 1 && minor !== 2) {\n        throwWarning(state, \"unsupported YAML version of the document\");\n      }\n    },\n    TAG: function handleTagDirective(state, name, args) {\n      let prefix;\n      if (args.length !== 2) {\n        throwError(state, \"TAG directive accepts exactly two arguments\");\n      }\n      const handle = args[0];\n      prefix = args[1];\n      if (!PATTERN_TAG_HANDLE.test(handle)) {\n        throwError(state, \"ill-formed tag handle (first argument) of the TAG directive\");\n      }\n      if (_hasOwnProperty.call(state.tagMap, handle)) {\n        throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n      }\n      if (!PATTERN_TAG_URI.test(prefix)) {\n        throwError(state, \"ill-formed tag prefix (second argument) of the TAG directive\");\n      }\n      try {\n        prefix = decodeURIComponent(prefix);\n      } catch (err) {\n        throwError(state, \"tag prefix is malformed: \" + prefix);\n      }\n      state.tagMap[handle] = prefix;\n    }\n  };\n  function captureSegment(state, start, end, checkJson) {\n    if (start < end) {\n      const _result = state.input.slice(start, end);\n      if (checkJson) {\n        for (let _position = 0, _length = _result.length; _position < _length; _position += 1) {\n          const _character = _result.charCodeAt(_position);\n          if (!(_character === 9 || _character >= 32 && _character <= 1114111)) {\n            throwError(state, \"expected valid JSON character\");\n          }\n        }\n      } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n        throwError(state, \"the stream contains non-printable characters\");\n      }\n      state.result += _result;\n    }\n  }\n  function chargeMergeWork(state) {\n    state.totalMergeKeys++;\n    if (state.maxTotalMergeKeys !== -1 && state.totalMergeKeys > state.maxTotalMergeKeys) {\n      throwError(state, \"merge keys exceeded maxTotalMergeKeys (\" + state.maxTotalMergeKeys + \")\");\n    }\n  }\n  function mergeMappings(state, destination, source, overridableKeys) {\n    if (!common2.isObject(source)) {\n      throwError(state, \"cannot merge mappings; the provided source object is unacceptable\");\n    }\n    chargeMergeWork(state);\n    const sourceKeys = Object.keys(source);\n    for (let index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n      const key = sourceKeys[index];\n      chargeMergeWork(state);\n      if (!_hasOwnProperty.call(destination, key)) {\n        setProperty(destination, key, source[key]);\n        overridableKeys[key] = true;\n      }\n    }\n  }\n  function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startLineStart, startPos) {\n    if (Array.isArray(keyNode)) {\n      keyNode = Array.prototype.slice.call(keyNode);\n      for (let index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n        if (Array.isArray(keyNode[index])) {\n          throwError(state, \"nested arrays are not supported inside keys\");\n        }\n        if (typeof keyNode === \"object\" && _class(keyNode[index]) === \"[object Object]\") {\n          keyNode[index] = \"[object Object]\";\n        }\n      }\n    }\n    if (typeof keyNode === \"object\" && _class(keyNode) === \"[object Object]\") {\n      keyNode = \"[object Object]\";\n    }\n    keyNode = String(keyNode);\n    if (_result === null) {\n      _result = {};\n    }\n    if (keyTag === \"tag:yaml.org,2002:merge\") {\n      if (Array.isArray(valueNode)) {\n        if (valueNode.length > 100) {\n          throwError(state, \"abnormal merge sequence size\");\n        }\n        for (let index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n          mergeMappings(state, _result, valueNode[index], overridableKeys);\n        }\n      } else {\n        mergeMappings(state, _result, valueNode, overridableKeys);\n      }\n    } else {\n      if (!state.json && !_hasOwnProperty.call(overridableKeys, keyNode) && _hasOwnProperty.call(_result, keyNode)) {\n        state.line = startLine || state.line;\n        state.lineStart = startLineStart || state.lineStart;\n        state.position = startPos || state.position;\n        throwError(state, \"duplicated mapping key\");\n      }\n      setProperty(_result, keyNode, valueNode);\n      delete overridableKeys[keyNode];\n    }\n    return _result;\n  }\n  function readLineBreak(state) {\n    const ch = state.input.charCodeAt(state.position);\n    if (ch === 10) {\n      state.position++;\n    } else if (ch === 13) {\n      state.position++;\n      if (state.input.charCodeAt(state.position) === 10) {\n        state.position++;\n      }\n    } else {\n      throwError(state, \"a line break is expected\");\n    }\n    state.line += 1;\n    state.lineStart = state.position;\n    state.firstTabInLine = -1;\n  }\n  function skipSeparationSpace(state, allowComments, checkIndent) {\n    let lineBreaks = 0;\n    let ch = state.input.charCodeAt(state.position);\n    while (ch !== 0) {\n      while (isWhiteSpace(ch)) {\n        if (ch === 9 && state.firstTabInLine === -1) {\n          state.firstTabInLine = state.position;\n        }\n        ch = state.input.charCodeAt(++state.position);\n      }\n      if (allowComments && ch === 35) {\n        do {\n          ch = state.input.charCodeAt(++state.position);\n        } while (ch !== 10 && ch !== 13 && ch !== 0);\n      }\n      if (isEol(ch)) {\n        readLineBreak(state);\n        ch = state.input.charCodeAt(state.position);\n        lineBreaks++;\n        state.lineIndent = 0;\n        while (ch === 32) {\n          state.lineIndent++;\n          ch = state.input.charCodeAt(++state.position);\n        }\n      } else {\n        break;\n      }\n    }\n    if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n      throwWarning(state, \"deficient indentation\");\n    }\n    return lineBreaks;\n  }\n  function testDocumentSeparator(state) {\n    let _position = state.position;\n    let ch = state.input.charCodeAt(_position);\n    if ((ch === 45 || ch === 46) && ch === state.input.charCodeAt(_position + 1) && ch === state.input.charCodeAt(_position + 2)) {\n      _position += 3;\n      ch = state.input.charCodeAt(_position);\n      if (ch === 0 || isWsOrEol(ch)) {\n        return true;\n      }\n    }\n    return false;\n  }\n  function writeFoldedLines(state, count) {\n    if (count === 1) {\n      state.result += \" \";\n    } else if (count > 1) {\n      state.result += common2.repeat(\"\\n\", count - 1);\n    }\n  }\n  function readPlainScalar(state, nodeIndent, withinFlowCollection) {\n    let captureStart;\n    let captureEnd;\n    let hasPendingContent;\n    let _line;\n    let _lineStart;\n    let _lineIndent;\n    const _kind = state.kind;\n    const _result = state.result;\n    let ch = state.input.charCodeAt(state.position);\n    if (isWsOrEol(ch) || isFlowIndicator(ch) || ch === 35 || ch === 38 || ch === 42 || ch === 33 || ch === 124 || ch === 62 || ch === 39 || ch === 34 || ch === 37 || ch === 64 || ch === 96) {\n      return false;\n    }\n    if (ch === 63 || ch === 45) {\n      const following = state.input.charCodeAt(state.position + 1);\n      if (isWsOrEol(following) || withinFlowCollection && isFlowIndicator(following)) {\n        return false;\n      }\n    }\n    state.kind = \"scalar\";\n    state.result = \"\";\n    captureStart = captureEnd = state.position;\n    hasPendingContent = false;\n    while (ch !== 0) {\n      if (ch === 58) {\n        const following = state.input.charCodeAt(state.position + 1);\n        if (isWsOrEol(following) || withinFlowCollection && isFlowIndicator(following)) {\n          break;\n        }\n      } else if (ch === 35) {\n        const preceding = state.input.charCodeAt(state.position - 1);\n        if (isWsOrEol(preceding)) {\n          break;\n        }\n      } else if (state.position === state.lineStart && testDocumentSeparator(state) || withinFlowCollection && isFlowIndicator(ch)) {\n        break;\n      } else if (isEol(ch)) {\n        _line = state.line;\n        _lineStart = state.lineStart;\n        _lineIndent = state.lineIndent;\n        skipSeparationSpace(state, false, -1);\n        if (state.lineIndent >= nodeIndent) {\n          hasPendingContent = true;\n          ch = state.input.charCodeAt(state.position);\n          continue;\n        } else {\n          state.position = captureEnd;\n          state.line = _line;\n          state.lineStart = _lineStart;\n          state.lineIndent = _lineIndent;\n          break;\n        }\n      }\n      if (hasPendingContent) {\n        captureSegment(state, captureStart, captureEnd, false);\n        writeFoldedLines(state, state.line - _line);\n        captureStart = captureEnd = state.position;\n        hasPendingContent = false;\n      }\n      if (!isWhiteSpace(ch)) {\n        captureEnd = state.position + 1;\n      }\n      ch = state.input.charCodeAt(++state.position);\n    }\n    captureSegment(state, captureStart, captureEnd, false);\n    if (state.result) {\n      return true;\n    }\n    state.kind = _kind;\n    state.result = _result;\n    return false;\n  }\n  function readSingleQuotedScalar(state, nodeIndent) {\n    let captureStart;\n    let captureEnd;\n    let ch = state.input.charCodeAt(state.position);\n    if (ch !== 39) {\n      return false;\n    }\n    state.kind = \"scalar\";\n    state.result = \"\";\n    state.position++;\n    captureStart = captureEnd = state.position;\n    while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n      if (ch === 39) {\n        captureSegment(state, captureStart, state.position, true);\n        ch = state.input.charCodeAt(++state.position);\n        if (ch === 39) {\n          captureStart = state.position;\n          state.position++;\n          captureEnd = state.position;\n        } else {\n          return true;\n        }\n      } else if (isEol(ch)) {\n        captureSegment(state, captureStart, captureEnd, true);\n        writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n        captureStart = captureEnd = state.position;\n      } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n        throwError(state, \"unexpected end of the document within a single quoted scalar\");\n      } else {\n        state.position++;\n        if (!isWhiteSpace(ch)) {\n          captureEnd = state.position;\n        }\n      }\n    }\n    throwError(state, \"unexpected end of the stream within a single quoted scalar\");\n  }\n  function readDoubleQuotedScalar(state, nodeIndent) {\n    let captureStart;\n    let captureEnd;\n    let tmp;\n    let ch = state.input.charCodeAt(state.position);\n    if (ch !== 34) {\n      return false;\n    }\n    state.kind = \"scalar\";\n    state.result = \"\";\n    state.position++;\n    captureStart = captureEnd = state.position;\n    while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n      if (ch === 34) {\n        captureSegment(state, captureStart, state.position, true);\n        state.position++;\n        return true;\n      } else if (ch === 92) {\n        captureSegment(state, captureStart, state.position, true);\n        ch = state.input.charCodeAt(++state.position);\n        if (isEol(ch)) {\n          skipSeparationSpace(state, false, nodeIndent);\n        } else if (ch < 256 && simpleEscapeCheck[ch]) {\n          state.result += simpleEscapeMap[ch];\n          state.position++;\n        } else if ((tmp = escapedHexLen(ch)) > 0) {\n          let hexLength = tmp;\n          let hexResult = 0;\n          for (; hexLength > 0; hexLength--) {\n            ch = state.input.charCodeAt(++state.position);\n            if ((tmp = fromHexCode(ch)) >= 0) {\n              hexResult = (hexResult << 4) + tmp;\n            } else {\n              throwError(state, \"expected hexadecimal character\");\n            }\n          }\n          state.result += charFromCodepoint(hexResult);\n          state.position++;\n        } else {\n          throwError(state, \"unknown escape sequence\");\n        }\n        captureStart = captureEnd = state.position;\n      } else if (isEol(ch)) {\n        captureSegment(state, captureStart, captureEnd, true);\n        writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n        captureStart = captureEnd = state.position;\n      } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n        throwError(state, \"unexpected end of the document within a double quoted scalar\");\n      } else {\n        state.position++;\n        if (!isWhiteSpace(ch)) {\n          captureEnd = state.position;\n        }\n      }\n    }\n    throwError(state, \"unexpected end of the stream within a double quoted scalar\");\n  }\n  function readFlowCollection(state, nodeIndent) {\n    let readNext = true;\n    let _line;\n    let _lineStart;\n    let _pos;\n    const _tag = state.tag;\n    let _result;\n    const _anchor = state.anchor;\n    let terminator;\n    let isPair;\n    let isExplicitPair;\n    let isMapping;\n    const overridableKeys = /* @__PURE__ */ Object.create(null);\n    let keyNode;\n    let keyTag;\n    let valueNode;\n    let ch = state.input.charCodeAt(state.position);\n    if (ch === 91) {\n      terminator = 93;\n      isMapping = false;\n      _result = [];\n    } else if (ch === 123) {\n      terminator = 125;\n      isMapping = true;\n      _result = {};\n    } else {\n      return false;\n    }\n    if (state.anchor !== null) {\n      storeAnchor(state, state.anchor, _result);\n    }\n    ch = state.input.charCodeAt(++state.position);\n    while (ch !== 0) {\n      skipSeparationSpace(state, true, nodeIndent);\n      ch = state.input.charCodeAt(state.position);\n      if (ch === terminator) {\n        state.position++;\n        state.tag = _tag;\n        state.anchor = _anchor;\n        state.kind = isMapping ? \"mapping\" : \"sequence\";\n        state.result = _result;\n        return true;\n      } else if (!readNext) {\n        throwError(state, \"missed comma between flow collection entries\");\n      } else if (ch === 44) {\n        throwError(state, \"expected the node content, but found ','\");\n      }\n      keyTag = keyNode = valueNode = null;\n      isPair = isExplicitPair = false;\n      if (ch === 63) {\n        const following = state.input.charCodeAt(state.position + 1);\n        if (isWsOrEol(following)) {\n          isPair = isExplicitPair = true;\n          state.position++;\n          skipSeparationSpace(state, true, nodeIndent);\n        }\n      }\n      _line = state.line;\n      _lineStart = state.lineStart;\n      _pos = state.position;\n      composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n      keyTag = state.tag;\n      keyNode = state.result;\n      skipSeparationSpace(state, true, nodeIndent);\n      ch = state.input.charCodeAt(state.position);\n      if ((isExplicitPair || state.line === _line) && ch === 58) {\n        isPair = true;\n        ch = state.input.charCodeAt(++state.position);\n        skipSeparationSpace(state, true, nodeIndent);\n        composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n        valueNode = state.result;\n      }\n      if (isMapping) {\n        storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos);\n      } else if (isPair) {\n        _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos));\n      } else {\n        _result.push(keyNode);\n      }\n      skipSeparationSpace(state, true, nodeIndent);\n      ch = state.input.charCodeAt(state.position);\n      if (ch === 44) {\n        readNext = true;\n        ch = state.input.charCodeAt(++state.position);\n      } else {\n        readNext = false;\n      }\n    }\n    throwError(state, \"unexpected end of the stream within a flow collection\");\n  }\n  function readBlockScalar(state, nodeIndent) {\n    let folding;\n    let chomping = CHOMPING_CLIP;\n    let didReadContent = false;\n    let detectedIndent = false;\n    let textIndent = nodeIndent;\n    let emptyLines = 0;\n    let atMoreIndented = false;\n    let tmp;\n    let ch = state.input.charCodeAt(state.position);\n    if (ch === 124) {\n      folding = false;\n    } else if (ch === 62) {\n      folding = true;\n    } else {\n      return false;\n    }\n    state.kind = \"scalar\";\n    state.result = \"\";\n    while (ch !== 0) {\n      ch = state.input.charCodeAt(++state.position);\n      if (ch === 43 || ch === 45) {\n        if (CHOMPING_CLIP === chomping) {\n          chomping = ch === 43 ? CHOMPING_KEEP : CHOMPING_STRIP;\n        } else {\n          throwError(state, \"repeat of a chomping mode identifier\");\n        }\n      } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n        if (tmp === 0) {\n          throwError(state, \"bad explicit indentation width of a block scalar; it cannot be less than one\");\n        } else if (!detectedIndent) {\n          textIndent = nodeIndent + tmp - 1;\n          detectedIndent = true;\n        } else {\n          throwError(state, \"repeat of an indentation width identifier\");\n        }\n      } else {\n        break;\n      }\n    }\n    if (isWhiteSpace(ch)) {\n      do {\n        ch = state.input.charCodeAt(++state.position);\n      } while (isWhiteSpace(ch));\n      if (ch === 35) {\n        do {\n          ch = state.input.charCodeAt(++state.position);\n        } while (!isEol(ch) && ch !== 0);\n      }\n    }\n    while (ch !== 0) {\n      readLineBreak(state);\n      state.lineIndent = 0;\n      ch = state.input.charCodeAt(state.position);\n      while ((!detectedIndent || state.lineIndent < textIndent) && ch === 32) {\n        state.lineIndent++;\n        ch = state.input.charCodeAt(++state.position);\n      }\n      if (!detectedIndent && state.lineIndent > textIndent) {\n        textIndent = state.lineIndent;\n      }\n      if (isEol(ch)) {\n        emptyLines++;\n        continue;\n      }\n      if (!detectedIndent && textIndent === 0) {\n        throwError(state, \"missing indentation for block scalar\");\n      }\n      if (state.lineIndent < textIndent) {\n        if (chomping === CHOMPING_KEEP) {\n          state.result += common2.repeat(\"\\n\", didReadContent ? 1 + emptyLines : emptyLines);\n        } else if (chomping === CHOMPING_CLIP) {\n          if (didReadContent) {\n            state.result += \"\\n\";\n          }\n        }\n        break;\n      }\n      if (folding) {\n        if (isWhiteSpace(ch)) {\n          atMoreIndented = true;\n          state.result += common2.repeat(\"\\n\", didReadContent ? 1 + emptyLines : emptyLines);\n        } else if (atMoreIndented) {\n          atMoreIndented = false;\n          state.result += common2.repeat(\"\\n\", emptyLines + 1);\n        } else if (emptyLines === 0) {\n          if (didReadContent) {\n            state.result += \" \";\n          }\n        } else {\n          state.result += common2.repeat(\"\\n\", emptyLines);\n        }\n      } else {\n        state.result += common2.repeat(\"\\n\", didReadContent ? 1 + emptyLines : emptyLines);\n      }\n      didReadContent = true;\n      detectedIndent = true;\n      emptyLines = 0;\n      const captureStart = state.position;\n      while (!isEol(ch) && ch !== 0) {\n        ch = state.input.charCodeAt(++state.position);\n      }\n      captureSegment(state, captureStart, state.position, false);\n    }\n    return true;\n  }\n  function readBlockSequence(state, nodeIndent) {\n    const _tag = state.tag;\n    const _anchor = state.anchor;\n    const _result = [];\n    let detected = false;\n    if (state.firstTabInLine !== -1) return false;\n    if (state.anchor !== null) {\n      storeAnchor(state, state.anchor, _result);\n    }\n    let ch = state.input.charCodeAt(state.position);\n    while (ch !== 0) {\n      if (state.firstTabInLine !== -1) {\n        state.position = state.firstTabInLine;\n        throwError(state, \"tab characters must not be used in indentation\");\n      }\n      if (ch !== 45) {\n        break;\n      }\n      const following = state.input.charCodeAt(state.position + 1);\n      if (!isWsOrEol(following)) {\n        break;\n      }\n      detected = true;\n      state.position++;\n      if (skipSeparationSpace(state, true, -1)) {\n        if (state.lineIndent <= nodeIndent) {\n          _result.push(null);\n          ch = state.input.charCodeAt(state.position);\n          continue;\n        }\n      }\n      const _line = state.line;\n      composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n      _result.push(state.result);\n      skipSeparationSpace(state, true, -1);\n      ch = state.input.charCodeAt(state.position);\n      if ((state.line === _line || state.lineIndent > nodeIndent) && ch !== 0) {\n        throwError(state, \"bad indentation of a sequence entry\");\n      } else if (state.lineIndent < nodeIndent) {\n        break;\n      }\n    }\n    if (detected) {\n      state.tag = _tag;\n      state.anchor = _anchor;\n      state.kind = \"sequence\";\n      state.result = _result;\n      return true;\n    }\n    return false;\n  }\n  function readBlockMapping(state, nodeIndent, flowIndent) {\n    let allowCompact;\n    let _keyLine;\n    let _keyLineStart;\n    let _keyPos;\n    const _tag = state.tag;\n    const _anchor = state.anchor;\n    const _result = {};\n    const overridableKeys = /* @__PURE__ */ Object.create(null);\n    let keyTag = null;\n    let keyNode = null;\n    let valueNode = null;\n    let atExplicitKey = false;\n    let detected = false;\n    if (state.firstTabInLine !== -1) return false;\n    if (state.anchor !== null) {\n      storeAnchor(state, state.anchor, _result);\n    }\n    let ch = state.input.charCodeAt(state.position);\n    while (ch !== 0) {\n      if (!atExplicitKey && state.firstTabInLine !== -1) {\n        state.position = state.firstTabInLine;\n        throwError(state, \"tab characters must not be used in indentation\");\n      }\n      const following = state.input.charCodeAt(state.position + 1);\n      const _line = state.line;\n      if ((ch === 63 || ch === 58) && isWsOrEol(following)) {\n        if (ch === 63) {\n          if (atExplicitKey) {\n            storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n            keyTag = keyNode = valueNode = null;\n          }\n          detected = true;\n          atExplicitKey = true;\n          allowCompact = true;\n        } else if (atExplicitKey) {\n          atExplicitKey = false;\n          allowCompact = true;\n        } else {\n          throwError(state, \"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line\");\n        }\n        state.position += 1;\n        ch = following;\n      } else {\n        _keyLine = state.line;\n        _keyLineStart = state.lineStart;\n        _keyPos = state.position;\n        if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n          break;\n        }\n        if (state.line === _line) {\n          ch = state.input.charCodeAt(state.position);\n          while (isWhiteSpace(ch)) {\n            ch = state.input.charCodeAt(++state.position);\n          }\n          if (ch === 58) {\n            ch = state.input.charCodeAt(++state.position);\n            if (!isWsOrEol(ch)) {\n              throwError(state, \"a whitespace character is expected after the key-value separator within a block mapping\");\n            }\n            if (atExplicitKey) {\n              storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n              keyTag = keyNode = valueNode = null;\n            }\n            detected = true;\n            atExplicitKey = false;\n            allowCompact = false;\n            keyTag = state.tag;\n            keyNode = state.result;\n          } else if (detected) {\n            throwError(state, \"can not read an implicit mapping pair; a colon is missed\");\n          } else {\n            state.tag = _tag;\n            state.anchor = _anchor;\n            return true;\n          }\n        } else if (detected) {\n          throwError(state, \"can not read a block mapping entry; a multiline key may not be an implicit key\");\n        } else {\n          state.tag = _tag;\n          state.anchor = _anchor;\n          return true;\n        }\n      }\n      if (state.line === _line || state.lineIndent > nodeIndent) {\n        if (atExplicitKey) {\n          _keyLine = state.line;\n          _keyLineStart = state.lineStart;\n          _keyPos = state.position;\n        }\n        if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n          if (atExplicitKey) {\n            keyNode = state.result;\n          } else {\n            valueNode = state.result;\n          }\n        }\n        if (!atExplicitKey) {\n          storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos);\n          keyTag = keyNode = valueNode = null;\n        }\n        skipSeparationSpace(state, true, -1);\n        ch = state.input.charCodeAt(state.position);\n      }\n      if ((state.line === _line || state.lineIndent > nodeIndent) && ch !== 0) {\n        throwError(state, \"bad indentation of a mapping entry\");\n      } else if (state.lineIndent < nodeIndent) {\n        break;\n      }\n    }\n    if (atExplicitKey) {\n      storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n    }\n    if (detected) {\n      state.tag = _tag;\n      state.anchor = _anchor;\n      state.kind = \"mapping\";\n      state.result = _result;\n    }\n    return detected;\n  }\n  function readTagProperty(state) {\n    let isVerbatim = false;\n    let isNamed = false;\n    let tagHandle;\n    let tagName;\n    let ch = state.input.charCodeAt(state.position);\n    if (ch !== 33) return false;\n    if (state.tag !== null) {\n      throwError(state, \"duplication of a tag property\");\n    }\n    ch = state.input.charCodeAt(++state.position);\n    if (ch === 60) {\n      isVerbatim = true;\n      ch = state.input.charCodeAt(++state.position);\n    } else if (ch === 33) {\n      isNamed = true;\n      tagHandle = \"!!\";\n      ch = state.input.charCodeAt(++state.position);\n    } else {\n      tagHandle = \"!\";\n    }\n    let _position = state.position;\n    if (isVerbatim) {\n      do {\n        ch = state.input.charCodeAt(++state.position);\n      } while (ch !== 0 && ch !== 62);\n      if (state.position < state.length) {\n        tagName = state.input.slice(_position, state.position);\n        ch = state.input.charCodeAt(++state.position);\n      } else {\n        throwError(state, \"unexpected end of the stream within a verbatim tag\");\n      }\n    } else {\n      while (ch !== 0 && !isWsOrEol(ch)) {\n        if (ch === 33) {\n          if (!isNamed) {\n            tagHandle = state.input.slice(_position - 1, state.position + 1);\n            if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n              throwError(state, \"named tag handle cannot contain such characters\");\n            }\n            isNamed = true;\n            _position = state.position + 1;\n          } else {\n            throwError(state, \"tag suffix cannot contain exclamation marks\");\n          }\n        }\n        ch = state.input.charCodeAt(++state.position);\n      }\n      tagName = state.input.slice(_position, state.position);\n      if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n        throwError(state, \"tag suffix cannot contain flow indicator characters\");\n      }\n    }\n    if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n      throwError(state, \"tag name cannot contain such characters: \" + tagName);\n    }\n    try {\n      tagName = decodeURIComponent(tagName);\n    } catch (err) {\n      throwError(state, \"tag name is malformed: \" + tagName);\n    }\n    if (isVerbatim) {\n      state.tag = tagName;\n    } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n      state.tag = state.tagMap[tagHandle] + tagName;\n    } else if (tagHandle === \"!\") {\n      state.tag = \"!\" + tagName;\n    } else if (tagHandle === \"!!\") {\n      state.tag = \"tag:yaml.org,2002:\" + tagName;\n    } else {\n      throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n    }\n    return true;\n  }\n  function readAnchorProperty(state) {\n    let ch = state.input.charCodeAt(state.position);\n    if (ch !== 38) return false;\n    if (state.anchor !== null) {\n      throwError(state, \"duplication of an anchor property\");\n    }\n    ch = state.input.charCodeAt(++state.position);\n    const _position = state.position;\n    while (ch !== 0 && !isWsOrEol(ch) && !isFlowIndicator(ch)) {\n      ch = state.input.charCodeAt(++state.position);\n    }\n    if (state.position === _position) {\n      throwError(state, \"name of an anchor node must contain at least one character\");\n    }\n    state.anchor = state.input.slice(_position, state.position);\n    return true;\n  }\n  function readAlias(state) {\n    let ch = state.input.charCodeAt(state.position);\n    if (ch !== 42) return false;\n    ch = state.input.charCodeAt(++state.position);\n    const _position = state.position;\n    while (ch !== 0 && !isWsOrEol(ch) && !isFlowIndicator(ch)) {\n      ch = state.input.charCodeAt(++state.position);\n    }\n    if (state.position === _position) {\n      throwError(state, \"name of an alias node must contain at least one character\");\n    }\n    const alias = state.input.slice(_position, state.position);\n    if (!_hasOwnProperty.call(state.anchorMap, alias)) {\n      throwError(state, 'unidentified alias \"' + alias + '\"');\n    }\n    state.result = state.anchorMap[alias];\n    skipSeparationSpace(state, true, -1);\n    return true;\n  }\n  function tryReadBlockMappingFromProperty(state, propertyStart, nodeIndent, flowIndent) {\n    const fallbackState = snapshotState(state);\n    beginAnchorTransaction(state);\n    restoreState(state, propertyStart);\n    state.tag = null;\n    state.anchor = null;\n    state.kind = null;\n    state.result = null;\n    if (readBlockMapping(state, nodeIndent, flowIndent) && state.kind === \"mapping\") {\n      commitAnchorTransaction(state);\n      return true;\n    }\n    rollbackAnchorTransaction(state);\n    restoreState(state, fallbackState);\n    return false;\n  }\n  function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n    let allowBlockScalars;\n    let allowBlockCollections;\n    let indentStatus = 1;\n    let atNewLine = false;\n    let hasContent = false;\n    let propertyStart = null;\n    let type2;\n    let flowIndent;\n    let blockIndent;\n    if (state.depth >= state.maxDepth) {\n      throwError(state, \"nesting exceeded maxDepth (\" + state.maxDepth + \")\");\n    }\n    state.depth += 1;\n    if (state.listener !== null) {\n      state.listener(\"open\", state);\n    }\n    state.tag = null;\n    state.anchor = null;\n    state.kind = null;\n    state.result = null;\n    const allowBlockStyles = allowBlockScalars = allowBlockCollections = CONTEXT_BLOCK_OUT === nodeContext || CONTEXT_BLOCK_IN === nodeContext;\n    if (allowToSeek) {\n      if (skipSeparationSpace(state, true, -1)) {\n        atNewLine = true;\n        if (state.lineIndent > parentIndent) {\n          indentStatus = 1;\n        } else if (state.lineIndent === parentIndent) {\n          indentStatus = 0;\n        } else if (state.lineIndent < parentIndent) {\n          indentStatus = -1;\n        }\n      }\n    }\n    if (indentStatus === 1) {\n      while (true) {\n        const ch = state.input.charCodeAt(state.position);\n        const propertyState = snapshotState(state);\n        if (atNewLine && (ch === 33 && state.tag !== null || ch === 38 && state.anchor !== null)) {\n          break;\n        }\n        if (!readTagProperty(state) && !readAnchorProperty(state)) {\n          break;\n        }\n        if (propertyStart === null) {\n          propertyStart = propertyState;\n        }\n        if (skipSeparationSpace(state, true, -1)) {\n          atNewLine = true;\n          allowBlockCollections = allowBlockStyles;\n          if (state.lineIndent > parentIndent) {\n            indentStatus = 1;\n          } else if (state.lineIndent === parentIndent) {\n            indentStatus = 0;\n          } else if (state.lineIndent < parentIndent) {\n            indentStatus = -1;\n          }\n        } else {\n          allowBlockCollections = false;\n        }\n      }\n    }\n    if (allowBlockCollections) {\n      allowBlockCollections = atNewLine || allowCompact;\n    }\n    if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n      if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n        flowIndent = parentIndent;\n      } else {\n        flowIndent = parentIndent + 1;\n      }\n      blockIndent = state.position - state.lineStart;\n      if (indentStatus === 1) {\n        if (allowBlockCollections && (readBlockSequence(state, blockIndent) || readBlockMapping(state, blockIndent, flowIndent)) || readFlowCollection(state, flowIndent)) {\n          hasContent = true;\n        } else {\n          const ch = state.input.charCodeAt(state.position);\n          if (propertyStart !== null && allowBlockStyles && !allowBlockCollections && ch !== 124 && ch !== 62 && tryReadBlockMappingFromProperty(\n            state,\n            propertyStart,\n            propertyStart.position - propertyStart.lineStart,\n            flowIndent\n          )) {\n            hasContent = true;\n          } else if (allowBlockScalars && readBlockScalar(state, flowIndent) || readSingleQuotedScalar(state, flowIndent) || readDoubleQuotedScalar(state, flowIndent)) {\n            hasContent = true;\n          } else if (readAlias(state)) {\n            hasContent = true;\n            if (state.tag !== null || state.anchor !== null) {\n              throwError(state, \"alias node should not have any properties\");\n            }\n          } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n            hasContent = true;\n            if (state.tag === null) {\n              state.tag = \"?\";\n            }\n          }\n          if (state.anchor !== null) {\n            storeAnchor(state, state.anchor, state.result);\n          }\n        }\n      } else if (indentStatus === 0) {\n        hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n      }\n    }\n    if (state.tag === null) {\n      if (state.anchor !== null) {\n        storeAnchor(state, state.anchor, state.result);\n      }\n    } else if (state.tag === \"?\") {\n      if (state.result !== null && state.kind !== \"scalar\") {\n        throwError(state, 'unacceptable node kind for !<?> tag; it should be \"scalar\", not \"' + state.kind + '\"');\n      }\n      for (let typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n        type2 = state.implicitTypes[typeIndex];\n        if (type2.resolve(state.result)) {\n          state.result = type2.construct(state.result);\n          state.tag = type2.tag;\n          if (state.anchor !== null) {\n            storeAnchor(state, state.anchor, state.result);\n          }\n          break;\n        }\n      }\n    } else if (state.tag !== \"!\") {\n      if (_hasOwnProperty.call(state.typeMap[state.kind || \"fallback\"], state.tag)) {\n        type2 = state.typeMap[state.kind || \"fallback\"][state.tag];\n      } else {\n        type2 = null;\n        const typeList = state.typeMap.multi[state.kind || \"fallback\"];\n        for (let typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) {\n          if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) {\n            type2 = typeList[typeIndex];\n            break;\n          }\n        }\n      }\n      if (!type2) {\n        throwError(state, \"unknown tag !<\" + state.tag + \">\");\n      }\n      if (state.result !== null && type2.kind !== state.kind) {\n        throwError(state, \"unacceptable node kind for !<\" + state.tag + '> tag; it should be \"' + type2.kind + '\", not \"' + state.kind + '\"');\n      }\n      if (!type2.resolve(state.result, state.tag)) {\n        throwError(state, \"cannot resolve a node with !<\" + state.tag + \"> explicit tag\");\n      } else {\n        state.result = type2.construct(state.result, state.tag);\n        if (state.anchor !== null) {\n          storeAnchor(state, state.anchor, state.result);\n        }\n      }\n    }\n    if (state.listener !== null) {\n      state.listener(\"close\", state);\n    }\n    state.depth -= 1;\n    return state.tag !== null || state.anchor !== null || hasContent;\n  }\n  function readDocument(state) {\n    const documentStart = state.position;\n    let hasDirectives = false;\n    let ch;\n    state.version = null;\n    state.checkLineBreaks = state.legacy;\n    state.tagMap = /* @__PURE__ */ Object.create(null);\n    state.anchorMap = /* @__PURE__ */ Object.create(null);\n    while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n      skipSeparationSpace(state, true, -1);\n      ch = state.input.charCodeAt(state.position);\n      if (state.lineIndent > 0 || ch !== 37) {\n        break;\n      }\n      hasDirectives = true;\n      ch = state.input.charCodeAt(++state.position);\n      let _position = state.position;\n      while (ch !== 0 && !isWsOrEol(ch)) {\n        ch = state.input.charCodeAt(++state.position);\n      }\n      const directiveName = state.input.slice(_position, state.position);\n      const directiveArgs = [];\n      if (directiveName.length < 1) {\n        throwError(state, \"directive name must not be less than one character in length\");\n      }\n      while (ch !== 0) {\n        while (isWhiteSpace(ch)) {\n          ch = state.input.charCodeAt(++state.position);\n        }\n        if (ch === 35) {\n          do {\n            ch = state.input.charCodeAt(++state.position);\n          } while (ch !== 0 && !isEol(ch));\n          break;\n        }\n        if (isEol(ch)) break;\n        _position = state.position;\n        while (ch !== 0 && !isWsOrEol(ch)) {\n          ch = state.input.charCodeAt(++state.position);\n        }\n        directiveArgs.push(state.input.slice(_position, state.position));\n      }\n      if (ch !== 0) readLineBreak(state);\n      if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n        directiveHandlers[directiveName](state, directiveName, directiveArgs);\n      } else {\n        throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n      }\n    }\n    skipSeparationSpace(state, true, -1);\n    if (state.lineIndent === 0 && state.input.charCodeAt(state.position) === 45 && state.input.charCodeAt(state.position + 1) === 45 && state.input.charCodeAt(state.position + 2) === 45) {\n      state.position += 3;\n      skipSeparationSpace(state, true, -1);\n    } else if (hasDirectives) {\n      throwError(state, \"directives end mark is expected\");\n    }\n    composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n    skipSeparationSpace(state, true, -1);\n    if (state.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n      throwWarning(state, \"non-ASCII line breaks are interpreted as content\");\n    }\n    state.documents.push(state.result);\n    if (state.position === state.lineStart && testDocumentSeparator(state)) {\n      if (state.input.charCodeAt(state.position) === 46) {\n        state.position += 3;\n        skipSeparationSpace(state, true, -1);\n      }\n      return;\n    }\n    if (state.position < state.length - 1) {\n      throwError(state, \"end of the stream or a document separator is expected\");\n    }\n  }\n  function loadDocuments(input, options) {\n    input = String(input);\n    options = options || {};\n    if (input.length !== 0) {\n      if (input.charCodeAt(input.length - 1) !== 10 && input.charCodeAt(input.length - 1) !== 13) {\n        input += \"\\n\";\n      }\n      if (input.charCodeAt(0) === 65279) {\n        input = input.slice(1);\n      }\n    }\n    const state = new State(input, options);\n    const nullpos = input.indexOf(\"\\0\");\n    if (nullpos !== -1) {\n      state.position = nullpos;\n      throwError(state, \"null byte is not allowed in input\");\n    }\n    state.input += \"\\0\";\n    while (state.input.charCodeAt(state.position) === 32) {\n      state.lineIndent += 1;\n      state.position += 1;\n    }\n    while (state.position < state.length - 1) {\n      readDocument(state);\n    }\n    return state.documents;\n  }\n  function loadAll2(input, iterator, options) {\n    if (iterator !== null && typeof iterator === \"object\" && typeof options === \"undefined\") {\n      options = iterator;\n      iterator = null;\n    }\n    const documents = loadDocuments(input, options);\n    if (typeof iterator !== \"function\") {\n      return documents;\n    }\n    for (let index = 0, length = documents.length; index < length; index += 1) {\n      iterator(documents[index]);\n    }\n  }\n  function load2(input, options) {\n    const documents = loadDocuments(input, options);\n    if (documents.length === 0) {\n      return void 0;\n    } else if (documents.length === 1) {\n      return documents[0];\n    }\n    throw new YAMLException2(\"expected a single document in the stream, but found more\");\n  }\n  loader.loadAll = loadAll2;\n  loader.load = load2;\n  return loader;\n}\nvar dumper = {};\nvar hasRequiredDumper;\nfunction requireDumper() {\n  if (hasRequiredDumper) return dumper;\n  hasRequiredDumper = 1;\n  const common2 = requireCommon();\n  const YAMLException2 = requireException();\n  const DEFAULT_SCHEMA2 = require_default();\n  const _toString = Object.prototype.toString;\n  const _hasOwnProperty = Object.prototype.hasOwnProperty;\n  const CHAR_BOM = 65279;\n  const CHAR_TAB = 9;\n  const CHAR_LINE_FEED = 10;\n  const CHAR_CARRIAGE_RETURN = 13;\n  const CHAR_SPACE = 32;\n  const CHAR_EXCLAMATION = 33;\n  const CHAR_DOUBLE_QUOTE = 34;\n  const CHAR_SHARP = 35;\n  const CHAR_PERCENT = 37;\n  const CHAR_AMPERSAND = 38;\n  const CHAR_SINGLE_QUOTE = 39;\n  const CHAR_ASTERISK = 42;\n  const CHAR_COMMA = 44;\n  const CHAR_MINUS = 45;\n  const CHAR_COLON = 58;\n  const CHAR_EQUALS = 61;\n  const CHAR_GREATER_THAN = 62;\n  const CHAR_QUESTION = 63;\n  const CHAR_COMMERCIAL_AT = 64;\n  const CHAR_LEFT_SQUARE_BRACKET = 91;\n  const CHAR_RIGHT_SQUARE_BRACKET = 93;\n  const CHAR_GRAVE_ACCENT = 96;\n  const CHAR_LEFT_CURLY_BRACKET = 123;\n  const CHAR_VERTICAL_LINE = 124;\n  const CHAR_RIGHT_CURLY_BRACKET = 125;\n  const ESCAPE_SEQUENCES = {};\n  ESCAPE_SEQUENCES[0] = \"\\\\0\";\n  ESCAPE_SEQUENCES[7] = \"\\\\a\";\n  ESCAPE_SEQUENCES[8] = \"\\\\b\";\n  ESCAPE_SEQUENCES[9] = \"\\\\t\";\n  ESCAPE_SEQUENCES[10] = \"\\\\n\";\n  ESCAPE_SEQUENCES[11] = \"\\\\v\";\n  ESCAPE_SEQUENCES[12] = \"\\\\f\";\n  ESCAPE_SEQUENCES[13] = \"\\\\r\";\n  ESCAPE_SEQUENCES[27] = \"\\\\e\";\n  ESCAPE_SEQUENCES[34] = '\\\\\"';\n  ESCAPE_SEQUENCES[92] = \"\\\\\\\\\";\n  ESCAPE_SEQUENCES[133] = \"\\\\N\";\n  ESCAPE_SEQUENCES[160] = \"\\\\_\";\n  ESCAPE_SEQUENCES[8232] = \"\\\\L\";\n  ESCAPE_SEQUENCES[8233] = \"\\\\P\";\n  const DEPRECATED_BOOLEANS_SYNTAX = [\n    \"y\",\n    \"Y\",\n    \"yes\",\n    \"Yes\",\n    \"YES\",\n    \"on\",\n    \"On\",\n    \"ON\",\n    \"n\",\n    \"N\",\n    \"no\",\n    \"No\",\n    \"NO\",\n    \"off\",\n    \"Off\",\n    \"OFF\"\n  ];\n  const DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\\.[0-9_]*)?$/;\n  function compileStyleMap(schema2, map2) {\n    if (map2 === null) return {};\n    const result = {};\n    const keys = Object.keys(map2);\n    for (let index = 0, length = keys.length; index < length; index += 1) {\n      let tag = keys[index];\n      let style = String(map2[tag]);\n      if (tag.slice(0, 2) === \"!!\") {\n        tag = \"tag:yaml.org,2002:\" + tag.slice(2);\n      }\n      const type2 = schema2.compiledTypeMap[\"fallback\"][tag];\n      if (type2 && _hasOwnProperty.call(type2.styleAliases, style)) {\n        style = type2.styleAliases[style];\n      }\n      result[tag] = style;\n    }\n    return result;\n  }\n  function encodeHex(character) {\n    let handle;\n    let length;\n    const string = character.toString(16).toUpperCase();\n    if (character <= 255) {\n      handle = \"x\";\n      length = 2;\n    } else if (character <= 65535) {\n      handle = \"u\";\n      length = 4;\n    } else if (character <= 4294967295) {\n      handle = \"U\";\n      length = 8;\n    } else {\n      throw new YAMLException2(\"code point within a string may not be greater than 0xFFFFFFFF\");\n    }\n    return \"\\\\\" + handle + common2.repeat(\"0\", length - string.length) + string;\n  }\n  const QUOTING_TYPE_SINGLE = 1;\n  const QUOTING_TYPE_DOUBLE = 2;\n  function State(options) {\n    this.schema = options[\"schema\"] || DEFAULT_SCHEMA2;\n    this.indent = Math.max(1, options[\"indent\"] || 2);\n    this.noArrayIndent = options[\"noArrayIndent\"] || false;\n    this.skipInvalid = options[\"skipInvalid\"] || false;\n    this.flowLevel = common2.isNothing(options[\"flowLevel\"]) ? -1 : options[\"flowLevel\"];\n    this.styleMap = compileStyleMap(this.schema, options[\"styles\"] || null);\n    this.sortKeys = options[\"sortKeys\"] || false;\n    this.lineWidth = options[\"lineWidth\"] || 80;\n    this.noRefs = options[\"noRefs\"] || false;\n    this.noCompatMode = options[\"noCompatMode\"] || false;\n    this.condenseFlow = options[\"condenseFlow\"] || false;\n    this.quotingType = options[\"quotingType\"] === '\"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE;\n    this.forceQuotes = options[\"forceQuotes\"] || false;\n    this.replacer = typeof options[\"replacer\"] === \"function\" ? options[\"replacer\"] : null;\n    this.implicitTypes = this.schema.compiledImplicit;\n    this.explicitTypes = this.schema.compiledExplicit;\n    this.tag = null;\n    this.result = \"\";\n    this.duplicates = [];\n    this.usedDuplicates = null;\n  }\n  function indentString(string, spaces) {\n    const ind = common2.repeat(\" \", spaces);\n    let position = 0;\n    let result = \"\";\n    const length = string.length;\n    while (position < length) {\n      let line;\n      const next = string.indexOf(\"\\n\", position);\n      if (next === -1) {\n        line = string.slice(position);\n        position = length;\n      } else {\n        line = string.slice(position, next + 1);\n        position = next + 1;\n      }\n      if (line.length && line !== \"\\n\") result += ind;\n      result += line;\n    }\n    return result;\n  }\n  function generateNextLine(state, level) {\n    return \"\\n\" + common2.repeat(\" \", state.indent * level);\n  }\n  function testImplicitResolving(state, str2) {\n    for (let index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n      const type2 = state.implicitTypes[index];\n      if (type2.resolve(str2)) {\n        return true;\n      }\n    }\n    return false;\n  }\n  function isWhitespace(c) {\n    return c === CHAR_SPACE || c === CHAR_TAB;\n  }\n  function isPrintable(c) {\n    return c >= 32 && c <= 126 || c >= 161 && c <= 55295 && c !== 8232 && c !== 8233 || c >= 57344 && c <= 65533 && c !== CHAR_BOM || c >= 65536 && c <= 1114111;\n  }\n  function isNsCharOrWhitespace(c) {\n    return isPrintable(c) && c !== CHAR_BOM && // - b-char\n    c !== CHAR_CARRIAGE_RETURN && c !== CHAR_LINE_FEED;\n  }\n  function isPlainSafe(c, prev, inblock) {\n    const cIsNsCharOrWhitespace = isNsCharOrWhitespace(c);\n    const cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c);\n    return (\n      // ns-plain-safe\n      (inblock ? cIsNsCharOrWhitespace : cIsNsCharOrWhitespace && // - c-flow-indicator\n      c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET) && // ns-plain-char\n      c !== CHAR_SHARP && // false on '#'\n      !(prev === CHAR_COLON && !cIsNsChar) || // false on ': '\n      isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP || // change to true on '[^ ]#'\n      prev === CHAR_COLON && cIsNsChar\n    );\n  }\n  function isPlainSafeFirst(c) {\n    return isPrintable(c) && c !== CHAR_BOM && !isWhitespace(c) && // - s-white\n    // - (c-indicator ::=\n    // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n    c !== CHAR_MINUS && c !== CHAR_QUESTION && c !== CHAR_COLON && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET && // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “\"”\n    c !== CHAR_SHARP && c !== CHAR_AMPERSAND && c !== CHAR_ASTERISK && c !== CHAR_EXCLAMATION && c !== CHAR_VERTICAL_LINE && c !== CHAR_EQUALS && c !== CHAR_GREATER_THAN && c !== CHAR_SINGLE_QUOTE && c !== CHAR_DOUBLE_QUOTE && // | “%” | “@” | “`”)\n    c !== CHAR_PERCENT && c !== CHAR_COMMERCIAL_AT && c !== CHAR_GRAVE_ACCENT;\n  }\n  function isPlainSafeLast(c) {\n    return !isWhitespace(c) && c !== CHAR_COLON;\n  }\n  function codePointAt(string, pos) {\n    const first = string.charCodeAt(pos);\n    let second;\n    if (first >= 55296 && first <= 56319 && pos + 1 < string.length) {\n      second = string.charCodeAt(pos + 1);\n      if (second >= 56320 && second <= 57343) {\n        return (first - 55296) * 1024 + second - 56320 + 65536;\n      }\n    }\n    return first;\n  }\n  function needIndentIndicator(string) {\n    const leadingSpaceRe = /^\\n* /;\n    return leadingSpaceRe.test(string);\n  }\n  const STYLE_PLAIN = 1;\n  const STYLE_SINGLE = 2;\n  const STYLE_LITERAL = 3;\n  const STYLE_FOLDED = 4;\n  const STYLE_DOUBLE = 5;\n  function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType, quotingType, forceQuotes, inblock) {\n    let i;\n    let char = 0;\n    let prevChar = null;\n    let hasLineBreak = false;\n    let hasFoldableLine = false;\n    const shouldTrackWidth = lineWidth !== -1;\n    let previousLineBreak = -1;\n    let plain = isPlainSafeFirst(codePointAt(string, 0)) && isPlainSafeLast(codePointAt(string, string.length - 1));\n    if (singleLineOnly || forceQuotes) {\n      for (i = 0; i < string.length; char >= 65536 ? i += 2 : i++) {\n        char = codePointAt(string, i);\n        if (!isPrintable(char)) {\n          return STYLE_DOUBLE;\n        }\n        plain = plain && isPlainSafe(char, prevChar, inblock);\n        prevChar = char;\n      }\n    } else {\n      for (i = 0; i < string.length; char >= 65536 ? i += 2 : i++) {\n        char = codePointAt(string, i);\n        if (char === CHAR_LINE_FEED) {\n          hasLineBreak = true;\n          if (shouldTrackWidth) {\n            hasFoldableLine = hasFoldableLine || // Foldable line = too long, and not more-indented.\n            i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== \" \";\n            previousLineBreak = i;\n          }\n        } else if (!isPrintable(char)) {\n          return STYLE_DOUBLE;\n        }\n        plain = plain && isPlainSafe(char, prevChar, inblock);\n        prevChar = char;\n      }\n      hasFoldableLine = hasFoldableLine || shouldTrackWidth && (i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== \" \");\n    }\n    if (!hasLineBreak && !hasFoldableLine) {\n      if (plain && !forceQuotes && !testAmbiguousType(string)) {\n        return STYLE_PLAIN;\n      }\n      return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n    }\n    if (indentPerLevel > 9 && needIndentIndicator(string)) {\n      return STYLE_DOUBLE;\n    }\n    if (!forceQuotes) {\n      return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n    }\n    return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n  }\n  function writeScalar(state, string, level, iskey, inblock) {\n    state.dump = (function() {\n      if (string.length === 0) {\n        return state.quotingType === QUOTING_TYPE_DOUBLE ? '\"\"' : \"''\";\n      }\n      if (!state.noCompatMode) {\n        if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) {\n          return state.quotingType === QUOTING_TYPE_DOUBLE ? '\"' + string + '\"' : \"'\" + string + \"'\";\n        }\n      }\n      const indent = state.indent * Math.max(1, level);\n      const lineWidth = state.lineWidth === -1 ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n      const singleLineOnly = iskey || // No block styles in flow mode.\n      state.flowLevel > -1 && level >= state.flowLevel;\n      function testAmbiguity(string2) {\n        return testImplicitResolving(state, string2);\n      }\n      switch (chooseScalarStyle(\n        string,\n        singleLineOnly,\n        state.indent,\n        lineWidth,\n        testAmbiguity,\n        state.quotingType,\n        state.forceQuotes && !iskey,\n        inblock\n      )) {\n        case STYLE_PLAIN:\n          return string;\n        case STYLE_SINGLE:\n          return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n        case STYLE_LITERAL:\n          return \"|\" + blockHeader(string, state.indent) + dropEndingNewline(indentString(string, indent));\n        case STYLE_FOLDED:\n          return \">\" + blockHeader(string, state.indent) + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n        case STYLE_DOUBLE:\n          return '\"' + escapeString(string) + '\"';\n        default:\n          throw new YAMLException2(\"impossible error: invalid scalar style\");\n      }\n    })();\n  }\n  function blockHeader(string, indentPerLevel) {\n    const indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : \"\";\n    const clip = string[string.length - 1] === \"\\n\";\n    const keep = clip && (string[string.length - 2] === \"\\n\" || string === \"\\n\");\n    const chomp = keep ? \"+\" : clip ? \"\" : \"-\";\n    return indentIndicator + chomp + \"\\n\";\n  }\n  function dropEndingNewline(string) {\n    return string[string.length - 1] === \"\\n\" ? string.slice(0, -1) : string;\n  }\n  function foldString(string, width) {\n    const lineRe = /(\\n+)([^\\n]*)/g;\n    let result = (function() {\n      let nextLF = string.indexOf(\"\\n\");\n      nextLF = nextLF !== -1 ? nextLF : string.length;\n      lineRe.lastIndex = nextLF;\n      return foldLine(string.slice(0, nextLF), width);\n    })();\n    let prevMoreIndented = string[0] === \"\\n\" || string[0] === \" \";\n    let moreIndented;\n    let match;\n    while (match = lineRe.exec(string)) {\n      const prefix = match[1];\n      const line = match[2];\n      moreIndented = line[0] === \" \";\n      result += prefix + (!prevMoreIndented && !moreIndented && line !== \"\" ? \"\\n\" : \"\") + foldLine(line, width);\n      prevMoreIndented = moreIndented;\n    }\n    return result;\n  }\n  function foldLine(line, width) {\n    if (line === \"\" || line[0] === \" \") return line;\n    const breakRe = / [^ ]/g;\n    let match;\n    let start = 0;\n    let end;\n    let curr = 0;\n    let next = 0;\n    let result = \"\";\n    while (match = breakRe.exec(line)) {\n      next = match.index;\n      if (next - start > width) {\n        end = curr > start ? curr : next;\n        result += \"\\n\" + line.slice(start, end);\n        start = end + 1;\n      }\n      curr = next;\n    }\n    result += \"\\n\";\n    if (line.length - start > width && curr > start) {\n      result += line.slice(start, curr) + \"\\n\" + line.slice(curr + 1);\n    } else {\n      result += line.slice(start);\n    }\n    return result.slice(1);\n  }\n  function escapeString(string) {\n    let result = \"\";\n    let char = 0;\n    for (let i = 0; i < string.length; char >= 65536 ? i += 2 : i++) {\n      char = codePointAt(string, i);\n      const escapeSeq = ESCAPE_SEQUENCES[char];\n      if (!escapeSeq && isPrintable(char)) {\n        result += string[i];\n        if (char >= 65536) result += string[i + 1];\n      } else {\n        result += escapeSeq || encodeHex(char);\n      }\n    }\n    return result;\n  }\n  function writeFlowSequence(state, level, object) {\n    let _result = \"\";\n    const _tag = state.tag;\n    for (let index = 0, length = object.length; index < length; index += 1) {\n      let value = object[index];\n      if (state.replacer) {\n        value = state.replacer.call(object, String(index), value);\n      }\n      if (writeNode(state, level, value, false, false) || typeof value === \"undefined\" && writeNode(state, level, null, false, false)) {\n        if (_result !== \"\") _result += \",\" + (!state.condenseFlow ? \" \" : \"\");\n        _result += state.dump;\n      }\n    }\n    state.tag = _tag;\n    state.dump = \"[\" + _result + \"]\";\n  }\n  function writeBlockSequence(state, level, object, compact) {\n    let _result = \"\";\n    const _tag = state.tag;\n    for (let index = 0, length = object.length; index < length; index += 1) {\n      let value = object[index];\n      if (state.replacer) {\n        value = state.replacer.call(object, String(index), value);\n      }\n      if (writeNode(state, level + 1, value, true, true, false, true) || typeof value === \"undefined\" && writeNode(state, level + 1, null, true, true, false, true)) {\n        if (!compact || _result !== \"\") {\n          _result += generateNextLine(state, level);\n        }\n        if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n          _result += \"-\";\n        } else {\n          _result += \"- \";\n        }\n        _result += state.dump;\n      }\n    }\n    state.tag = _tag;\n    state.dump = _result || \"[]\";\n  }\n  function writeFlowMapping(state, level, object) {\n    let _result = \"\";\n    const _tag = state.tag;\n    const objectKeyList = Object.keys(object);\n    for (let index = 0, length = objectKeyList.length; index < length; index += 1) {\n      let pairBuffer = \"\";\n      if (_result !== \"\") pairBuffer += \", \";\n      if (state.condenseFlow) pairBuffer += '\"';\n      const objectKey = objectKeyList[index];\n      let objectValue = object[objectKey];\n      if (state.replacer) {\n        objectValue = state.replacer.call(object, objectKey, objectValue);\n      }\n      if (!writeNode(state, level, objectKey, false, false)) {\n        continue;\n      }\n      if (state.dump.length > 1024) pairBuffer += \"? \";\n      pairBuffer += state.dump + (state.condenseFlow ? '\"' : \"\") + \":\" + (state.condenseFlow ? \"\" : \" \");\n      if (!writeNode(state, level, objectValue, false, false)) {\n        continue;\n      }\n      pairBuffer += state.dump;\n      _result += pairBuffer;\n    }\n    state.tag = _tag;\n    state.dump = \"{\" + _result + \"}\";\n  }\n  function writeBlockMapping(state, level, object, compact) {\n    let _result = \"\";\n    const _tag = state.tag;\n    const objectKeyList = Object.keys(object);\n    if (state.sortKeys === true) {\n      objectKeyList.sort();\n    } else if (typeof state.sortKeys === \"function\") {\n      objectKeyList.sort(state.sortKeys);\n    } else if (state.sortKeys) {\n      throw new YAMLException2(\"sortKeys must be a boolean or a function\");\n    }\n    for (let index = 0, length = objectKeyList.length; index < length; index += 1) {\n      let pairBuffer = \"\";\n      if (!compact || _result !== \"\") {\n        pairBuffer += generateNextLine(state, level);\n      }\n      const objectKey = objectKeyList[index];\n      let objectValue = object[objectKey];\n      if (state.replacer) {\n        objectValue = state.replacer.call(object, objectKey, objectValue);\n      }\n      if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n        continue;\n      }\n      const explicitPair = state.tag !== null && state.tag !== \"?\" || state.dump && state.dump.length > 1024;\n      if (explicitPair) {\n        if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n          pairBuffer += \"?\";\n        } else {\n          pairBuffer += \"? \";\n        }\n      }\n      pairBuffer += state.dump;\n      if (explicitPair) {\n        pairBuffer += generateNextLine(state, level);\n      }\n      if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n        continue;\n      }\n      if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n        pairBuffer += \":\";\n      } else {\n        pairBuffer += \": \";\n      }\n      pairBuffer += state.dump;\n      _result += pairBuffer;\n    }\n    state.tag = _tag;\n    state.dump = _result || \"{}\";\n  }\n  function detectType(state, object, explicit) {\n    const typeList = explicit ? state.explicitTypes : state.implicitTypes;\n    for (let index = 0, length = typeList.length; index < length; index += 1) {\n      const type2 = typeList[index];\n      if ((type2.instanceOf || type2.predicate) && (!type2.instanceOf || typeof object === \"object\" && object instanceof type2.instanceOf) && (!type2.predicate || type2.predicate(object))) {\n        if (explicit) {\n          if (type2.multi && type2.representName) {\n            state.tag = type2.representName(object);\n          } else {\n            state.tag = type2.tag;\n          }\n        } else {\n          state.tag = \"?\";\n        }\n        if (type2.represent) {\n          const style = state.styleMap[type2.tag] || type2.defaultStyle;\n          let _result;\n          if (_toString.call(type2.represent) === \"[object Function]\") {\n            _result = type2.represent(object, style);\n          } else if (_hasOwnProperty.call(type2.represent, style)) {\n            _result = type2.represent[style](object, style);\n          } else {\n            throw new YAMLException2(\"!<\" + type2.tag + '> tag resolver accepts not \"' + style + '\" style');\n          }\n          state.dump = _result;\n        }\n        return true;\n      }\n    }\n    return false;\n  }\n  function writeNode(state, level, object, block, compact, iskey, isblockseq) {\n    state.tag = null;\n    state.dump = object;\n    if (!detectType(state, object, false)) {\n      detectType(state, object, true);\n    }\n    const type2 = _toString.call(state.dump);\n    const inblock = block;\n    if (block) {\n      block = state.flowLevel < 0 || state.flowLevel > level;\n    }\n    const objectOrArray = type2 === \"[object Object]\" || type2 === \"[object Array]\";\n    let duplicateIndex;\n    let duplicate;\n    if (objectOrArray) {\n      duplicateIndex = state.duplicates.indexOf(object);\n      duplicate = duplicateIndex !== -1;\n    }\n    if (state.tag !== null && state.tag !== \"?\" || duplicate || state.indent !== 2 && level > 0) {\n      compact = false;\n    }\n    if (duplicate && state.usedDuplicates[duplicateIndex]) {\n      state.dump = \"*ref_\" + duplicateIndex;\n    } else {\n      if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n        state.usedDuplicates[duplicateIndex] = true;\n      }\n      if (type2 === \"[object Object]\") {\n        if (block && Object.keys(state.dump).length !== 0) {\n          writeBlockMapping(state, level, state.dump, compact);\n          if (duplicate) {\n            state.dump = \"&ref_\" + duplicateIndex + state.dump;\n          }\n        } else {\n          writeFlowMapping(state, level, state.dump);\n          if (duplicate) {\n            state.dump = \"&ref_\" + duplicateIndex + \" \" + state.dump;\n          }\n        }\n      } else if (type2 === \"[object Array]\") {\n        if (block && state.dump.length !== 0) {\n          if (state.noArrayIndent && !isblockseq && level > 0) {\n            writeBlockSequence(state, level - 1, state.dump, compact);\n          } else {\n            writeBlockSequence(state, level, state.dump, compact);\n          }\n          if (duplicate) {\n            state.dump = \"&ref_\" + duplicateIndex + state.dump;\n          }\n        } else {\n          writeFlowSequence(state, level, state.dump);\n          if (duplicate) {\n            state.dump = \"&ref_\" + duplicateIndex + \" \" + state.dump;\n          }\n        }\n      } else if (type2 === \"[object String]\") {\n        if (state.tag !== \"?\") {\n          writeScalar(state, state.dump, level, iskey, inblock);\n        }\n      } else if (type2 === \"[object Undefined]\") {\n        return false;\n      } else {\n        if (state.skipInvalid) return false;\n        throw new YAMLException2(\"unacceptable kind of an object to dump \" + type2);\n      }\n      if (state.tag !== null && state.tag !== \"?\") {\n        let tagStr = encodeURI(\n          state.tag[0] === \"!\" ? state.tag.slice(1) : state.tag\n        ).replace(/!/g, \"%21\");\n        if (state.tag[0] === \"!\") {\n          tagStr = \"!\" + tagStr;\n        } else if (tagStr.slice(0, 18) === \"tag:yaml.org,2002:\") {\n          tagStr = \"!!\" + tagStr.slice(18);\n        } else {\n          tagStr = \"!<\" + tagStr + \">\";\n        }\n        state.dump = tagStr + \" \" + state.dump;\n      }\n    }\n    return true;\n  }\n  function getDuplicateReferences(object, state) {\n    const objects = [];\n    const duplicatesIndexes = [];\n    inspectNode(object, objects, duplicatesIndexes);\n    const length = duplicatesIndexes.length;\n    for (let index = 0; index < length; index += 1) {\n      state.duplicates.push(objects[duplicatesIndexes[index]]);\n    }\n    state.usedDuplicates = new Array(length);\n  }\n  function inspectNode(object, objects, duplicatesIndexes) {\n    if (object !== null && typeof object === \"object\") {\n      const index = objects.indexOf(object);\n      if (index !== -1) {\n        if (duplicatesIndexes.indexOf(index) === -1) {\n          duplicatesIndexes.push(index);\n        }\n      } else {\n        objects.push(object);\n        if (Array.isArray(object)) {\n          for (let i = 0, length = object.length; i < length; i += 1) {\n            inspectNode(object[i], objects, duplicatesIndexes);\n          }\n        } else {\n          const objectKeyList = Object.keys(object);\n          for (let i = 0, length = objectKeyList.length; i < length; i += 1) {\n            inspectNode(object[objectKeyList[i]], objects, duplicatesIndexes);\n          }\n        }\n      }\n    }\n  }\n  function dump2(input, options) {\n    options = options || {};\n    const state = new State(options);\n    if (!state.noRefs) getDuplicateReferences(input, state);\n    let value = input;\n    if (state.replacer) {\n      value = state.replacer.call({ \"\": value }, \"\", value);\n    }\n    if (writeNode(state, 0, value, true, true)) return state.dump + \"\\n\";\n    return \"\";\n  }\n  dumper.dump = dump2;\n  return dumper;\n}\nvar hasRequiredJsYaml;\nfunction requireJsYaml() {\n  if (hasRequiredJsYaml) return jsYaml;\n  hasRequiredJsYaml = 1;\n  const loader2 = requireLoader();\n  const dumper2 = requireDumper();\n  function renamed(from, to) {\n    return function() {\n      throw new Error(\"Function yaml.\" + from + \" is removed in js-yaml 4. Use yaml.\" + to + \" instead, which is now safe by default.\");\n    };\n  }\n  jsYaml.Type = requireType();\n  jsYaml.Schema = requireSchema();\n  jsYaml.FAILSAFE_SCHEMA = requireFailsafe();\n  jsYaml.JSON_SCHEMA = requireJson();\n  jsYaml.CORE_SCHEMA = requireCore();\n  jsYaml.DEFAULT_SCHEMA = require_default();\n  jsYaml.load = loader2.load;\n  jsYaml.loadAll = loader2.loadAll;\n  jsYaml.dump = dumper2.dump;\n  jsYaml.YAMLException = requireException();\n  jsYaml.types = {\n    binary: requireBinary(),\n    float: requireFloat(),\n    map: requireMap(),\n    null: require_null(),\n    pairs: requirePairs(),\n    set: requireSet(),\n    timestamp: requireTimestamp(),\n    bool: requireBool(),\n    int: requireInt(),\n    merge: requireMerge(),\n    omap: requireOmap(),\n    seq: requireSeq(),\n    str: requireStr()\n  };\n  jsYaml.safeLoad = renamed(\"safeLoad\", \"load\");\n  jsYaml.safeLoadAll = renamed(\"safeLoadAll\", \"loadAll\");\n  jsYaml.safeDump = renamed(\"safeDump\", \"dump\");\n  return jsYaml;\n}\nvar jsYamlExports = requireJsYaml();\nconst yaml = /* @__PURE__ */ getDefaultExportFromCjs(jsYamlExports);\nconst {\n  Type,\n  Schema,\n  FAILSAFE_SCHEMA,\n  JSON_SCHEMA,\n  CORE_SCHEMA,\n  DEFAULT_SCHEMA,\n  load,\n  loadAll,\n  dump,\n  YAMLException,\n  types,\n  safeLoad,\n  safeLoadAll,\n  safeDump\n} = yaml;\nexport {\n  CORE_SCHEMA,\n  DEFAULT_SCHEMA,\n  FAILSAFE_SCHEMA,\n  JSON_SCHEMA,\n  Schema,\n  Type,\n  YAMLException,\n  yaml as default,\n  dump,\n  load,\n  loadAll,\n  safeDump,\n  safeLoad,\n  safeLoadAll,\n  types\n};\n//# sourceMappingURL=js-yaml.mjs.map\n","// ============================================================\n// Provisioning YAML generation\n// ============================================================\n\n// @ts-expect-error — js-yaml has no bundled type declarations; used only for scalar serialization\nimport yaml from 'js-yaml';\nimport type { AllowedValuesValidationRule, ConfigField, DatasourceConfigSchema } from '../schema';\n\n// Root keys already emitted in the header (name, type) or handled separately (uid).\nconst HEADER_ROOT_KEYS = new Set(['name', 'type', 'uid']);\n// Indentation for keys directly under a datasource entry (4 spaces)\n// and for keys nested under jsonData/secureJsonData (6 spaces).\nconst INDENT_FIELD = '    ';\nconst INDENT_NESTED = '      ';\n\ntype FieldBuckets = {\n  rootFields: ConfigField[];\n  jsonDataFields: ConfigField[];\n  secureJsonDataFields: ConfigField[];\n};\n\nconst ROOT_CONFIG_FIELDS = [\n  'name',\n  'type',\n  'id',\n  'uid',\n  'access',\n  'url',\n  'basicAuth',\n  'basicAuthUser',\n  'user',\n  'isDefault',\n  'database',\n  'withCredentials',\n] as const;\n\ntype YamlRenderOptions = { jsonDataKeys?: string[]; secureKeys?: string[] };\n\n/** Serialize a scalar value as a safe YAML string using js-yaml. */\nfunction yamlString(value: unknown): string {\n  if (value === null || value === undefined) {\n    return '\"\"';\n  }\n  const s = String(value);\n  if (s === '') {\n    return '\"\"';\n  }\n  return yaml.dump(s, { lineWidth: -1 }).trimEnd();\n}\n\n/** True if a secret should be emitted as a multiline (block) placeholder. */\nfunction isMultilineSecret(field: ConfigField): boolean {\n  return field.target === 'secureJsonData' && (field.ui?.multiline === true || field.ui?.component === 'textarea');\n}\n\n/** True if the field should be excluded from provisioning YAML output. */\nfunction isExcludedFromProvisioning(field: ConfigField): boolean {\n  if (field.kind === 'virtual') {\n    return true;\n  }\n  if (field.isItemField) {\n    return true;\n  }\n  // Fields tagged \"managed-by:*\" are auto-set by the wizard UI via effects.\n  // Root fields like basicAuth still need to appear in provisioning YAML\n  // because they are real storage fields. Only exclude managed jsonData fields.\n  if (field.tags?.some((t) => t.startsWith('managed-by:')) && field.target !== 'root') {\n    return true;\n  }\n  // Skip indexedPair storage — these are handled separately (e.g. httpHeaders)\n  if (field.storage?.type === 'indexedPair') {\n    return true;\n  }\n  return false;\n}\n\n/** Format a secureJsonData placeholder value. */\nfunction secretPlaceholder(field: ConfigField): string {\n  // Block scalar content must be indented deeper than its key (which sits at INDENT_NESTED).\n  if (isMultilineSecret(field)) {\n    return `|\\n${INDENT_NESTED}  xxxxxx`;\n  }\n  return 'xxxxxx';\n}\n\n/** Default YAML value for a field in template mode. */\nfunction templateValue(field: ConfigField): unknown {\n  if (field.defaultValue !== undefined) {\n    return field.defaultValue;\n  }\n  // Use first option value as a sensible default\n  if (field.ui?.options && field.ui.options.length > 0) {\n    return field.ui.options[0].value;\n  }\n  switch (field.valueType) {\n    case 'string':\n      return '';\n    case 'number':\n      return 0;\n    case 'boolean':\n      return false;\n    case 'array':\n      return [];\n    case 'object':\n    case 'map':\n      return {};\n    default:\n      return '';\n  }\n}\n\n/**\n * Format a YAML comment for a field in template mode.\n * Includes label, description, allowed values, and default.\n */\nfunction fieldComment(field: ConfigField, indent: string): string {\n  const parts: string[] = [];\n  const label = field.label ?? field.key;\n  let line = label;\n  if (field.required) {\n    line += ' (REQUIRED)';\n  }\n  if (field.description) {\n    line += ` — ${field.description}`;\n  }\n  parts.push(`${indent}# ${line}`);\n\n  const options = field.ui?.options;\n  if (options && options.length > 0) {\n    const vals = options.map((o) => String(o.value)).join(', ');\n    parts.push(`${indent}# Allowed values: ${vals}`);\n  }\n\n  const allowedValuesRule = field.validations?.find(\n    (v): v is AllowedValuesValidationRule => v.type === 'allowedValues'\n  );\n  if (allowedValuesRule && !options) {\n    const vals = allowedValuesRule.values.map((v) => String(v)).join(', ');\n    parts.push(`${indent}# Allowed values: ${vals}`);\n  }\n\n  if (field.dependsOn) {\n    parts.push(`${indent}# Only when: ${field.dependsOn}`);\n  }\n\n  return parts.join('\\n');\n}\n\n/**\n * Infer secureJsonData keys from jsonData keys.\n * For example, httpHeaderName1 → httpHeaderValue1 (Grafana's indexedPair convention).\n */\nfunction inferSecureJsonDataKeys(jsonData: Record<string, unknown> | undefined): string[] {\n  if (!jsonData) {\n    return [];\n  }\n  const keys: string[] = [];\n  for (const key of Object.keys(jsonData)) {\n    const match = key.match(/^httpHeaderName(\\d+)$/);\n    if (match) {\n      keys.push(`httpHeaderValue${match[1]}`);\n    }\n  }\n  return keys;\n}\n\n/** Retrieve a nested value for a jsonData/secureJsonData field from a flat or nested values object. */\nfunction getNestedValue(values: Record<string, unknown>, target: string, field: ConfigField): unknown {\n  const nested = values[target];\n  if (nested && typeof nested === 'object') {\n    return (nested as Record<string, unknown>)[field.key];\n  }\n  return undefined;\n}\n\n/** Sort schema fields into storage buckets, preserving schema field order. */\nfunction bucketFields(schema: DatasourceConfigSchema): FieldBuckets {\n  const rootFields: ConfigField[] = [];\n  const jsonDataFields: ConfigField[] = [];\n  const secureJsonDataFields: ConfigField[] = [];\n\n  for (const field of schema.fields) {\n    if (isExcludedFromProvisioning(field)) {\n      continue;\n    }\n    switch (field.target) {\n      case 'root':\n        rootFields.push(field);\n        break;\n      case 'jsonData':\n        jsonDataFields.push(field);\n        break;\n      case 'secureJsonData':\n        secureJsonDataFields.push(field);\n        break;\n    }\n  }\n\n  return { rootFields, jsonDataFields, secureJsonDataFields };\n}\n\n/** Push the shared provisioning header (apiVersion, datasources, name, type). */\nfunction emitHeader(lines: string[], pluginType: string, name: unknown): void {\n  lines.push('apiVersion: 1');\n  lines.push('');\n  lines.push('datasources:');\n  lines.push(`  - name: ${yamlString(name)}`);\n  lines.push(`${INDENT_FIELD}type: ${pluginType}`);\n}\n\n/** Push `key: value` as YAML lines indented under `indent`. Handles scalars, objects, and arrays. */\nfunction pushEntry(lines: string[], indent: string, key: string, val: unknown): void {\n  const dumped = yaml.dump({ [key]: val }, { indent: 2, lineWidth: -1, noRefs: true }).trimEnd();\n  for (const line of dumped.split('\\n')) {\n    lines.push(`${indent}${line}`);\n  }\n}\n\nconst configToYaml = (ds: Record<string, unknown>, options: YamlRenderOptions = {}): string => {\n  const { jsonDataKeys, secureKeys } = {\n    jsonDataKeys: Object.keys((ds.jsonData ?? {}) as Record<string, unknown>).sort(),\n    secureKeys: [\n      ...new Set([\n        ...Object.keys((ds.secureJsonData ?? {}) as Record<string, unknown>),\n        ...Object.keys((ds.secureJsonFields ?? {}) as Record<string, boolean>),\n      ]),\n    ].sort(),\n    ...options,\n  };\n  const root: Record<string, unknown> = {};\n\n  for (const key of ROOT_CONFIG_FIELDS) {\n    root[key] = ds[key] ?? '';\n  }\n\n  const jsonData = (ds.jsonData ?? {}) as Record<string, unknown>;\n  if (jsonDataKeys.length > 0) {\n    const jsonDataYaml: Record<string, unknown> = {};\n    for (const key of jsonDataKeys) {\n      jsonDataYaml[key] = jsonData[key] ?? '';\n    }\n    root.jsonData = jsonDataYaml;\n  }\n\n  if (secureKeys.length > 0) {\n    const secureJsonData: Record<string, string> = {};\n    for (const key of secureKeys) {\n      secureJsonData[key] = '********';\n    }\n    root.secureJsonData = secureJsonData;\n  }\n\n  return yaml.dump(root, { lineWidth: -1, sortKeys: false, noRefs: true }).trimEnd();\n};\n\n/**\n * Generate a Grafana provisioning YAML from a dsconfig schema and an existing datasource's\n * values (typically a Grafana API response). Emits only values that are set, omitting schema\n * defaults to keep the output minimal. Comments are off by default.\n */\nfunction exportProvisioningYaml(\n  schema: DatasourceConfigSchema,\n  values: Record<string, unknown>,\n  options?: ProvisioningYamlOptions\n): string {\n  const showComments = options?.comments ?? false;\n  const { rootFields, jsonDataFields, secureJsonDataFields } = bucketFields(schema);\n\n  const lines: string[] = [];\n  emitHeader(lines, schema.pluginType, options?.name ?? values.name ?? `my-${schema.pluginType}`);\n\n  // Emit uid so the provisioning YAML can be used for idempotent upserts.\n  if (values.uid) {\n    lines.push(`${INDENT_FIELD}uid: ${yamlString(values.uid)}`);\n  }\n\n  // Root fields (url, basicAuth, basicAuthUser, database, etc.)\n  for (const field of rootFields) {\n    if (HEADER_ROOT_KEYS.has(field.key)) {\n      continue;\n    }\n    const val = values[field.key];\n    // Skip empty values and false booleans to keep the export clean.\n    if (val === undefined || val === null || val === false) {\n      continue;\n    }\n    if (showComments) {\n      lines.push(fieldComment(field, INDENT_FIELD));\n    }\n    pushEntry(lines, INDENT_FIELD, field.key, val);\n  }\n\n  // jsonData — schema-declared values plus any extra keys present on the datasource.\n  const jsonDataValues = values.jsonData as Record<string, unknown> | undefined;\n  const hasExtraValues = !!jsonDataValues && Object.keys(jsonDataValues).length > 0;\n  if (jsonDataFields.length > 0 || hasExtraValues) {\n    lines.push(`${INDENT_FIELD}jsonData:`);\n    // Keys owned by the schema are rendered (or intentionally skipped) below; the extra-keys\n    // pass must never re-emit them, otherwise default-valued fields would leak back in.\n    const schemaKeys = new Set(jsonDataFields.map((f) => f.key));\n\n    for (const field of jsonDataFields) {\n      const val = getNestedValue(values, 'jsonData', field);\n      if (val === undefined || val === null) {\n        continue;\n      }\n      // Skip default-value fields to keep the export minimal.\n      if (field.defaultValue !== undefined && val === field.defaultValue) {\n        continue;\n      }\n      if (showComments) {\n        lines.push(fieldComment(field, INDENT_NESTED));\n      }\n      pushEntry(lines, INDENT_NESTED, field.key, val);\n    }\n\n    // Extra keys not declared in the schema (e.g. httpHeaderName1, plugin-specific keys).\n    if (jsonDataValues) {\n      for (const [key, val] of Object.entries(jsonDataValues)) {\n        if (schemaKeys.has(key) || val === undefined || val === null) {\n          continue;\n        }\n        pushEntry(lines, INDENT_NESTED, key, val);\n      }\n    }\n  }\n\n  // secureJsonData — the API reports configured secrets via `secureJsonFields: { key: true }`.\n  // Emit only those, plus inferred indexedPair values (e.g. httpHeaderValue1 for httpHeaderName1).\n  const secureJsonFields = (values.secureJsonFields ?? {}) as Record<string, boolean>;\n  const activeSecureFields = secureJsonDataFields.filter((f) => secureJsonFields[f.key] === true);\n  const inferredSecureKeys = inferSecureJsonDataKeys(jsonDataValues);\n\n  if (activeSecureFields.length > 0 || inferredSecureKeys.length > 0) {\n    lines.push(`${INDENT_FIELD}secureJsonData:`);\n    const emitted = new Set<string>();\n    for (const field of activeSecureFields) {\n      emitted.add(field.key);\n      if (showComments) {\n        lines.push(fieldComment(field, INDENT_NESTED));\n      }\n      lines.push(`${INDENT_NESTED}${field.key}: ${secretPlaceholder(field)}`);\n    }\n    for (const key of inferredSecureKeys) {\n      if (emitted.has(key)) {\n        continue;\n      }\n      lines.push(`${INDENT_NESTED}${key}: xxxxxx`);\n    }\n  }\n\n  return lines.join('\\n');\n}\n\ntype ProvisioningYamlOptions = {\n  /** Include comments with field descriptions. Default: true for template, false for export. */\n  comments?: boolean;\n  /** Override the emitted datasource name. */\n  name?: string;\n};\n\n/**\n * Generate a Grafana provisioning YAML template from a dsconfig schema.\n * Emits every schema field with sensible defaults and (by default) explanatory comments.\n */\nexport function generateProvisioningTemplate(\n  schema: DatasourceConfigSchema,\n  options?: ProvisioningYamlOptions\n): string {\n  const showComments = options?.comments ?? true;\n  const { rootFields, jsonDataFields, secureJsonDataFields } = bucketFields(schema);\n\n  const lines: string[] = [];\n  emitHeader(lines, schema.pluginType, options?.name ?? `my-${schema.pluginType}`);\n\n  // Root fields (url, basicAuth, basicAuthUser, database, etc.)\n  for (const field of rootFields) {\n    if (HEADER_ROOT_KEYS.has(field.key)) {\n      continue;\n    }\n    const val = templateValue(field);\n    if (val === undefined || val === null) {\n      continue;\n    }\n    if (showComments) {\n      lines.push(fieldComment(field, INDENT_FIELD));\n    }\n    pushEntry(lines, INDENT_FIELD, field.key, val);\n  }\n\n  // jsonData — every schema-declared field with its default value.\n  if (jsonDataFields.length > 0) {\n    lines.push(`${INDENT_FIELD}jsonData:`);\n    for (const field of jsonDataFields) {\n      const val = templateValue(field);\n      if (val === undefined || val === null) {\n        continue;\n      }\n      if (showComments) {\n        lines.push(fieldComment(field, INDENT_NESTED));\n      }\n      pushEntry(lines, INDENT_NESTED, field.key, val);\n    }\n  }\n\n  // secureJsonData — every schema-declared secret with a placeholder value.\n  if (secureJsonDataFields.length > 0) {\n    lines.push(`${INDENT_FIELD}secureJsonData:`);\n    for (const field of secureJsonDataFields) {\n      if (showComments) {\n        lines.push(fieldComment(field, INDENT_NESTED));\n      }\n      lines.push(`${INDENT_NESTED}${field.key}: ${secretPlaceholder(field)}`);\n    }\n  }\n\n  return lines.join('\\n');\n}\n\n/**\n * Generate provisioning YAML from an existing Grafana datasource API response.\n * If a dsconfig schema is available, uses it for field ordering and comments.\n * If not, generates basic YAML from the raw API response.\n */\nexport function datasourceToProvisioningYaml(\n  ds: Record<string, unknown>,\n  schema: DatasourceConfigSchema | null\n): string {\n  if (schema) {\n    return exportProvisioningYaml(schema, ds);\n  }\n\n  // No schema — generate basic YAML from the raw API response\n  const lines: string[] = [];\n  lines.push('apiVersion: 1');\n  lines.push('');\n  lines.push('datasources:');\n  lines.push(`  - name: ${yamlString(ds.name)}`);\n  if (ds.uid) {\n    lines.push(`    uid: ${yamlString(ds.uid)}`);\n  }\n  lines.push(`    type: ${yamlString(ds.type)}`);\n  if (ds.url) {\n    lines.push(`    url: ${yamlString(ds.url)}`);\n  }\n  if (ds.database) {\n    lines.push(`    database: ${yamlString(ds.database)}`);\n  }\n  if (ds.isDefault) {\n    lines.push('    isDefault: true');\n  }\n  if (ds.basicAuth) {\n    lines.push('    basicAuth: true');\n    if (ds.basicAuthUser) {\n      lines.push(`    basicAuthUser: ${yamlString(ds.basicAuthUser)}`);\n    }\n  }\n\n  const jsonData = ds.jsonData as Record<string, unknown> | undefined;\n  if (jsonData && Object.keys(jsonData).length > 0) {\n    lines.push(`${INDENT_FIELD}jsonData:`);\n    for (const [key, val] of Object.entries(jsonData)) {\n      pushEntry(lines, INDENT_NESTED, key, val);\n    }\n  }\n\n  // secureJsonData is never returned by the API — emit placeholder comment\n  lines.push('    # secureJsonData: (secrets are not exported — add manually)');\n  lines.push('    #   mySecret: xxxxxx');\n\n  return lines.join('\\n');\n}\n\nexport const formatYamlDiff = (existing: Record<string, unknown>, body: Record<string, unknown>): string => {\n  const updated = { ...existing, ...body };\n\n  const existingJD = (existing.jsonData ?? {}) as Record<string, unknown>;\n  const updatedJD = (updated.jsonData ?? {}) as Record<string, unknown>;\n  const jsonDataKeys = [...new Set([...Object.keys(existingJD), ...Object.keys(updatedJD)])].sort();\n\n  const secureKeys = [\n    ...new Set([\n      ...Object.keys((existing.secureJsonData ?? {}) as Record<string, unknown>),\n      ...Object.keys((existing.secureJsonFields ?? {}) as Record<string, boolean>),\n      ...Object.keys((updated.secureJsonData ?? {}) as Record<string, unknown>),\n      ...Object.keys((updated.secureJsonFields ?? {}) as Record<string, boolean>),\n    ]),\n  ].sort();\n\n  const currentYaml = configToYaml(existing, { jsonDataKeys, secureKeys });\n  const updatedYaml = configToYaml(updated, { jsonDataKeys, secureKeys });\n\n  const oldLines = currentYaml.split('\\n');\n  const newLines = updatedYaml.split('\\n');\n  const maxLen = Math.max(oldLines.length, newLines.length);\n  const diffLines: string[] = [];\n\n  for (let i = 0; i < maxLen; i++) {\n    const oldLine = oldLines[i];\n    const newLine = newLines[i];\n    if (oldLine === newLine) {\n      diffLines.push(` ${oldLine}`);\n      continue;\n    }\n    if (oldLine !== undefined) {\n      diffLines.push(`-${oldLine}`);\n    }\n    if (newLine !== undefined) {\n      diffLines.push(`+${newLine}`);\n    }\n  }\n\n  return '```diff\\n' + diffLines.join('\\n') + '\\n```';\n};\n","export const ROOT_CONFIG_FIELDS = [\n  'name',\n  'type',\n  'id',\n  'uid',\n  'access',\n  'url',\n  'basicAuth',\n  'basicAuthUser',\n  'user',\n  'isDefault',\n  'database',\n  'withCredentials',\n] as const;\n\ntype DatasourceConfig = Record<any, any>;\n\nexport const buildCreateDatasourcePayload = (input: DatasourceConfig): DatasourceConfig => {\n  const body: DatasourceConfig = { name: input.name, type: input.type, access: 'proxy' };\n  if (input.jsonData !== undefined) {\n    body.jsonData = { ...(input.jsonData as DatasourceConfig) };\n  }\n  normalizeDatasourceConfig(body, input, { inferAuthMethod: true });\n  return body;\n};\n\nexport const buildCloneDatasourcePayload = (source: DatasourceConfig, name: string): DatasourceConfig => {\n  return { ...source, name, access: source.access ?? 'proxy', isDefault: false };\n};\n\nexport const buildUpdateDatasourcePayload = (\n  existing: DatasourceConfig,\n  input: DatasourceConfig\n): { body: DatasourceConfig; hasChanges: boolean } => {\n  const body: DatasourceConfig = {\n    name: existing.name,\n    type: existing.type,\n    access: existing.access,\n    url: existing.url,\n    database: existing.database,\n    basicAuth: existing.basicAuth,\n    basicAuthUser: existing.basicAuthUser,\n    isDefault: existing.isDefault,\n    user: existing.user,\n    withCredentials: existing.withCredentials,\n    jsonData: existing.jsonData,\n  };\n  let hasChanges = false;\n  const UPDATE_COMPARABLE_FIELDS = ['name', 'url', 'database', 'isDefault', 'basicAuth'] as const;\n  for (const key of UPDATE_COMPARABLE_FIELDS) {\n    if (input[key] !== undefined && input[key] !== existing[key]) {\n      body[key] = input[key];\n      hasChanges = true;\n    }\n  }\n\n  if (input.jsonData !== undefined) {\n    body.jsonData = { ...((existing.jsonData ?? {}) as DatasourceConfig), ...(input.jsonData as DatasourceConfig) };\n    hasChanges = true;\n    hasChanges = normalizeDatasourceConfig(body, input) || hasChanges;\n  }\n\n  return { body, hasChanges };\n};\n\nconst normalizeDatasourceConfig = (\n  body: DatasourceConfig,\n  input: DatasourceConfig,\n  options: { inferAuthMethod?: boolean } = {}\n): boolean => {\n  const changed = hoistRootConfigFields(body, input);\n  if (options.inferAuthMethod) {\n    applyInferredAuthMethod(body, input);\n  }\n  return changed;\n};\n\nconst hoistRootConfigFields = (body: DatasourceConfig, input: DatasourceConfig): boolean => {\n  const jsonData = (body.jsonData as DatasourceConfig | undefined) ?? {};\n  let changed = false;\n\n  for (const key of ROOT_CONFIG_FIELDS) {\n    if (jsonData[key] === undefined) {\n      continue;\n    }\n\n    if (input[key] === undefined) {\n      body[key] = jsonData[key];\n      changed = true;\n    }\n\n    delete jsonData[key];\n  }\n\n  body.jsonData = jsonData;\n  return changed;\n};\n\nconst applyInferredAuthMethod = (body: DatasourceConfig, input: DatasourceConfig): void => {\n  const jsonData = (body.jsonData as DatasourceConfig | undefined) ?? {};\n\n  if (jsonData.authMethod !== undefined) {\n    body.jsonData = jsonData;\n    return;\n  }\n\n  if (jsonData.oauthPassThru === true) {\n    jsonData.authMethod = 'forward_oauth';\n  } else if (body.basicAuth === true || input.basicAuth === true) {\n    jsonData.authMethod = 'basic';\n  }\n\n  body.jsonData = jsonData;\n};\n","import { getBackendSrv } from '@grafana/runtime';\nimport type { DatasourceConfigSchema } from '../schema';\n\nconst SCHEMA_BASE_URL_FROM_PLUGIN = '/public/plugins/{pluginType}/schema/dsconfig.json';\nconst SCHEMA_BASE_URL_FROM_STATIC =\n  'https://raw.githubusercontent.com/grafana/dsconfig/schema-discovery/registry/{pluginType}/dsconfig.json';\n\nconst schemaCache = new Map<string, DatasourceConfigSchema | null>();\n\nexport async function getConfigSchema(pluginType: string): Promise<DatasourceConfigSchema | null> {\n  const cached = schemaCache.get(pluginType);\n  if (cached !== undefined) {\n    return cached;\n  }\n  let schema: DatasourceConfigSchema | null;\n  try {\n    schema = await getBackendSrv().get<DatasourceConfigSchema>(\n      SCHEMA_BASE_URL_FROM_PLUGIN.replaceAll('{pluginType}', pluginType)\n    );\n    schemaCache.set(pluginType, schema);\n  } catch {\n    try {\n      let res = await fetch(SCHEMA_BASE_URL_FROM_STATIC.replaceAll('{pluginType}', pluginType));\n      schema = (await res.json()) as DatasourceConfigSchema;\n      schemaCache.set(pluginType, schema);\n    } catch {\n      console.warn(`no schema available for ${pluginType}`);\n      schema = {} as DatasourceConfigSchema;\n    }\n  }\n  return schema;\n}\n","import React from 'react';\nimport { TextInput, NumberInput, BooleanInput, TextAreaInput, SelectInput, RadioInput } from './PrimitiveInputs';\nimport { SecureInput } from './SecureFieldInput';\nimport { StringArrayField } from './StringArrayInput';\nimport { IndexedPairInput } from './IndexedPairEditor';\nimport { FileUploadInput } from './FileUploadField';\nimport { ObjectArrayInput } from './ObjectArrayEditor';\nimport { ComplexInput } from './ComplexFieldNote';\nimport { type ConfigField } from './../../../../schema';\nimport { type FieldInputProps } from './types';\n\nexport type FieldInputKind =\n  | 'fileUpload'\n  | 'secure'\n  | 'radio'\n  | 'select'\n  | 'boolean'\n  | 'number'\n  | 'textarea'\n  | 'indexedPair'\n  | 'stringArray'\n  | 'objectArray'\n  | 'complex'\n  | 'text';\n\nconst INPUT_KIND_RULES: ReadonlyArray<{\n  kind: FieldInputKind;\n  matches: (field: ConfigField, hasSetValue: boolean) => boolean;\n}> = [\n  {\n    kind: 'fileUpload',\n    matches: (f, hasSetValue) => f.ui?.component === 'fileUpload' && !!f.ui.fileMapping && hasSetValue,\n  },\n  {\n    kind: 'secure',\n    matches: (f) => f.target === 'secureJsonData',\n  },\n  {\n    kind: 'radio',\n    matches: (f) => f.ui?.component === 'radio',\n  },\n  {\n    kind: 'select',\n    matches: (f) => f.ui?.component === 'select',\n  },\n  {\n    kind: 'boolean',\n    matches: (f) => f.valueType === 'boolean',\n  },\n  {\n    kind: 'number',\n    matches: (f) => f.valueType === 'number',\n  },\n  {\n    kind: 'textarea',\n    matches: (f) => f.ui?.component === 'textarea',\n  },\n  {\n    kind: 'indexedPair',\n    matches: (f) => f.storage?.type === 'indexedPair',\n  },\n  {\n    kind: 'stringArray',\n    matches: (f) => f.valueType === 'array' && f.item?.valueType === 'string',\n  },\n  {\n    kind: 'objectArray',\n    matches: (f) => f.valueType === 'array' && f.item?.valueType === 'object' && !!f.item.fields?.length,\n  },\n  {\n    kind: 'complex',\n    matches: (f) =>\n      f.valueType === 'object' ||\n      f.valueType === 'map' ||\n      (f.valueType === 'array' && (f.item?.valueType === 'object' || f.item?.valueType === 'map')),\n  },\n  {\n    kind: 'text',\n    matches: () => true,\n  },\n];\n\nexport function resolveFieldInputKind(field: ConfigField, hasSetValue: boolean): FieldInputKind {\n  return INPUT_KIND_RULES.find((rule) => rule.matches(field, hasSetValue))!.kind;\n}\n\n/** Registry mapping each resolved kind to its renderer. */\nconst FIELD_INPUTS: Record<FieldInputKind, React.ComponentType<FieldInputProps>> = {\n  fileUpload: FileUploadInput,\n  secure: SecureInput,\n  radio: RadioInput,\n  select: SelectInput,\n  boolean: BooleanInput,\n  number: NumberInput,\n  textarea: TextAreaInput,\n  indexedPair: IndexedPairInput,\n  stringArray: StringArrayField,\n  objectArray: ObjectArrayInput,\n  complex: ComplexInput,\n  text: TextInput,\n};\n\n/**\n * Render the appropriate input for a schema field.\n *\n * Replaces the former `renderFieldInput` switch with a resolver + component\n * registry: each input is an independently testable component, and adding a\n * new input means extending the registry rather than editing a growing\n * conditional.\n */\nexport function FieldInput(props: FieldInputProps) {\n  const kind = resolveFieldInputKind(props.field, props.setValue !== undefined);\n  const Component = FIELD_INPUTS[kind];\n  return <Component {...props} />;\n}\n","import { css } from '@emotion/css';\nimport type { GrafanaTheme2 } from '@grafana/data';\n\n/** Centered saving/loading overlay. Identical in tab and wizard layouts. */\nconst overlayStyle = (theme: GrafanaTheme2) =>\n  ({\n    position: 'absolute',\n    inset: 0,\n    display: 'flex',\n    alignItems: 'center',\n    justifyContent: 'center',\n    gap: theme.spacing(1),\n    background: theme.colors.background.secondary,\n    borderRadius: theme.shape.radius.default,\n    zIndex: 1,\n    fontSize: theme.typography.bodySmall.fontSize,\n    color: theme.colors.text.primary,\n    opacity: 0.95,\n  }) as const;\n\n/** \"Read-only — managed externally\" banner. Tab layout adds a marginBottom. */\nconst readOnlyBannerStyle = (theme: GrafanaTheme2) =>\n  ({\n    display: 'inline-flex',\n    alignItems: 'center',\n    gap: theme.spacing(0.5),\n    padding: `${theme.spacing(0.25)} ${theme.spacing(0.75)}`,\n    fontSize: theme.typography.bodySmall.fontSize,\n    color: theme.colors.text.secondary,\n    backgroundColor: theme.colors.background.secondary,\n    borderRadius: theme.shape.radius.default,\n    border: `1px solid ${theme.colors.border.weak}`,\n  }) as const;\n\nexport const getWizardStyles = (theme: GrafanaTheme2) => ({\n  container: css({\n    position: 'relative',\n    display: 'flex',\n    flexDirection: 'column',\n    gap: theme.spacing(1),\n    padding: theme.spacing(1.5),\n    backgroundColor: theme.colors.background.secondary,\n    borderRadius: theme.shape.radius.default,\n    border: `1px solid ${theme.colors.border.weak}`,\n    overflow: 'hidden',\n  }),\n  overlay: css(overlayStyle(theme)),\n  readOnlyBanner: css(readOnlyBannerStyle(theme)),\n  navBar: css({\n    display: 'flex',\n    alignItems: 'center',\n    justifyContent: 'space-between',\n  }),\n  navTitle: css({\n    display: 'inline-flex',\n    alignItems: 'center',\n    gap: theme.spacing(0.5),\n    fontSize: theme.typography.body.fontSize,\n    fontWeight: theme.typography.fontWeightBold,\n    color: theme.colors.text.primary,\n  }),\n  stepCount: css({\n    fontSize: theme.typography.bodySmall.fontSize,\n    fontWeight: theme.typography.fontWeightRegular,\n    color: theme.colors.text.secondary,\n  }),\n  navActions: css({\n    display: 'flex',\n    alignItems: 'center',\n    gap: theme.spacing(0.25),\n  }),\n  form: css({\n    display: 'flex',\n    flexDirection: 'column',\n    gap: theme.spacing(0.75),\n  }),\n  buttons: css({\n    display: 'flex',\n    gap: theme.spacing(1),\n    paddingTop: theme.spacing(0.25),\n  }),\n});\n\n// Field-level styles shared by SchemaField and AuthorizationHeaderField, which\n// render in both the tab and wizard layouts (hence not tied to either one).\nexport const getFieldStyles = (theme: GrafanaTheme2) => ({\n  fieldRow: css({\n    display: 'grid',\n    gridTemplateColumns: 'minmax(80px, 1fr) minmax(0, 2fr)',\n    gap: theme.spacing(0.75),\n    alignItems: 'start',\n  }),\n  fieldRowCenter: css({\n    display: 'grid',\n    gridTemplateColumns: 'minmax(80px, 1fr) minmax(0, 2fr)',\n    gap: theme.spacing(0.75),\n    alignItems: 'center',\n    padding: `${theme.spacing(0.5)} 0`,\n  }),\n  fieldLabelRow: css({\n    display: 'flex',\n    alignItems: 'center',\n    gap: theme.spacing(0.5),\n    paddingTop: theme.spacing(0.5),\n  }),\n  fieldLabelRowCompact: css({\n    display: 'flex',\n    alignItems: 'center',\n    gap: theme.spacing(0.5),\n  }),\n  fieldLabel: css({\n    fontSize: theme.typography.bodySmall.fontSize,\n    fontWeight: theme.typography.fontWeightMedium,\n    color: theme.colors.text.primary,\n  }),\n  fieldRequired: css({\n    color: theme.colors.error.text,\n    marginLeft: 2,\n  }),\n  fieldInfoIcon: css({\n    color: theme.colors.text.disabled,\n    cursor: 'help',\n    flexShrink: 0,\n  }),\n  fieldInputCol: css({\n    display: 'flex',\n    flexDirection: 'column',\n    gap: theme.spacing(0.25),\n    minWidth: 0,\n  }),\n  fieldError: css({\n    fontSize: theme.typography.bodySmall.fontSize,\n    color: theme.colors.error.text,\n  }),\n});\n","import React from 'react';\nimport { type useForm, Controller } from 'react-hook-form';\nimport { useStyles2, Icon, Tooltip } from '@grafana/ui';\nimport { resolveActiveOverride, formKey } from './config';\nimport { isFieldRequired, buildValidationRules, parseItemErrors } from './inputs/fieldUtils';\nimport { FieldInput } from './inputs/FieldInput';\nimport { getFieldStyles } from './styles';\nimport type { FormValues } from './datasource';\nimport type { ConfigField } from '../../../schema/schema';\n\nexport type SchemaFieldProps = {\n  field: ConfigField;\n  control: ReturnType<typeof useForm<FormValues>>['control'];\n  errors: ReturnType<typeof useForm<FormValues>>['formState']['errors'];\n  disabled?: boolean;\n  dsUid: string;\n  watchedValues: Record<string, unknown>;\n  fieldById: Map<string, ConfigField>;\n  celContext?: Record<string, unknown>;\n  setValue?: (name: string, value: unknown) => void;\n};\n\nexport function SchemaField({\n  field,\n  control,\n  errors,\n  disabled,\n  watchedValues,\n  fieldById,\n  celContext,\n  setValue,\n}: SchemaFieldProps) {\n  const styles = useStyles2(getFieldStyles);\n\n  const activeOverride = resolveActiveOverride(field, watchedValues, fieldById);\n  const fk = formKey(field);\n\n  const required = isFieldRequired(field, watchedValues, fieldById, celContext);\n  const validationRules = buildValidationRules(field, required);\n\n  return (\n    <Controller\n      name={fk}\n      control={control}\n      rules={validationRules}\n      render={({ field: formField }) => {\n        const errorMessage = errors[fk]?.message as string | undefined;\n        const label = field.label ?? field.key;\n        const description = activeOverride?.description ?? field.description;\n        const effectiveField = activeOverride\n          ? {\n              ...field,\n              description,\n              ui: {\n                ...field.ui,\n                placeholder: activeOverride.placeholder ?? field.ui?.placeholder,\n              } as ConfigField['ui'],\n            }\n          : field;\n        const isReadOnly = !!activeOverride?.readOnly;\n        const isBool = field.valueType === 'boolean';\n\n        return (\n          <div className={isBool ? styles.fieldRowCenter : styles.fieldRow}>\n            <div className={isBool ? styles.fieldLabelRowCompact : styles.fieldLabelRow}>\n              <span className={styles.fieldLabel}>\n                {label}\n                {required && <span className={styles.fieldRequired}>*</span>}\n              </span>\n              {description && (\n                <Tooltip content={description}>\n                  <Icon name=\"info-circle\" size=\"xs\" className={styles.fieldInfoIcon} />\n                </Tooltip>\n              )}\n            </div>\n            <div className={styles.fieldInputCol}>\n              <FieldInput\n                field={effectiveField}\n                formField={formField}\n                disabled={disabled || isReadOnly}\n                errorMessage={errorMessage}\n                setValue={setValue}\n              />\n              {/* Show global error only if it's NOT a per-item error (those render inline) */}\n              {errorMessage && !parseItemErrors(errorMessage) && (\n                <span className={styles.fieldError}>{errorMessage}</span>\n              )}\n            </div>\n          </div>\n        );\n      }}\n    />\n  );\n}\n","import React, { useMemo } from 'react';\nimport { type useForm, Controller, useWatch } from 'react-hook-form';\nimport { useStyles2, Icon, Tooltip } from '@grafana/ui';\nimport { IndexedPairEditor } from './IndexedPairEditor';\nimport { getFieldStyles } from '../styles';\nimport { type IndexedPairItem, type FormValues } from '../datasource';\n\ntype Props = {\n  headersFieldKey: string;\n  control: ReturnType<typeof useForm<FormValues>>['control'];\n  disabled?: boolean;\n};\n\nexport const AuthorizationHeaderField = (props: Props) => {\n  const { headersFieldKey, control, disabled } = props;\n  const styles = useStyles2(getFieldStyles);\n  // Subscribe to just this field rather than receiving the whole watched-values\n  // blob; keeps the component self-contained and consistent with RHF idioms.\n  const watchedHeaders = useWatch({ control, name: headersFieldKey });\n  const items = useMemo(\n    () => (Array.isArray(watchedHeaders) ? watchedHeaders : []) as IndexedPairItem[],\n    [watchedHeaders]\n  );\n\n  const authEntries = useMemo(() => {\n    const entries: Array<{ item: IndexedPairItem; originalIdx: number }> = [];\n    for (let i = 0; i < items.length; i++) {\n      if (items[i].name.toLowerCase() === 'authorization') {\n        entries.push({ item: items[i], originalIdx: i });\n      }\n    }\n    return entries;\n  }, [items]);\n\n  if (authEntries.length === 0) {\n    return null;\n  }\n\n  const authItems = authEntries.map((e) => e.item);\n\n  return (\n    <Controller\n      name={headersFieldKey}\n      control={control}\n      render={({ field: formField }) => {\n        const handleChange = (updatedAuthItems: IndexedPairItem[]) => {\n          const updated = [...items];\n          for (let i = 0; i < authEntries.length; i++) {\n            if (i < updatedAuthItems.length) {\n              updated[authEntries[i].originalIdx] = updatedAuthItems[i];\n            }\n          }\n          formField.onChange(updated);\n        };\n\n        return (\n          <div className={styles.fieldRow}>\n            <div className={styles.fieldLabelRow}>\n              <span className={styles.fieldLabel}>Custom HTTP Headers</span>\n              <Tooltip content=\"Authorization HTTP header(s) sent with every request.\">\n                <Icon name=\"info-circle\" size=\"xs\" className={styles.fieldInfoIcon} />\n              </Tooltip>\n            </div>\n            <div className={styles.fieldInputCol}>\n              <IndexedPairEditor value={authItems} onChange={handleChange} disabled={disabled} hideControls />\n            </div>\n          </div>\n        );\n      }}\n    />\n  );\n};\n","import React, { type ReactNode } from 'react';\nimport { Alert, Button, LinkButton } from '@grafana/ui';\nimport type { DatasourceConfigSchema } from '../../../schema/schema';\nimport { formKey, type ResolvedGroup } from './config';\nimport type { useDatasourceConfigForm } from './hooks/useDatasourceConfigForm';\nimport { SchemaField } from './SchemaField';\nimport { AuthorizationHeaderField } from './inputs/AuthorizationHeaderField';\n\ntype ConfigForm = ReturnType<typeof useDatasourceConfigForm>;\n\ntype RenderActions = (props: { dsUid: string; dsName: string; dsType: string; healthError?: string }) => ReactNode;\n\n/**\n * Renders the visible fields of a single group plus the optional Authorization\n * header editor. Shared by both the tab and wizard layouts so the field-render\n * contract lives in exactly one place.\n *\n * `showAuthHeaders` is passed in (rather than derived here) because the two\n * layouts intentionally use different predicates for when to show it.\n */\nexport function GroupFields({\n  group,\n  form,\n  dsUid,\n  showAuthHeaders,\n}: {\n  group: ResolvedGroup;\n  form: ConfigForm;\n  dsUid: string;\n  showAuthHeaders: boolean;\n}) {\n  const {\n    control,\n    errors,\n    watchedValues,\n    fieldById,\n    celContext,\n    setValue,\n    isFieldVisible,\n    isFieldDisabled,\n    httpHeadersField,\n    submitting,\n    readOnly,\n  } = form;\n  const allDisabled = submitting || readOnly;\n\n  return (\n    <>\n      {group.fields.filter(isFieldVisible).map((field) => (\n        <SchemaField\n          key={formKey(field)}\n          field={field}\n          control={control}\n          errors={errors}\n          disabled={allDisabled || isFieldDisabled(field)}\n          dsUid={dsUid}\n          watchedValues={watchedValues}\n          fieldById={fieldById}\n          celContext={celContext}\n          setValue={setValue}\n        />\n      ))}\n\n      {showAuthHeaders && httpHeadersField && (\n        <AuthorizationHeaderField\n          headersFieldKey={formKey(httpHeadersField)}\n          control={control}\n          disabled={allDisabled}\n        />\n      )}\n    </>\n  );\n}\n\n/**\n * Submit-error alert plus the Save/Test action row. `saveDisabled` and\n * `className` differ per layout (the wizard also gates on step validity and\n * uses its own button container).\n */\nexport function FormFooter({\n  form,\n  schema,\n  dsUid,\n  dsName,\n  onRetest,\n  healthError,\n  renderActions,\n  saveDisabled,\n  className,\n}: {\n  form: ConfigForm;\n  schema: DatasourceConfigSchema;\n  dsUid: string;\n  dsName: string;\n  onRetest?: () => void;\n  healthError?: string;\n  renderActions?: RenderActions;\n  saveDisabled: boolean;\n  className: string;\n}) {\n  const { readOnly, submitting, submitError } = form;\n\n  return (\n    <>\n      {submitError && (\n        <Alert severity=\"error\" title=\"Error\">\n          {submitError}\n        </Alert>\n      )}\n\n      <div className={className}>\n        {readOnly ? (\n          <Button variant=\"primary\" size=\"sm\" icon=\"sync\" onClick={onRetest} type=\"button\">\n            Test\n          </Button>\n        ) : (\n          <Button variant=\"primary\" size=\"sm\" disabled={saveDisabled} type=\"submit\">\n            {submitting ? 'Saving…' : 'Save & Test'}\n          </Button>\n        )}\n        {healthError && renderActions?.({ dsUid, dsName, dsType: schema.pluginType, healthError })}\n      </div>\n    </>\n  );\n}\n\n/**\n * \"Failed to load configuration\" state with a link to the native datasource\n * settings page. The outer container class differs per layout, so callers wrap\n * this; `buttonClassName` styles the link row.\n */\nexport function FetchErrorState({\n  error,\n  dsUid,\n  buttonClassName,\n}: {\n  error: string;\n  dsUid: string;\n  buttonClassName: string;\n}) {\n  return (\n    <>\n      <Alert severity=\"error\" title=\"Failed to load configuration\">\n        {error}\n      </Alert>\n      <div className={buttonClassName}>\n        <LinkButton\n          variant=\"secondary\"\n          size=\"sm\"\n          icon=\"external-link-alt\"\n          href={`/connections/datasources/edit/${dsUid}`}\n        >\n          Open datasource settings\n        </LinkButton>\n      </div>\n    </>\n  );\n}\n","/**\n * Pure \"interpreter\" helpers for the datasource config form.\n *\n * These derive UI state (CEL context, field visibility/disabled, group\n * validity/data) purely from a schema snapshot + current form values, with no\n * React or form-library dependency. `useDatasourceConfigForm` wires them into\n * memoized callbacks; keeping them pure makes the logic independently testable.\n */\n\nimport type { ConfigField } from '../../../../schema/schema';\nimport { formKey, getWatchedValue, type ResolvedGroup } from '../config';\nimport { extractFieldRefs, evaluateCelExpression } from '../cel';\nimport { isFieldRequired } from '../inputs/fieldUtils';\nimport { SECURE_FIELD_CONFIGURED } from '../datasource';\n\n/**\n * Build a CEL-compatible nested context from flat watched values + field ID mappings.\n * Field IDs like \"jsonData.auth_method\" become { jsonData: { auth_method: value } }.\n */\nexport function buildFieldCelContext(\n  fieldById: Map<string, ConfigField>,\n  watchedValues: Record<string, unknown>\n): Record<string, unknown> {\n  const ctx: Record<string, unknown> = {};\n  for (const f of fieldById.values()) {\n    const fk = formKey(f);\n    const val = getWatchedValue(watchedValues, fk);\n    if (val !== undefined) {\n      // Set by field ID path (e.g. \"jsonData.oauth2.oauth2_type\")\n      const parts = f.id.split('.');\n      let current = ctx as Record<string, unknown>;\n      for (let i = 0; i < parts.length - 1; i++) {\n        if (!(parts[i] in current) || typeof current[parts[i]] !== 'object' || current[parts[i]] === null) {\n          current[parts[i]] = {};\n        }\n        current = current[parts[i]] as Record<string, unknown>;\n      }\n      current[parts[parts.length - 1]] = val;\n    }\n  }\n  return ctx;\n}\n\n/**\n * Whether a field should be shown. Hidden when it's a virtual field without UI,\n * managed by an effect, or its (transitive) `dependsOn` chain evaluates falsy.\n */\nexport function isFieldVisible(\n  field: ConfigField,\n  fieldById: Map<string, ConfigField>,\n  celContext: Record<string, unknown>\n): boolean {\n  // Inner recursive helper with a visited set to guard against circular deps.\n  function check(f: ConfigField, visited: Set<string>): boolean {\n    if (f.kind === 'virtual' && !f.ui) {\n      return false;\n    }\n    if (f.tags?.some((t) => t.startsWith('managed-by:'))) {\n      return false;\n    }\n    if (!f.dependsOn) {\n      return true;\n    }\n\n    // Transitive visibility: all referenced dependency fields must themselves be visible.\n    const refs = extractFieldRefs(f.dependsOn);\n    for (const ref of refs) {\n      const depField = fieldById.get(ref);\n      if (depField && !visited.has(depField.id)) {\n        visited.add(f.id);\n        if (!check(depField, visited)) {\n          return false;\n        }\n      }\n    }\n\n    // Evaluate the full CEL expression\n    return evaluateCelExpression(f.dependsOn, celContext);\n  }\n  return check(field, new Set<string>());\n}\n\n/** Whether a field is currently disabled via its `disabledWhen` CEL expression. */\nexport function isFieldDisabled(field: ConfigField, celContext: Record<string, unknown>): boolean {\n  if (!field.disabledWhen) {\n    return false;\n  }\n  return evaluateCelExpression(field.disabledWhen, celContext);\n}\n\n/** Check whether all visible required fields in a group have a value (and no errors). */\nexport function isGroupValid(\n  group: ResolvedGroup,\n  args: {\n    watchedValues: Record<string, unknown>;\n    fieldById: Map<string, ConfigField>;\n    celContext: Record<string, unknown>;\n    errors: Record<string, unknown>;\n    isVisible: (field: ConfigField) => boolean;\n  }\n): boolean {\n  const { watchedValues, fieldById, celContext, errors, isVisible } = args;\n  for (const field of group.fields) {\n    if (!isVisible(field)) {\n      continue;\n    }\n    if (errors[formKey(field)]) {\n      return false;\n    }\n    if (isFieldRequired(field, watchedValues, fieldById, celContext)) {\n      const val = getWatchedValue(watchedValues, formKey(field));\n      if (val === SECURE_FIELD_CONFIGURED) {\n        continue;\n      }\n      if (val === undefined || val === null || val === '') {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\n/** Whether a group has any field with a non-default, non-empty value. */\nexport function groupHasData(group: ResolvedGroup, watchedValues: Record<string, unknown>): boolean {\n  for (const field of group.fields) {\n    const val = getWatchedValue(watchedValues, formKey(field));\n    if (val === undefined || val === null || val === '' || val === false) {\n      continue;\n    }\n    if (val === field.defaultValue) {\n      continue;\n    }\n    return true;\n  }\n  return false;\n}\n","import { config, reportInteraction } from '@grafana/runtime';\n\nexport const trackConfigWizardSectionChange = (config_section = 'default', plugin_id = 'unknown') => {\n  reportInteraction('grafana_dsconfig_section_visited', {\n    config_section,\n    plugin_id,\n    grafana_version: config.buildInfo.version,\n  });\n};\n\ntype trackConfigWizardSubmitEventProps = { success?: boolean };\n\nexport const trackConfigWizardSubmitEvent = (props: trackConfigWizardSubmitEventProps) => {\n  reportInteraction('grafana_dsconfig_submitted', {\n    ...props,\n    grafana_version: config.buildInfo.version,\n  });\n};\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport type { ConfigField, DatasourceConfigSchema } from '../../../../schema/schema';\nimport {\n  resolveGroups,\n  resolveRequiredFieldsGroup,\n  parseDependsOn,\n  evaluateDependsOn,\n  computeVirtualFieldValues,\n  formKey,\n  getWatchedValue,\n  type ResolvedGroup,\n} from '../config';\nimport { fetchExistingValues, submitDatasourceConfig, type FormValues } from '../datasource';\nimport { evaluateEffectCondition } from '../inputs/fieldUtils';\nimport {\n  buildFieldCelContext,\n  isFieldVisible as isFieldVisibleImpl,\n  isFieldDisabled as isFieldDisabledImpl,\n  isGroupValid as isGroupValidImpl,\n  groupHasData as groupHasDataImpl,\n} from './formInterpreter';\nimport { trackConfigWizardSubmitEvent } from '../tracking';\n\nexport type DatasourceConfigFormOptions = {\n  schema: DatasourceConfigSchema;\n  dsUid: string;\n  onSuccess: (status: string, message?: string) => void;\n  onSaving?: (saving: boolean) => void;\n};\n\nexport function useDatasourceConfigForm(props: DatasourceConfigFormOptions) {\n  const { schema, dsUid, onSuccess, onSaving } = props;\n  const [submitting, setSubmitting] = useState(false);\n  const [submitError, setSubmitError] = useState<string | null>(null);\n  const [initializing, setInitializing] = useState(true);\n  const [fetchError, setFetchError] = useState<string | null>(null);\n  const [detectedReadOnly, setDetectedReadOnly] = useState(false);\n  const readOnly = detectedReadOnly;\n\n  const resolvedGroups: ResolvedGroup[] = useMemo(() => {\n    const groups = resolveGroups(schema);\n    const requiredGroup = resolveRequiredFieldsGroup(schema);\n    if (!requiredGroup) {\n      return groups;\n    }\n    return [requiredGroup, ...groups];\n  }, [schema]);\n\n  const fieldById = useMemo(() => {\n    const m = new Map<string, ConfigField>();\n    for (const f of schema.fields) {\n      m.set(f.id, f);\n    }\n    return m;\n  }, [schema.fields]);\n\n  const httpHeadersField = useMemo(\n    () => schema.fields.find((f) => f.key === 'httpHeaders' && f.storage?.type === 'indexedPair') ?? null,\n    [schema.fields]\n  );\n\n  const allStorageFields = useMemo(\n    () => schema.fields.filter((f) => f.kind !== 'virtual' && !f.isItemField && f.target),\n    [schema.fields]\n  );\n\n  const {\n    control,\n    handleSubmit,\n    watch,\n    reset,\n    trigger,\n    setValue,\n    formState: { errors },\n  } = useForm<FormValues>({ mode: 'onChange' });\n\n  const fieldsWithEffects = useMemo(() => {\n    const result: Array<{\n      sourceKey: string;\n      effects: Array<{ when: string; targets: Array<{ key: string; value: unknown }> }>;\n    }> = [];\n    for (const field of schema.fields) {\n      if (!field.effects || field.effects.length === 0) {\n        continue;\n      }\n      const mapped = field.effects.map((eff) => ({\n        when: eff.when,\n        targets: Object.entries(eff.set).map(([targetId, val]) => {\n          const targetField = fieldById.get(targetId);\n          return { key: targetField ? formKey(targetField) : targetId, value: val };\n        }),\n      }));\n      result.push({ sourceKey: formKey(field), effects: mapped });\n    }\n    return result;\n  }, [schema.fields, fieldById]);\n\n  // Load existing values on mount\n  useEffect(() => {\n    let cancelled = false;\n    fetchExistingValues(dsUid, allStorageFields).then((result) => {\n      if (cancelled) {\n        return;\n      }\n      if (result.error) {\n        setFetchError(result.error);\n        setInitializing(false);\n        return;\n      }\n      if (result.readOnly) {\n        setDetectedReadOnly(true);\n      }\n      const defaults: FormValues = {};\n      for (const field of allStorageFields) {\n        if (field.defaultValue !== undefined) {\n          defaults[formKey(field)] = field.defaultValue;\n        }\n      }\n      const merged = { ...defaults, ...result.values };\n      const virtualValues = computeVirtualFieldValues(schema, merged);\n      reset({ ...merged, ...virtualValues });\n      setInitializing(false);\n    });\n    return () => {\n      cancelled = true;\n    };\n  }, [dsUid, allStorageFields, schema, reset]);\n\n  const watchedValues = watch();\n\n  // Apply field effects\n  const prevEffectValuesRef = useRef<Record<string, unknown>>({});\n  useEffect(() => {\n    if (initializing) {\n      return;\n    }\n    for (const { sourceKey, effects } of fieldsWithEffects) {\n      const currentVal = getWatchedValue(watchedValues, sourceKey);\n      const prevVal = prevEffectValuesRef.current[sourceKey];\n      if (currentVal === prevVal) {\n        continue;\n      }\n      prevEffectValuesRef.current[sourceKey] = currentVal;\n      for (const eff of effects) {\n        if (evaluateEffectCondition(eff.when, currentVal)) {\n          for (const { key, value } of eff.targets) {\n            setValue(key, value);\n          }\n          break;\n        }\n      }\n    }\n  }, [watchedValues, fieldsWithEffects, initializing, setValue]);\n\n  // Override defaults\n  const fieldsWithOverrideDefaults = useMemo(() => {\n    const result: Array<{\n      targetKey: string;\n      fieldDefault: unknown;\n      overrides: Array<{ depKey: string; depValue: string; negate: boolean; defaultValue: unknown }>;\n    }> = [];\n    for (const field of schema.fields) {\n      if (!field.overrides || field.overrides.length === 0) {\n        continue;\n      }\n      const ovs = field.overrides\n        .filter((ov) => ov.defaultValue !== undefined)\n        .map((ov) => {\n          const parsed = parseDependsOn(ov.when);\n          if (!parsed) {\n            return null;\n          }\n          const depField = fieldById.get(parsed.field);\n          return {\n            depKey: depField ? formKey(depField) : parsed.field,\n            depValue: parsed.value,\n            negate: parsed.negate,\n            defaultValue: ov.defaultValue,\n          };\n        })\n        .filter(Boolean) as Array<{ depKey: string; depValue: string; negate: boolean; defaultValue: unknown }>;\n      if (ovs.length > 0) {\n        result.push({ targetKey: formKey(field), fieldDefault: field.defaultValue, overrides: ovs });\n      }\n    }\n    return result;\n  }, [schema.fields, fieldById]);\n\n  const prevOverrideDepRef = useRef<Record<string, string>>({});\n  useEffect(() => {\n    if (initializing) {\n      return;\n    }\n    for (const { targetKey, fieldDefault, overrides } of fieldsWithOverrideDefaults) {\n      for (const ov of overrides) {\n        const currentDepVal = String(getWatchedValue(watchedValues, ov.depKey) ?? '');\n        const trackKey = `${targetKey}::${ov.depKey}`;\n        const prevDepVal = prevOverrideDepRef.current[trackKey];\n        if (currentDepVal === prevDepVal) {\n          continue;\n        }\n        prevOverrideDepRef.current[trackKey] = currentDepVal;\n        const active = evaluateDependsOn({ value: ov.depValue, negate: ov.negate }, currentDepVal);\n        const wasActive =\n          prevDepVal !== undefined && evaluateDependsOn({ value: ov.depValue, negate: ov.negate }, prevDepVal);\n        if (active) {\n          setValue(targetKey, ov.defaultValue);\n        } else if (wasActive && fieldDefault !== undefined) {\n          setValue(targetKey, fieldDefault);\n        }\n      }\n    }\n  }, [watchedValues, fieldsWithOverrideDefaults, initializing, setValue]);\n\n  // Build a CEL-compatible nested context from flat watched values + field ID mappings.\n  const celContext = useMemo(() => buildFieldCelContext(fieldById, watchedValues), [watchedValues, fieldById]);\n\n  const isFieldVisible = useCallback(\n    (field: ConfigField): boolean => isFieldVisibleImpl(field, fieldById, celContext),\n    [celContext, fieldById]\n  );\n\n  const onSubmit = useCallback(\n    async (data: FormValues) => {\n      setSubmitting(true);\n      setSubmitError(null);\n      onSaving?.(true);\n      // just introduced 2 second delay to add a visual hue. Can be removed if nor required.\n      const minDelay = new Promise((r) => setTimeout(r, 2000));\n      try {\n        await submitDatasourceConfig(dsUid, data, allStorageFields, isFieldVisible);\n        const [refreshed] = await Promise.all([fetchExistingValues(dsUid, allStorageFields), minDelay]);\n        const defaults: FormValues = {};\n        for (const field of allStorageFields) {\n          if (field.defaultValue !== undefined) {\n            defaults[formKey(field)] = field.defaultValue;\n          }\n        }\n        const merged = { ...defaults, ...refreshed.values };\n        const virtualValues = computeVirtualFieldValues(schema, merged);\n        reset({ ...merged, ...virtualValues });\n        trackConfigWizardSubmitEvent({ success: true });\n        onSuccess('UPDATED', 'Configuration saved.');\n      } catch (err: unknown) {\n        trackConfigWizardSubmitEvent({ success: false });\n        await minDelay;\n        setSubmitError(err instanceof Error ? err.message : 'Failed to update datasource');\n      } finally {\n        setSubmitting(false);\n        onSaving?.(false);\n      }\n    },\n    [dsUid, allStorageFields, isFieldVisible, schema, reset, onSuccess, onSaving]\n  );\n\n  const isGroupValid = useCallback(\n    (group: ResolvedGroup): boolean =>\n      isGroupValidImpl(group, {\n        watchedValues,\n        fieldById,\n        celContext,\n        errors: errors as Record<string, unknown>,\n        isVisible: isFieldVisible,\n      }),\n    [errors, watchedValues, fieldById, celContext, isFieldVisible]\n  );\n\n  const isFieldDisabled = useCallback(\n    (field: ConfigField): boolean => isFieldDisabledImpl(field, celContext),\n    [celContext]\n  );\n\n  const groupHasData = useCallback(\n    (group: ResolvedGroup): boolean => groupHasDataImpl(group, watchedValues),\n    [watchedValues]\n  );\n\n  return {\n    // Schema\n    resolvedGroups,\n    fieldById,\n    httpHeadersField,\n    // Form\n    control,\n    handleSubmit,\n    trigger,\n    errors,\n    watchedValues,\n    celContext,\n    // State\n    initializing,\n    fetchError,\n    submitting,\n    submitError,\n    readOnly,\n    // Callbacks\n    isFieldVisible,\n    isFieldDisabled,\n    isGroupValid,\n    groupHasData,\n    onSubmit,\n    setValue,\n  };\n}\n","import React, { type ReactNode, useMemo, useState } from 'react';\nimport { useStyles2, Button, Select, Icon, Tooltip, Spinner } from '@grafana/ui';\nimport { isAuthGroupId } from './config';\nimport { GroupFields, FormFooter, FetchErrorState } from './layoutParts';\nimport { getWizardStyles } from './styles';\nimport { type DatasourceConfigSchema } from '../../../schema/schema';\nimport { type useDatasourceConfigForm } from './hooks/useDatasourceConfigForm';\nimport { trackConfigWizardSectionChange } from './tracking';\n\ntype WizardLayoutProps = {\n  form: ReturnType<typeof useDatasourceConfigForm>;\n  schema: DatasourceConfigSchema;\n  dsUid: string;\n  dsName: string;\n  onRetest?: () => void;\n  healthError?: string;\n  renderActions?: (props: { dsUid: string; dsName: string; dsType: string; healthError?: string }) => ReactNode;\n};\n\nexport function WizardLayout({ form, schema, dsUid, dsName, onRetest, healthError, renderActions }: WizardLayoutProps) {\n  const styles = useStyles2(getWizardStyles);\n  const [currentStep, setCurrentStep] = useState(0);\n  const { resolvedGroups, handleSubmit, initializing, fetchError, submitting, readOnly, isGroupValid, onSubmit } = form;\n  const canSave = useMemo(() => resolvedGroups.every(isGroupValid), [resolvedGroups, isGroupValid]);\n\n  if (initializing) {\n    return (\n      <div className={styles.container}>\n        <Spinner size=\"sm\" inline /> Loading configuration...\n      </div>\n    );\n  }\n\n  if (fetchError) {\n    return (\n      <div className={styles.container}>\n        <FetchErrorState error={fetchError} dsUid={dsUid} buttonClassName={styles.buttons} />\n      </div>\n    );\n  }\n\n  if (resolvedGroups.length === 0) {\n    return <></>;\n  }\n\n  const currentResolved = resolvedGroups[currentStep];\n  const currentGroup = currentResolved?.group;\n  const isFirstStep = currentStep === 0;\n  const isLastStep = currentStep === resolvedGroups.length - 1;\n\n  return (\n    <div className={styles.container}>\n      {submitting && (\n        <div className={styles.overlay}>\n          <Spinner size=\"sm\" />\n          <span>Saving & testing…</span>\n        </div>\n      )}\n      {readOnly && (\n        <div className={styles.readOnlyBanner}>\n          <Icon name=\"lock\" size=\"xs\" />\n          <span>Read-only — managed externally</span>\n        </div>\n      )}\n      <div className={styles.navBar}>\n        {currentGroup && (\n          <Tooltip content={currentGroup.description ?? currentGroup.title}>\n            <span className={styles.navTitle}>\n              {currentGroup.title}\n              <span className={styles.stepCount}>\n                {currentStep + 1}/{resolvedGroups.length}\n              </span>\n            </span>\n          </Tooltip>\n        )}\n        <div className={styles.navActions}>\n          <Tooltip content={isFirstStep ? 'First step' : `Previous: ${resolvedGroups[currentStep - 1]?.group.title}`}>\n            <Button\n              variant=\"secondary\"\n              fill=\"text\"\n              size=\"sm\"\n              icon=\"angle-left\"\n              aria-label=\"Previous\"\n              onClick={() => setCurrentStep(currentStep - 1)}\n              disabled={isFirstStep || submitting}\n              type=\"button\"\n            />\n          </Tooltip>\n          <Select\n            options={resolvedGroups.map((g, i) => ({ label: g.group.title, value: i }))}\n            value={currentStep}\n            onChange={(v) => {\n              if (v?.value != null) {\n                trackConfigWizardSectionChange(v.label || v.title);\n                setCurrentStep(v.value);\n              }\n            }}\n            disabled={submitting}\n            width={18}\n          />\n          <Tooltip content={isLastStep ? 'Last step' : `Next: ${resolvedGroups[currentStep + 1]?.group.title}`}>\n            <Button\n              variant={isLastStep ? 'secondary' : 'primary'}\n              size=\"sm\"\n              icon=\"angle-right\"\n              aria-label=\"Next\"\n              onClick={() => setCurrentStep(currentStep + 1)}\n              disabled={isLastStep || submitting}\n              type=\"button\"\n            />\n          </Tooltip>\n        </div>\n      </div>\n\n      {currentResolved && (\n        <form onSubmit={handleSubmit(onSubmit)} className={styles.form}>\n          <GroupFields\n            group={currentResolved}\n            form={form}\n            dsUid={dsUid}\n            showAuthHeaders={currentResolved.group.id === '_required' || isAuthGroupId(currentResolved.group.id)}\n          />\n          <FormFooter\n            form={form}\n            schema={schema}\n            dsUid={dsUid}\n            dsName={dsName}\n            onRetest={onRetest}\n            healthError={healthError}\n            renderActions={renderActions}\n            saveDisabled={submitting || !canSave}\n            className={styles.buttons}\n          />\n        </form>\n      )}\n    </div>\n  );\n}\n","import React, { type ReactNode } from 'react';\nimport { WizardLayout } from './WizardLayout';\nimport { useDatasourceConfigForm } from './hooks/useDatasourceConfigForm';\nimport type { DatasourceConfigSchema } from '../../../schema/schema';\n\nexport type DatasourceConfigWizardProps = {\n  schema: DatasourceConfigSchema;\n  dsUid: string;\n  dsName: string;\n  onSuccess: (status: string, message?: string) => void;\n  onSaving?: (saving: boolean) => void;\n  onRetest?: () => void;\n  onFollowup?: (intent: string) => void;\n  healthError?: string;\n  /** Optional render prop for custom action buttons (e.g. analyze/troubleshoot). */\n  renderActions?: (props: { dsUid: string; dsName: string; dsType: string; healthError?: string }) => ReactNode;\n};\n\nexport function DatasourceConfigWizard(props: DatasourceConfigWizardProps) {\n  const { schema, dsUid, dsName, onSuccess, onSaving, onRetest, healthError, renderActions } = props;\n  const form = useDatasourceConfigForm({ schema, dsUid, onSuccess, onSaving });\n  return (\n    <WizardLayout\n      form={form}\n      schema={schema}\n      dsUid={dsUid}\n      dsName={dsName}\n      onRetest={onRetest}\n      healthError={healthError}\n      renderActions={renderActions}\n    />\n  );\n}\n","import React, { Component, type ReactNode, type ErrorInfo } from 'react';\nimport { Alert } from '@grafana/ui';\n\n/** Lightweight error boundary scoped to datasource config widgets — won't crash the host UI. */\nexport class DatasourceErrorBoundary extends Component<\n  { children: ReactNode; dsName?: string },\n  { error: Error | null }\n> {\n  state: { error: Error | null } = { error: null };\n\n  static getDerivedStateFromError(error: Error) {\n    return { error };\n  }\n\n  componentDidCatch(error: Error, info: ErrorInfo) {\n    console.error('[DatasourceConfigWizard] Caught error:', error, info.componentStack);\n  }\n\n  render() {\n    if (this.state.error) {\n      return (\n        <Alert severity=\"warning\" title=\"Configuration wizard unavailable\">\n          Could not load the configuration wizard\n          {this.props.dsName ? ` for ${this.props.dsName}` : ''}. Use the Settings link to configure this datasource\n          manually.\n        </Alert>\n      );\n    }\n    return this.props.children;\n  }\n}\n","import { useCallback, useRef, useState } from 'react';\nimport { getBackendSrv } from '@grafana/runtime';\nimport type { TestDataSourceResponse } from '@grafana/data';\n\nconst MAX_CONCURRENCY = 5;\n\nexport type HealthState = 'pending' | 'checking' | 'done';\n\nexport interface DatasourceHealth {\n  state: HealthState;\n  status?: string;\n  message?: string;\n}\n\n/**\n * Health check hook — on-demand only.\n * Call `checkUids(uids)` to trigger checks for specific UIDs.\n * Call `retry(uid)` to force re-check a single UID.\n * UIDs that have already been checked (or are in-flight) are automatically skipped.\n */\nexport function useHealthChecks() {\n  const [healthMap, setHealthMap] = useState<Record<string, DatasourceHealth>>({});\n  const queueRef = useRef<string[]>([]);\n  const activeRef = useRef(0);\n  const mountedRef = useRef(true);\n  // Permanent set of UIDs that have ever been queued — prevents re-checking on re-render.\n  // Only `retry()` removes from this set to allow explicit re-check.\n  const everQueuedRef = useRef(new Set<string>());\n\n  const checkOne = useCallback(async (uid: string) => {\n    if (!mountedRef.current) {\n      return;\n    }\n    setHealthMap((prev) => ({ ...prev, [uid]: { state: 'checking' } }));\n\n    try {\n      const result: TestDataSourceResponse = await getBackendSrv().get(\n        `/api/datasources/uid/${uid}/health`,\n        undefined,\n        undefined,\n        { showErrorAlert: false }\n      );\n      if (!mountedRef.current) {\n        return;\n      }\n      setHealthMap((prev) => ({\n        ...prev,\n        [uid]: { state: 'done', status: result.status ?? 'OK', message: result.message },\n      }));\n    } catch (error: unknown) {\n      if (!mountedRef.current) {\n        return;\n      }\n      let status = 'ERROR';\n      let message = '';\n      if (error && typeof error === 'object' && 'data' in error) {\n        const data = (error as { data?: { status?: string; message?: string } }).data;\n        if (data?.status) {\n          status = data.status;\n        }\n        if (data?.message) {\n          message = data.message;\n        }\n      }\n      if (!message) {\n        message = error instanceof Error ? error.message : String(error);\n      }\n      setHealthMap((prev) => ({\n        ...prev,\n        [uid]: { state: 'done', status, message },\n      }));\n    }\n  }, []);\n\n  const processQueue = useCallback(() => {\n    while (activeRef.current < MAX_CONCURRENCY && queueRef.current.length > 0) {\n      const uid = queueRef.current.shift()!;\n      activeRef.current++;\n      checkOne(uid).finally(() => {\n        activeRef.current--;\n        processQueue();\n      });\n    }\n  }, [checkOne]);\n\n  /**\n   * Queue health checks for a batch of UIDs.\n   * Skips UIDs that have ever been queued before (idempotent — safe to call repeatedly).\n   */\n  const checkUids = useCallback(\n    (uids: string[]) => {\n      const toCheck: string[] = [];\n      for (const uid of uids) {\n        if (everQueuedRef.current.has(uid)) {\n          continue;\n        }\n        everQueuedRef.current.add(uid);\n        toCheck.push(uid);\n      }\n      if (toCheck.length === 0) {\n        return;\n      }\n      setHealthMap((prev) => {\n        const next = { ...prev };\n        for (const uid of toCheck) {\n          next[uid] = { state: 'pending' };\n        }\n        return next;\n      });\n      queueRef.current.push(...toCheck);\n      processQueue();\n    },\n    [processQueue]\n  );\n\n  /**\n   * Force re-check a single UID (e.g. after wizard save).\n   * Clears the \"ever queued\" flag so checkUids won't block it.\n   */\n  const retry = useCallback(\n    (uid: string) => {\n      // Remove from everQueued so it can be re-queued\n      everQueuedRef.current.delete(uid);\n      // Re-add immediately\n      everQueuedRef.current.add(uid);\n      setHealthMap((prev) => ({ ...prev, [uid]: { state: 'pending' } }));\n      queueRef.current.push(uid);\n      processQueue();\n    },\n    [processQueue]\n  );\n\n  return { healthMap, checkUids, retry };\n}\n","import { getDataSourceSrv } from '@grafana/runtime';\n\nlet pluginNameCache: Map<string, string> | null = null;\n\nfunction buildPluginNameCache(): Map<string, string> {\n  if (pluginNameCache) {\n    return pluginNameCache;\n  }\n  const map = new Map<string, string>();\n  try {\n    const list = getDataSourceSrv().getList();\n    for (const ds of list) {\n      if (ds.meta?.name && ds.type && !map.has(ds.type)) {\n        map.set(ds.type, ds.meta.name);\n      }\n    }\n  } catch (ex) {\n    console.error(ex);\n  }\n  pluginNameCache = map;\n  return map;\n}\n\nexport function resolvePluginName(pluginType: string): string {\n  const cache = buildPluginNameCache();\n  return cache.get(pluginType) ?? pluginType;\n}\n","import { useEffect, useState } from 'react';\nimport { getConfigSchema } from '../../../../schema/utils/registry';\nimport type { DatasourceConfigSchema } from '../../../../schema/schema';\n\ntype UseDatasourceSchemaResult = { schema: DatasourceConfigSchema | null; loading: boolean; error: string | null };\n\nexport function useDatasourceSchema(pluginType: string): UseDatasourceSchemaResult {\n  const [schema, setSchema] = useState<DatasourceConfigSchema | null>(null);\n  const [loading, setLoading] = useState<boolean>(false);\n  const [error, setError] = useState<string | null>(null);\n\n  useEffect(() => {\n    let cancelled = false;\n    setLoading(true);\n    setError(null);\n    fetchConfigSchema(pluginType)\n      .then((result) => {\n        if (!cancelled) {\n          setSchema(result);\n        }\n      })\n      .catch((err) => {\n        if (!cancelled) {\n          setError(err instanceof Error ? err.message : String(err));\n        }\n      })\n      .finally(() => {\n        if (!cancelled) {\n          setLoading(false);\n        }\n      });\n    return () => {\n      cancelled = true;\n    };\n  }, [pluginType]);\n\n  return { schema, loading, error };\n}\n\nexport function fetchConfigSchema(pluginType: string): Promise<DatasourceConfigSchema | null> {\n  if (!pluginType) {\n    return Promise.resolve(null);\n  }\n  return getConfigSchema(pluginType);\n}\n","import React, { PureComponent } from 'react';\nimport { css } from '@emotion/css';\nimport { uniqueId } from 'lodash';\nimport { type DataSourceSettings } from '@grafana/data';\nimport { stylesFactory, LegacyForms, Button, Icon } from '@grafana/ui';\n\nexport interface CustomHeader {\n  id: string;\n  name: string;\n  value: string;\n  configured: boolean;\n}\n\nexport type CustomHeaders = CustomHeader[];\n\nexport interface Props {\n  dataSourceConfig: DataSourceSettings<any, any>;\n  onChange: (config: DataSourceSettings) => void;\n}\n\nexport interface State {\n  headers: CustomHeaders;\n}\n\ninterface CustomHeaderRowProps {\n  header: CustomHeader;\n  onReset: (id: string) => void;\n  onRemove: (id: string) => void;\n  onChange: (value: CustomHeader) => void;\n  onBlur: () => void;\n}\n\nconst getCustomHeaderRowStyles = stylesFactory(() => {\n  return {\n    layout: css`\n      display: flex;\n      align-items: center;\n      margin-bottom: 4px;\n      > * {\n        margin-left: 4px;\n        margin-bottom: 0;\n        height: 100%;\n        &:first-child,\n        &:last-child {\n          margin-left: 0;\n        }\n      }\n    `,\n  };\n});\n\nconst CustomHeaderRow = ({ header, onBlur, onChange, onRemove, onReset }: CustomHeaderRowProps) => {\n  const styles = getCustomHeaderRowStyles();\n  return (\n    <div className={styles.layout}>\n      <LegacyForms.FormField\n        label=\"Header\"\n        name=\"name\"\n        placeholder=\"X-Custom-Header\"\n        labelWidth={5}\n        value={header.name || ''}\n        onChange={(e) => onChange({ ...header, name: e.target.value })}\n        onBlur={onBlur}\n      />\n      <LegacyForms.SecretFormField\n        label=\"Value\"\n        aria-label=\"Value\"\n        name=\"value\"\n        isConfigured={header.configured}\n        value={header.value}\n        labelWidth={5}\n        inputWidth={header.configured ? 11 : 12}\n        placeholder=\"Header Value\"\n        onReset={() => onReset(header.id)}\n        onChange={(e) => onChange({ ...header, value: e.target.value })}\n        onBlur={onBlur}\n      />\n      <Button\n        type=\"button\"\n        aria-label=\"Remove header\"\n        variant=\"secondary\"\n        size=\"xs\"\n        onClick={(_e) => onRemove(header.id)}\n      >\n        <Icon name=\"trash-alt\" />\n      </Button>\n    </div>\n  );\n};\n\nCustomHeaderRow.displayName = 'CustomHeaderRow';\n\nexport class CustomHeadersSettings extends PureComponent<Props, State> {\n  state: State = {\n    headers: [],\n  };\n\n  constructor(props: Props) {\n    super(props);\n    const { jsonData, secureJsonData, secureJsonFields } = this.props.dataSourceConfig;\n    this.state = {\n      headers: Object.keys(jsonData)\n        .sort()\n        .filter((key) => key.startsWith('httpHeaderName'))\n        .map((key, index) => {\n          return {\n            id: uniqueId(),\n            name: jsonData[key],\n            value: secureJsonData !== undefined ? secureJsonData[key] : '',\n            configured: (secureJsonFields && secureJsonFields[`httpHeaderValue${index + 1}`]) || false,\n          };\n        }),\n    };\n  }\n\n  updateSettings = () => {\n    const { headers } = this.state;\n\n    // we remove every httpHeaderName* field\n    const newJsonData = Object.fromEntries(\n      Object.entries(this.props.dataSourceConfig.jsonData).filter(([key, val]) => !key.startsWith('httpHeaderName'))\n    );\n\n    // we remove every httpHeaderValue* field\n    const newSecureJsonData = Object.fromEntries(\n      Object.entries(this.props.dataSourceConfig.secureJsonData || {}).filter(\n        ([key, val]) => !key.startsWith('httpHeaderValue')\n      )\n    );\n\n    // then we add the current httpHeader-fields\n    for (const [index, header] of headers.entries()) {\n      newJsonData[`httpHeaderName${index + 1}`] = header.name;\n      if (!header.configured) {\n        newSecureJsonData[`httpHeaderValue${index + 1}`] = header.value;\n      }\n    }\n\n    this.props.onChange({\n      ...this.props.dataSourceConfig,\n      jsonData: newJsonData,\n      secureJsonData: newSecureJsonData,\n    });\n  };\n\n  onHeaderAdd = () => {\n    this.setState((prevState) => {\n      return {\n        headers: [...prevState.headers, { id: uniqueId(), name: '', value: '', configured: false }],\n      };\n    });\n  };\n\n  onHeaderChange = (headerIndex: number, value: CustomHeader) => {\n    this.setState(({ headers }) => {\n      return {\n        headers: headers.map((item, index) => {\n          if (headerIndex !== index) {\n            return item;\n          }\n          return { ...value };\n        }),\n      };\n    });\n  };\n\n  onHeaderReset = (headerId: string) => {\n    this.setState(({ headers }) => {\n      return {\n        headers: headers.map((h, i) => {\n          if (h.id !== headerId) {\n            return h;\n          }\n          return {\n            ...h,\n            value: '',\n            configured: false,\n          };\n        }),\n      };\n    });\n  };\n\n  onHeaderRemove = (headerId: string) => {\n    this.setState(\n      ({ headers }) => ({\n        headers: headers.filter((h) => h.id !== headerId),\n      }),\n      this.updateSettings\n    );\n  };\n\n  render() {\n    const { headers } = this.state;\n    return (\n      <div className={'gf-form-group'}>\n        <div className=\"gf-form\">\n          <h6>Custom HTTP Headers</h6>\n        </div>\n        <div>\n          {headers.map((header, i) => (\n            <CustomHeaderRow\n              key={header.id}\n              header={header}\n              onChange={(h) => {\n                this.onHeaderChange(i, h);\n              }}\n              onBlur={this.updateSettings}\n              onRemove={this.onHeaderRemove}\n              onReset={this.onHeaderReset}\n            />\n          ))}\n        </div>\n        <div className=\"gf-form\">\n          <Button\n            variant=\"secondary\"\n            icon=\"plus\"\n            type=\"button\"\n            onClick={(e) => {\n              this.onHeaderAdd();\n            }}\n          >\n            Add header\n          </Button>\n        </div>\n      </div>\n    );\n  }\n}\n\nexport default CustomHeadersSettings;\n","import { type FunctionComponent } from 'react';\n\nimport { type DataSourceApi, type RegistryItem, type SelectableValue, type TimeRange } from '@grafana/data';\n\nexport interface QueryBuilderLabelFilter {\n  label: string;\n  op: string;\n  value: string;\n}\n\nexport interface QueryBuilderOperation {\n  id: string;\n  params: QueryBuilderOperationParamValue[];\n  disabled?: boolean;\n}\n\nexport interface QueryBuilderOperationDefinition<T = any> extends RegistryItem {\n  documentation?: string;\n  params: QueryBuilderOperationParamDef[];\n  defaultParams: QueryBuilderOperationParamValue[];\n  category: string;\n  hideFromList?: boolean;\n  alternativesKey?: string;\n  /** Can be used to control operation placement when adding a new operations, lower are placed first */\n  orderRank?: number;\n  renderer: QueryBuilderOperationRenderer;\n  addOperationHandler: QueryBuilderAddOperationHandler<T>;\n  paramChangedHandler?: QueryBuilderOnParamChangedHandler;\n  explainHandler?: QueryBuilderExplainOperationHandler;\n  changeTypeHandler?: (op: QueryBuilderOperation, newDef: QueryBuilderOperationDefinition<T>) => QueryBuilderOperation;\n  toggleable?: boolean;\n}\n\ntype QueryBuilderAddOperationHandler<T> = (\n  def: QueryBuilderOperationDefinition,\n  query: T,\n  modeller: VisualQueryModeller\n) => T;\n\ntype QueryBuilderExplainOperationHandler = (op: QueryBuilderOperation, def?: QueryBuilderOperationDefinition) => string;\n\ntype QueryBuilderOnParamChangedHandler = (\n  index: number,\n  operation: QueryBuilderOperation,\n  operationDef: QueryBuilderOperationDefinition\n) => QueryBuilderOperation;\n\ntype QueryBuilderOperationRenderer = (\n  model: QueryBuilderOperation,\n  def: QueryBuilderOperationDefinition,\n  innerQuery: string\n) => string;\n\nexport type QueryBuilderOperationParamValue = string | number | boolean;\n\nexport interface QueryBuilderOperationParamDef {\n  name: string;\n  type: 'string' | 'number' | 'boolean';\n  options?: string[] | number[] | Array<SelectableValue<string>>;\n  hideName?: boolean;\n  restParam?: boolean;\n  optional?: boolean;\n  placeholder?: string;\n  description?: string;\n  minWidth?: number;\n  editor?: FunctionComponent<QueryBuilderOperationParamEditorProps>;\n  runQueryOnEnter?: boolean;\n}\n\nexport interface QueryBuilderOperationParamEditorProps {\n  value?: QueryBuilderOperationParamValue;\n  paramDef: QueryBuilderOperationParamDef;\n  /** Parameter index */\n  index: number;\n  operation: QueryBuilderOperation;\n  operationId: string;\n  query: any;\n  datasource: DataSourceApi;\n  timeRange?: TimeRange;\n  onChange: (index: number, value: QueryBuilderOperationParamValue) => void;\n  onRunQuery: () => void;\n  queryModeller: VisualQueryModeller;\n}\n\nexport enum QueryEditorMode {\n  Code = 'code',\n  Builder = 'builder',\n}\n\nexport type QueryStats = {\n  bytes: number;\n  // The error message displayed in the UI when we cant estimate the size of the query.\n  message?: string;\n};\n\nexport interface VisualQueryModeller {\n  getOperationsForCategory(category: string): QueryBuilderOperationDefinition[];\n  getAlternativeOperations(key: string): QueryBuilderOperationDefinition[];\n  getCategories(): string[];\n  getOperationDefinition(id: string): QueryBuilderOperationDefinition | undefined;\n  renderQuery(query: VisualQuery, nested?: boolean): string;\n  renderLabels(labels: QueryBuilderLabelFilter[]): string;\n  innerQueryPlaceholder: string;\n}\n\nexport interface VisualQueryBinary<T> {\n  operator: string;\n  vectorMatchesType?: 'on' | 'ignoring';\n  vectorMatches?: string;\n  query: T;\n}\n\nexport const BINARY_OPERATIONS_KEY = 'Binary operations';\n\nexport interface VisualQuery {\n  metric?: string;\n  labels: QueryBuilderLabelFilter[];\n  operations: QueryBuilderOperation[];\n  binaryQueries?: Array<VisualQueryBinary<VisualQuery>>;\n}\n","import { Registry } from '@grafana/data';\n\nimport {\n  BINARY_OPERATIONS_KEY,\n  type VisualQuery,\n  type VisualQueryBinary,\n  type QueryBuilderLabelFilter,\n  type QueryBuilderOperation,\n  type VisualQueryModeller,\n  type QueryBuilderOperationDefinition,\n} from './types';\n\nexport abstract class QueryModellerBase implements VisualQueryModeller {\n  protected operationsRegistry: Registry<QueryBuilderOperationDefinition>;\n  private categories: string[] = [];\n  innerQueryPlaceholder: string;\n\n  constructor(operationDefinitions: QueryBuilderOperationDefinition[], innerQueryPlaceholder?: string) {\n    this.operationsRegistry = new Registry<QueryBuilderOperationDefinition>(() => operationDefinitions);\n    this.innerQueryPlaceholder = innerQueryPlaceholder || '<query>';\n  }\n\n  protected setOperationCategories(categories: string[]) {\n    this.categories = categories;\n  }\n\n  abstract renderOperations(queryString: string, operations: QueryBuilderOperation[]): string;\n\n  abstract renderBinaryQueries(queryString: string, binaryQueries?: Array<VisualQueryBinary<VisualQuery>>): string;\n\n  abstract renderLabels(labels: QueryBuilderLabelFilter[]): string;\n\n  abstract renderQuery(query: VisualQuery, nested?: boolean): string;\n\n  getOperationsForCategory(category: string) {\n    return this.operationsRegistry.list().filter((op) => op.category === category && !op.hideFromList);\n  }\n\n  getAlternativeOperations(key: string) {\n    return this.operationsRegistry.list().filter((op) => op.alternativesKey && op.alternativesKey === key);\n  }\n\n  getCategories() {\n    return this.categories;\n  }\n\n  getOperationDefinition(id: string): QueryBuilderOperationDefinition | undefined {\n    return this.operationsRegistry.getIfExists(id);\n  }\n\n  hasBinaryOp(query: VisualQuery): boolean {\n    return (\n      query.operations.find((op) => {\n        const def = this.getOperationDefinition(op.id);\n        return def?.category === BINARY_OPERATIONS_KEY;\n      }) !== undefined\n    );\n  }\n}\n","import { uniqBy } from 'lodash';\nimport React, { useRef, useState } from 'react';\nimport { v4 } from 'uuid';\nimport { type SelectableValue, toOption } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { InlineField, Select } from '@grafana/ui';\nimport { type QueryBuilderLabelFilter } from '../types';\nimport { InputGroup } from '../../QueryEditor/InputGroup';\nimport { AccessoryButton } from '../../QueryEditor/AccessoryButton';\n\nconst CONFLICTING_LABEL_FILTER_ERROR_MESSAGE = 'You have conflicting label filters';\ninterface Props {\n  defaultOp: string;\n  item: Partial<QueryBuilderLabelFilter>;\n  items: Array<Partial<QueryBuilderLabelFilter>>;\n  onChange: (value: Partial<QueryBuilderLabelFilter>) => void;\n  onGetLabelNames: (forLabel: Partial<QueryBuilderLabelFilter>) => Promise<Array<SelectableValue<string>>>;\n  onGetLabelValues: (forLabel: Partial<QueryBuilderLabelFilter>) => Promise<Array<SelectableValue<string>>>;\n  onDelete: () => void;\n  invalidLabel?: boolean;\n  invalidValue?: boolean;\n  multiValueSeparator?: string;\n}\n\nexport function LabelFilterItem({\n  item,\n  items,\n  defaultOp,\n  onChange,\n  onDelete,\n  onGetLabelNames,\n  onGetLabelValues,\n  invalidLabel,\n  invalidValue,\n  multiValueSeparator = '|',\n}: Props) {\n  const [state, setState] = useState<{\n    labelNames?: Array<SelectableValue<string>>;\n    labelValues?: Array<SelectableValue<string>>;\n    isLoadingLabelNames?: boolean;\n    isLoadingLabelValues?: boolean;\n  }>({});\n  // there's a bug in react-select where the menu doesn't recalculate its position when the options are loaded asynchronously\n  // see https://github.com/grafana/grafana/issues/63558\n  // instead, we explicitly control the menu visibility and prevent showing it until the options have fully loaded\n  const [labelNamesMenuOpen, setLabelNamesMenuOpen] = useState(false);\n  const [labelValuesMenuOpen, setLabelValuesMenuOpen] = useState(false);\n\n  const isMultiSelect = (operator = item.op) => {\n    return operators.find((op) => op.label === operator)?.isMultiValue;\n  };\n\n  const getSelectOptionsFromString = (item?: string): string[] => {\n    if (item) {\n      if (item.indexOf(multiValueSeparator) > 0) {\n        return item.split(multiValueSeparator);\n      }\n      return [item];\n    }\n    return [];\n  };\n\n  const getOptions = (): Array<SelectableValue<string>> => {\n    const labelValues = state.labelValues ? [...state.labelValues] : [];\n    const selectedOptions = getSelectOptionsFromString(item?.value).map(toOption);\n\n    // Remove possible duplicated values\n    return uniqBy([...selectedOptions, ...labelValues], 'value');\n  };\n\n  const isConflicting = isConflictingLabelFilter(item, items);\n  const { current: id } = useRef(v4());\n\n  return (\n    <div data-testid=\"visual-query-builder-dimensions-filter-item\">\n      <InlineField error={CONFLICTING_LABEL_FILTER_ERROR_MESSAGE} invalid={isConflicting ? true : undefined}>\n        <InputGroup>\n          <Select<string>\n            placeholder=\"Select label\"\n            data-testid={selectors.components.QueryBuilder.labelSelect}\n            inputId={`visual-query-builder-dimensions-filter-item-key-${id}`}\n            width=\"auto\"\n            value={item.label ? toOption(item.label) : null}\n            allowCustomValue\n            onOpenMenu={async () => {\n              setState({ isLoadingLabelNames: true });\n              const labelNames = await onGetLabelNames(item);\n              setLabelNamesMenuOpen(true);\n              setState({ labelNames, isLoadingLabelNames: undefined });\n            }}\n            onCloseMenu={() => {\n              setLabelNamesMenuOpen(false);\n            }}\n            isOpen={labelNamesMenuOpen}\n            isLoading={state.isLoadingLabelNames}\n            options={state.labelNames}\n            onChange={(change) => {\n              if (change.value) {\n                onChange({\n                  ...item,\n                  op: item.op ?? defaultOp,\n                  label: change.value,\n                });\n              }\n            }}\n            invalid={isConflicting || invalidLabel}\n          />\n\n          <Select<string>\n            data-testid={selectors.components.QueryBuilder.matchOperatorSelect}\n            value={toOption(item.op ?? defaultOp)}\n            options={operators}\n            width=\"auto\"\n            onChange={(change) => {\n              if (change.value) {\n                onChange({\n                  ...item,\n                  op: change.value,\n                  value: isMultiSelect(change.value) ? item.value : getSelectOptionsFromString(item?.value)[0],\n                });\n              }\n            }}\n            invalid={isConflicting}\n          />\n\n          <Select<string>\n            placeholder=\"Select value\"\n            data-testid={selectors.components.QueryBuilder.valueSelect}\n            inputId={`visual-query-builder-dimensions-filter-item-value-${id}`}\n            width=\"auto\"\n            value={\n              isMultiSelect()\n                ? getSelectOptionsFromString(item?.value).map(toOption)\n                : getSelectOptionsFromString(item?.value).map(toOption)[0]\n            }\n            allowCustomValue\n            onOpenMenu={async () => {\n              setState({ isLoadingLabelValues: true });\n              const labelValues = await onGetLabelValues(item);\n              setState({\n                ...state,\n                labelValues,\n                isLoadingLabelValues: undefined,\n              });\n              setLabelValuesMenuOpen(true);\n            }}\n            onCloseMenu={() => {\n              setLabelValuesMenuOpen(false);\n            }}\n            isOpen={labelValuesMenuOpen}\n            isMulti={isMultiSelect()}\n            isLoading={state.isLoadingLabelValues}\n            options={getOptions()}\n            onChange={(change) => {\n              if (change.value) {\n                onChange({\n                  ...item,\n                  value: change.value,\n                  op: item.op ?? defaultOp,\n                });\n              } else {\n                // otherwise, we're dealing with a multi-value select which is array of options\n                const changes = change\n                  .map((change: SelectableValue<string>) => {\n                    if (change.value) {\n                      return change.value;\n                    } else {\n                      return undefined;\n                    }\n                  })\n                  .filter((val: string | undefined) => val !== undefined)\n                  .join(multiValueSeparator);\n                onChange({ ...item, value: changes, op: item.op ?? defaultOp });\n              }\n            }}\n            invalid={isConflicting || invalidValue}\n          />\n          <AccessoryButton aria-label=\"remove\" icon=\"times\" variant=\"secondary\" onClick={onDelete} />\n        </InputGroup>\n      </InlineField>\n    </div>\n  );\n}\n\nconst operators = [\n  { label: '=', value: '=', description: 'Equals', isMultiValue: false },\n  { label: '!=', value: '!=', description: 'Does not equal', isMultiValue: false },\n  { label: '=~', value: '=~', description: 'Matches regex', isMultiValue: true },\n  { label: '!~', value: '!~', description: 'Does not match regex', isMultiValue: true },\n];\n\nexport function isConflictingLabelFilter(\n  newLabel: Partial<QueryBuilderLabelFilter>,\n  labels: Array<Partial<QueryBuilderLabelFilter>>\n): boolean {\n  if (!newLabel.label || !newLabel.op || !newLabel.value) {\n    return false;\n  }\n\n  if (labels.length < 2) {\n    return false;\n  }\n\n  const operationIsNegative = newLabel.op.toString().startsWith('!');\n\n  const candidates = labels.filter(\n    (label) => label.label === newLabel.label && label.value === newLabel.value && label.op !== newLabel.op\n  );\n\n  const conflict = candidates.some((candidate) => {\n    if (operationIsNegative && candidate?.op?.toString().startsWith('!') === false) {\n      return true;\n    }\n    if (operationIsNegative === false && candidate?.op?.toString().startsWith('!')) {\n      return true;\n    }\n    return false;\n  });\n\n  return conflict;\n}\n","import { isEqual } from 'lodash';\nimport React, { useEffect, useState } from 'react';\n\nimport { type SelectableValue } from '@grafana/data';\n\nimport { type QueryBuilderLabelFilter } from '../types';\n\nimport { EditorField } from '../../QueryEditor/EditorField';\nimport { EditorFieldGroup } from '../../QueryEditor/EditorFieldGroup';\nimport { EditorList } from '../../QueryEditor/EditorList';\nimport { LabelFilterItem } from './LabelFilterItem';\n\nexport const MISSING_LABEL_FILTER_ERROR_MESSAGE = 'Select at least 1 label filter (label and value)';\n\nexport interface Props {\n  labelsFilters: QueryBuilderLabelFilter[];\n  onChange: (labelFilters: QueryBuilderLabelFilter[]) => void;\n  onGetLabelNames: (forLabel: Partial<QueryBuilderLabelFilter>) => Promise<SelectableValue[]>;\n  onGetLabelValues: (forLabel: Partial<QueryBuilderLabelFilter>) => Promise<SelectableValue[]>;\n  /** If set to true, component will show error message until at least 1 filter is selected */\n  labelFilterRequired?: boolean;\n  multiValueSeparator?: string;\n}\n\nexport function LabelFilters({\n  labelsFilters,\n  onChange,\n  onGetLabelNames,\n  onGetLabelValues,\n  labelFilterRequired,\n  multiValueSeparator,\n}: Props) {\n  const defaultOp = '=';\n  const [items, setItems] = useState<Array<Partial<QueryBuilderLabelFilter>>>([{ op: defaultOp }]);\n\n  useEffect(() => {\n    if (labelsFilters.length > 0) {\n      setItems(labelsFilters);\n    } else {\n      setItems([{ op: defaultOp }]);\n    }\n  }, [labelsFilters]);\n\n  const onLabelsChange = (newItems: Array<Partial<QueryBuilderLabelFilter>>) => {\n    setItems(newItems);\n\n    // Extract full label filters with both label & value\n    const newLabels = newItems.filter(\n      (item): item is QueryBuilderLabelFilter => item.label !== undefined && item.value !== undefined\n    );\n    if (!isEqual(newLabels, labelsFilters)) {\n      onChange(newLabels);\n    }\n  };\n\n  const hasLabelFilter = items.some((item) => item.label && item.value);\n\n  return (\n    <EditorFieldGroup>\n      <EditorField\n        label=\"Label filters\"\n        error={MISSING_LABEL_FILTER_ERROR_MESSAGE}\n        invalid={labelFilterRequired && !hasLabelFilter}\n      >\n        <EditorList\n          items={items}\n          onChange={onLabelsChange}\n          renderItem={(item: Partial<QueryBuilderLabelFilter>, onChangeItem, onDelete) => (\n            <LabelFilterItem\n              item={item}\n              items={items}\n              defaultOp={defaultOp}\n              onChange={onChangeItem}\n              onDelete={onDelete}\n              onGetLabelNames={onGetLabelNames}\n              onGetLabelValues={onGetLabelValues}\n              invalidLabel={labelFilterRequired && !item.label}\n              invalidValue={labelFilterRequired && !item.value}\n              multiValueSeparator={multiValueSeparator}\n            />\n          )}\n        />\n      </EditorField>\n    </EditorFieldGroup>\n  );\n}\n","import React from 'react';\nimport { css } from '@emotion/css';\n\nimport { type GrafanaTheme2, renderMarkdown } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\n\nexport interface Props {\n  title?: React.ReactNode;\n  markdown?: string;\n  stepNumber?: number;\n}\n\nexport function OperationExplainedBox({ title, stepNumber, markdown, children }: React.PropsWithChildren<Props>) {\n  const styles = useStyles2(getStyles);\n\n  return (\n    <div className={styles.box}>\n      {stepNumber !== undefined && <div className={styles.stepNumber}>{stepNumber}</div>}\n      <div className={styles.boxInner}>\n        {title && (\n          <div className={styles.header}>\n            <span>{title}</span>\n          </div>\n        )}\n        <div className={styles.body}>\n          {markdown && <div dangerouslySetInnerHTML={{ __html: renderMarkdown(markdown) }}></div>}\n          {children}\n        </div>\n      </div>\n    </div>\n  );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    box: css({\n      background: theme.colors.background.secondary,\n      padding: theme.spacing(1),\n      borderRadius: theme.shape.radius.default,\n      position: 'relative',\n    }),\n    boxInner: css({\n      marginLeft: theme.spacing(4),\n    }),\n    stepNumber: css({\n      fontWeight: theme.typography.fontWeightMedium,\n      background: theme.colors.secondary.main,\n      width: '20px',\n      height: '20px',\n      borderRadius: theme.shape.radius.circle,\n      display: 'flex',\n      alignItems: 'center',\n      justifyContent: 'center',\n      position: 'absolute',\n      top: '10px',\n      left: '11px',\n      fontSize: theme.typography.bodySmall.fontSize,\n    }),\n    header: css({\n      paddingBottom: theme.spacing(0.5),\n      display: 'flex',\n      alignItems: 'center',\n      fontFamily: theme.typography.fontFamilyMonospace,\n    }),\n    body: css({\n      color: theme.colors.text.secondary,\n      'p:last-child': {\n        margin: 0,\n      },\n      a: {\n        color: theme.colors.text.link,\n        textDecoration: 'underline',\n      },\n    }),\n  };\n};\n","import React, { useState, memo } from 'react';\nimport { css } from '@emotion/css';\nimport { usePopperTooltip } from 'react-popper-tooltip';\n\nimport { type GrafanaTheme2, renderMarkdown } from '@grafana/data';\nimport { Button, Portal, useStyles2 } from '@grafana/ui';\n\nimport { type QueryBuilderOperation, type QueryBuilderOperationDefinition } from '../types';\nimport { FlexItem } from '../../QueryEditor/FlexItem';\n\ninterface Props {\n  operation: QueryBuilderOperation;\n  definition: QueryBuilderOperationDefinition;\n  innerQueryPlaceholder: string;\n}\n\nexport const OperationInfoButton = memo<Props>(({ definition, operation, innerQueryPlaceholder }) => {\n  const styles = useStyles2(getStyles);\n  const [show, setShow] = useState(false);\n  const { getTooltipProps, setTooltipRef, setTriggerRef, visible } = usePopperTooltip({\n    placement: 'top',\n    visible: show,\n    offset: [0, 16],\n    onVisibleChange: setShow,\n    interactive: true,\n    trigger: ['click'],\n  });\n\n  return (\n    <>\n      <Button\n        title=\"Click to show description\"\n        aria-label=\"Click to show description\"\n        ref={setTriggerRef}\n        icon=\"info-circle\"\n        size=\"sm\"\n        variant=\"secondary\"\n        fill=\"text\"\n      />\n      {visible && (\n        <Portal>\n          <div ref={setTooltipRef} {...getTooltipProps()} className={styles.docBox}>\n            <div className={styles.docBoxHeader}>\n              <span>{definition.renderer(operation, definition, innerQueryPlaceholder)}</span>\n              <FlexItem grow={1} />\n              <Button\n                icon=\"times\"\n                onClick={() => setShow(false)}\n                fill=\"text\"\n                variant=\"secondary\"\n                title=\"Remove operation\"\n                aria-label=\"Remove operation\"\n              />\n            </div>\n            <div\n              className={styles.docBoxBody}\n              dangerouslySetInnerHTML={{ __html: getOperationDocs(definition, operation) }}\n            ></div>\n          </div>\n        </Portal>\n      )}\n    </>\n  );\n});\n\nOperationInfoButton.displayName = 'OperationDocs';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    docBox: css({\n      overflow: 'hidden',\n      background: theme.colors.background.primary,\n      border: `1px solid ${theme.colors.border.strong}`,\n      boxShadow: theme.shadows.z3,\n      maxWidth: '600px',\n      padding: theme.spacing(1),\n      borderRadius: theme.shape.radius.default,\n      zIndex: theme.zIndex.tooltip,\n    }),\n    docBoxHeader: css({\n      fontSize: theme.typography.h5.fontSize,\n      fontFamily: theme.typography.fontFamilyMonospace,\n      paddingBottom: theme.spacing(1),\n      display: 'flex',\n      alignItems: 'center',\n    }),\n    docBoxBody: css({\n      // The markdown paragraph has a marginBottom this removes it\n      marginBottom: theme.spacing(-1),\n      color: theme.colors.text.secondary,\n    }),\n    signature: css({\n      fontSize: theme.typography.bodySmall.fontSize,\n      fontFamily: theme.typography.fontFamilyMonospace,\n    }),\n    dropdown: css({\n      opacity: 0,\n      color: theme.colors.text.secondary,\n    }),\n  };\n};\nfunction getOperationDocs(def: QueryBuilderOperationDefinition, op: QueryBuilderOperation): string {\n  return renderMarkdown(def.explainHandler ? def.explainHandler(op, def) : (def.documentation ?? 'no docs'));\n}\n","import { css } from '@emotion/css';\nimport React, { useState, memo } from 'react';\nimport { type DraggableProvided } from '@hello-pangea/dnd';\n\nimport { type GrafanaTheme2, type SelectableValue } from '@grafana/data';\nimport { Button, Select, useStyles2 } from '@grafana/ui';\n\nimport { OperationInfoButton } from './OperationInfoButton';\n\nimport { type VisualQueryModeller, type QueryBuilderOperation, type QueryBuilderOperationDefinition } from '../types';\nimport { FlexItem } from '../../QueryEditor/FlexItem';\n\ninterface Props {\n  operation: QueryBuilderOperation;\n  definition: QueryBuilderOperationDefinition;\n  index: number;\n  queryModeller: VisualQueryModeller;\n  dragHandleProps?: DraggableProvided['dragHandleProps'];\n  onChange: (index: number, update: QueryBuilderOperation) => void;\n  onRemove: (index: number) => void;\n  onToggle: (index: number) => void;\n}\n\ninterface State {\n  isOpen?: boolean;\n  disabled?: boolean;\n  alternatives?: Array<SelectableValue<QueryBuilderOperationDefinition>>;\n}\n\nexport const OperationHeader = memo<Props>(\n  ({ operation, definition, index, onChange, onRemove, onToggle, queryModeller, dragHandleProps }) => {\n    const styles = useStyles2(getStyles);\n    const [state, setState] = useState<State>({});\n\n    const onToggleSwitcher = () => {\n      if (state.isOpen) {\n        setState({ ...state, isOpen: false });\n      } else {\n        const alternatives = queryModeller\n          .getAlternativeOperations(definition.alternativesKey!)\n          .map((alt) => ({ label: alt.name, value: alt }));\n        setState({ isOpen: true, alternatives });\n      }\n    };\n\n    return (\n      <div className={styles.header}>\n        {!state.isOpen && (\n          <>\n            <div {...dragHandleProps}>{definition.name ?? definition.id}</div>\n            <FlexItem grow={1} />\n            <div className={`${styles.operationHeaderButtons} operation-header-show-on-hover`}>\n              <Button\n                icon=\"angle-down\"\n                size=\"sm\"\n                onClick={onToggleSwitcher}\n                fill=\"text\"\n                variant=\"secondary\"\n                title=\"Click to view alternative operations\"\n                aria-label=\"Click to view alternative operations\"\n              />\n              <OperationInfoButton\n                definition={definition}\n                operation={operation}\n                innerQueryPlaceholder={queryModeller.innerQueryPlaceholder}\n              />\n              {definition.toggleable && (\n                <Button\n                  icon={operation.disabled ? 'eye-slash' : 'eye'}\n                  size=\"sm\"\n                  onClick={() => onToggle(index)}\n                  fill=\"text\"\n                  variant=\"secondary\"\n                  title={operation.disabled ? 'Enable operation' : 'Disable operation'}\n                  aria-label={operation.disabled ? 'Enable operation' : 'Disable operation'}\n                />\n              )}\n              <Button\n                icon=\"times\"\n                size=\"sm\"\n                onClick={() => onRemove(index)}\n                fill=\"text\"\n                variant=\"secondary\"\n                title=\"Remove operation\"\n                aria-label=\"Remove operation\"\n              />\n            </div>\n          </>\n        )}\n        {state.isOpen && (\n          <div className={styles.selectWrapper}>\n            <Select\n              autoFocus\n              openMenuOnFocus\n              placeholder=\"Replace with\"\n              options={state.alternatives}\n              isOpen={true}\n              onCloseMenu={onToggleSwitcher}\n              onChange={(value) => {\n                if (value.value) {\n                  // Operation should exist if it is selectable\n                  const newDef = queryModeller.getOperationDefinition(value.value.id)!;\n\n                  // copy default params, and override with all current params\n                  const newParams = [...newDef.defaultParams];\n                  for (let i = 0; i < Math.min(operation.params.length, newParams.length); i++) {\n                    if (newDef.params[i].type === definition.params[i].type) {\n                      newParams[i] = operation.params[i];\n                    }\n                  }\n\n                  const changedOp = { ...operation, params: newParams, id: value.value.id };\n                  onChange(\n                    index,\n                    definition.changeTypeHandler ? definition.changeTypeHandler(changedOp, newDef) : changedOp\n                  );\n                }\n              }}\n            />\n          </div>\n        )}\n      </div>\n    );\n  }\n);\n\nOperationHeader.displayName = 'OperationHeader';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    header: css({\n      borderBottom: `1px solid ${theme.colors.border.medium}`,\n      padding: theme.spacing(0.5, 0.5, 0.5, 1),\n      display: 'flex',\n      alignItems: 'center',\n    }),\n    operationHeaderButtons: css({\n      opacity: 1,\n    }),\n    selectWrapper: css({\n      paddingRight: theme.spacing(2),\n    }),\n  };\n};\n","import React, { type FunctionComponent } from 'react';\nimport { css } from '@emotion/css';\n\nimport { type GrafanaTheme2, type SelectableValue, toOption } from '@grafana/data';\nimport { AutoSizeInput, Button, Checkbox, Select, useStyles2 } from '@grafana/ui';\n\nimport { type QueryBuilderOperationParamDef, type QueryBuilderOperationParamEditorProps } from '../types';\n\nimport { EditorStack } from '../../QueryEditor';\n\nexport function getOperationParamEditor(\n  paramDef: QueryBuilderOperationParamDef\n): FunctionComponent<QueryBuilderOperationParamEditorProps> {\n  if (paramDef.editor) {\n    return paramDef.editor;\n  }\n\n  if (paramDef.options) {\n    return SelectInputParamEditor;\n  }\n\n  switch (paramDef.type) {\n    case 'boolean':\n      return BoolInputParamEditor;\n    case 'number':\n    case 'string':\n    default:\n      return SimpleInputParamEditor;\n  }\n}\n\nfunction SimpleInputParamEditor(props: QueryBuilderOperationParamEditorProps) {\n  return (\n    <AutoSizeInput\n      id={getOperationParamId(props.operationId, props.index)}\n      defaultValue={props.value?.toString()}\n      minWidth={props.paramDef.minWidth}\n      placeholder={props.paramDef.placeholder}\n      title={props.paramDef.description}\n      maxWidth={(props.paramDef.minWidth || 20) * 3}\n      onCommitChange={(evt) => {\n        props.onChange(props.index, evt.currentTarget.value);\n        if (props.paramDef.runQueryOnEnter && evt.type === 'keydown') {\n          props.onRunQuery();\n        }\n      }}\n    />\n  );\n}\n\nfunction BoolInputParamEditor(props: QueryBuilderOperationParamEditorProps) {\n  return (\n    <Checkbox\n      id={getOperationParamId(props.operationId, props.index)}\n      value={Boolean(props.value)}\n      onChange={(evt) => props.onChange(props.index, evt.currentTarget.checked)}\n    />\n  );\n}\n\nfunction SelectInputParamEditor({\n  paramDef,\n  value,\n  index,\n  operationId,\n  onChange,\n}: QueryBuilderOperationParamEditorProps) {\n  const styles = useStyles2(getStyles);\n  let selectOptions = paramDef.options as SelectableValue[];\n\n  if (!selectOptions[0]?.label) {\n    selectOptions = paramDef.options!.map((option) => ({\n      label: option.toString(),\n      value: option,\n    }));\n  }\n\n  let valueOption = selectOptions.find((x) => x.value === value) ?? toOption(value as string);\n\n  // If we have optional options param and don't have value, we want to render button with which we add optional options.\n  // This makes it easier to understand what needs to be selected and what is optional.\n  if (!value && paramDef.optional) {\n    return (\n      <div className={styles.optionalParam}>\n        <Button\n          size=\"sm\"\n          variant=\"secondary\"\n          title={`Add ${paramDef.name}`}\n          icon=\"plus\"\n          onClick={() => onChange(index, selectOptions[0].value)}\n        >\n          {paramDef.name}\n        </Button>\n      </div>\n    );\n  }\n\n  return (\n    <EditorStack gap={0.5} direction=\"row\" alignItems=\"center\">\n      <Select\n        id={getOperationParamId(operationId, index)}\n        value={valueOption}\n        options={selectOptions}\n        placeholder={paramDef.placeholder}\n        allowCustomValue={true}\n        onChange={(value) => onChange(index, value.value!)}\n        width={paramDef.minWidth || 'auto'}\n      />\n      {paramDef.optional && (\n        <Button\n          data-testid={`operations.${index}.remove-param`}\n          size=\"sm\"\n          fill=\"text\"\n          icon=\"times\"\n          variant=\"secondary\"\n          title={`Remove ${paramDef.name}`}\n          aria-label={`Remove ${paramDef.name}`}\n          onClick={() => onChange(index, '')}\n        />\n      )}\n    </EditorStack>\n  );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    optionalParam: css({\n      marginTop: theme.spacing(1),\n    }),\n  };\n};\n\nexport function getOperationParamId(operationId: string, paramIndex: number) {\n  return `operations.${operationId}.param.${paramIndex}`;\n}\n","import React, { useEffect, useRef, useState } from 'react';\nimport { type DraggableProvided } from '@hello-pangea/dnd';\nimport { Button, Icon, Tooltip, useTheme2 } from '@grafana/ui';\nimport { css, cx } from '@emotion/css';\nimport { type DataSourceApi, type GrafanaTheme2, type TimeRange } from '@grafana/data';\nimport { OperationHeader } from './OperationHeader';\nimport {\n  type QueryBuilderOperation,\n  type QueryBuilderOperationDefinition,\n  type QueryBuilderOperationParamDef,\n  type QueryBuilderOperationParamValue,\n  type VisualQuery,\n  type VisualQueryModeller,\n} from '../types';\nimport { getOperationParamEditor, getOperationParamId } from './OperationParamEditor';\nimport { v4 } from 'uuid';\nimport { EditorStack } from '../../QueryEditor';\n\ntype Props = {\n  provided: DraggableProvided;\n  isConflicting: boolean;\n  index: number;\n  operation: QueryBuilderOperation;\n  definition: QueryBuilderOperationDefinition;\n  queryModeller: VisualQueryModeller;\n  query: VisualQuery;\n  onChange: (index: number, update: QueryBuilderOperation) => void;\n  onRemove: (index: number) => void;\n  onToggle: (index: number) => void;\n  onRunQuery: () => void;\n  datasource: DataSourceApi;\n  flash?: boolean;\n  highlight?: boolean;\n  timeRange?: TimeRange;\n};\n\nexport function OperationEditorBody({\n  provided,\n  flash,\n  isConflicting,\n  highlight,\n  index,\n  queryModeller,\n  onChange,\n  onRemove,\n  onToggle,\n  operation,\n  definition,\n  query,\n  timeRange,\n  onRunQuery,\n  datasource,\n}: Props) {\n  const theme = useTheme2();\n  const styles = getStyles(theme, isConflicting);\n  const shouldFlash = useFlash(flash);\n  const { current: id } = useRef(v4());\n\n  const onParamValueChanged = (paramIdx: number, value: QueryBuilderOperationParamValue) => {\n    const update: QueryBuilderOperation = { ...operation, params: [...operation.params] };\n    update.params[paramIdx] = value;\n    callParamChangedThenOnChange(definition, update, index, paramIdx, onChange);\n  };\n\n  const onAddRestParam = () => {\n    const update: QueryBuilderOperation = { ...operation, params: [...operation.params, ''] };\n    callParamChangedThenOnChange(definition, update, index, operation.params.length, onChange);\n  };\n\n  const onRemoveRestParam = (paramIdx: number) => {\n    const update: QueryBuilderOperation = {\n      ...operation,\n      params: [...operation.params.slice(0, paramIdx), ...operation.params.slice(paramIdx + 1)],\n    };\n    callParamChangedThenOnChange(definition, update, index, paramIdx, onChange);\n  };\n\n  // Handle adding button for rest params\n  let restParam: React.ReactNode | undefined;\n  if (definition.params.length > 0) {\n    const lastParamDef = definition.params[definition.params.length - 1];\n    if (lastParamDef.restParam) {\n      restParam = renderAddRestParamButton(lastParamDef, onAddRestParam, index, operation.params.length, styles);\n    }\n  }\n\n  return (\n    <div\n      className={cx(styles.card, {\n        [styles.cardHighlight]: shouldFlash || highlight,\n        [styles.cardError]: isConflicting,\n        [styles.disabled]: operation.disabled,\n      })}\n      ref={provided.innerRef}\n      {...provided.draggableProps}\n      data-testid={`operations.${index}.wrapper`}\n    >\n      <OperationHeader\n        operation={operation}\n        dragHandleProps={provided.dragHandleProps}\n        definition={definition}\n        index={index}\n        onChange={onChange}\n        onRemove={onRemove}\n        onToggle={onToggle}\n        queryModeller={queryModeller}\n      />\n      <div className={styles.body}>\n        {operation.params.map((param, paramIndex) => {\n          const paramDef = definition.params[Math.min(definition.params.length - 1, paramIndex)];\n          const Editor = getOperationParamEditor(paramDef);\n\n          return (\n            <div className={styles.paramRow} key={`${paramIndex}-1`}>\n              {!paramDef.hideName && (\n                <div className={styles.paramName}>\n                  <label htmlFor={getOperationParamId(id, paramIndex)}>{paramDef.name}</label>\n                  {paramDef.description && (\n                    <Tooltip placement=\"top\" content={paramDef.description} theme=\"info\">\n                      <Icon name=\"info-circle\" size=\"sm\" className={styles.infoIcon} />\n                    </Tooltip>\n                  )}\n                </div>\n              )}\n              <div className={styles.paramValue}>\n                <EditorStack gap={0.5} direction=\"row\" alignItems=\"center\" wrap={false}>\n                  <Editor\n                    index={paramIndex}\n                    paramDef={paramDef}\n                    value={operation.params[paramIndex]}\n                    operation={operation}\n                    operationId={id}\n                    onChange={onParamValueChanged}\n                    onRunQuery={onRunQuery}\n                    query={query}\n                    datasource={datasource}\n                    timeRange={timeRange}\n                    queryModeller={queryModeller}\n                  />\n                  {paramDef.restParam && (operation.params.length > definition.params.length || paramDef.optional) && (\n                    <Button\n                      data-testid={`operations.${index}.remove-rest-param`}\n                      size=\"sm\"\n                      fill=\"text\"\n                      icon=\"times\"\n                      variant=\"secondary\"\n                      title={`Remove ${paramDef.name}`}\n                      aria-label={`Remove ${paramDef.name}`}\n                      onClick={() => onRemoveRestParam(paramIndex)}\n                    />\n                  )}\n                </EditorStack>\n              </div>\n            </div>\n          );\n        })}\n      </div>\n      {restParam}\n      {index < query.operations.length - 1 && (\n        <div className={styles.arrow}>\n          <div className={styles.arrowLine} />\n          <div className={styles.arrowArrow} />\n        </div>\n      )}\n    </div>\n  );\n}\n\nconst getStyles = (theme: GrafanaTheme2, isConflicting: boolean) => {\n  return {\n    cardWrapper: css({\n      alignItems: 'stretch',\n    }),\n    error: css({\n      marginBottom: theme.spacing(1),\n    }),\n    card: css({\n      background: theme.colors.background.primary,\n      border: `1px solid ${theme.colors.border.medium}`,\n      cursor: 'grab',\n      borderRadius: theme.shape.radius.default,\n      position: 'relative',\n      transition: 'all 0.5s ease-in 0s',\n      height: isConflicting ? 'auto' : '100%',\n    }),\n    disabled: css({\n      opacity: 0.5,\n      transition: 'none',\n    }),\n    cardError: css({\n      boxShadow: `0px 0px 4px 0px ${theme.colors.warning.main}`,\n      border: `1px solid ${theme.colors.warning.main}`,\n    }),\n    cardHighlight: css({\n      boxShadow: `0px 0px 4px 0px ${theme.colors.primary.border}`,\n      border: `1px solid ${theme.colors.primary.border}`,\n    }),\n    infoIcon: css({\n      marginLeft: theme.spacing(0.5),\n      color: theme.colors.text.secondary,\n      ':hover': {\n        color: theme.colors.text.primary,\n      },\n    }),\n    body: css({\n      margin: theme.spacing(1, 1, 0.5, 1),\n      display: 'table',\n    }),\n    paramRow: css({\n      label: 'paramRow',\n      display: 'table-row',\n      verticalAlign: 'middle',\n    }),\n    paramName: css({\n      display: 'table-cell',\n      padding: theme.spacing(0, 1, 0, 0),\n      fontSize: theme.typography.bodySmall.fontSize,\n      fontWeight: theme.typography.fontWeightMedium,\n      verticalAlign: 'middle',\n      height: '32px',\n    }),\n    paramValue: css({\n      label: 'paramValue',\n      display: 'table-cell',\n      verticalAlign: 'middle',\n    }),\n    restParam: css({\n      padding: theme.spacing(0, 1, 1, 1),\n    }),\n    arrow: css({\n      position: 'absolute',\n      top: '0',\n      right: '-18px',\n      display: 'flex',\n    }),\n    arrowLine: css({\n      height: '2px',\n      width: '8px',\n      backgroundColor: theme.colors.border.strong,\n      position: 'relative',\n      top: '14px',\n    }),\n    arrowArrow: css({\n      width: 0,\n      height: 0,\n      borderTop: `5px solid transparent`,\n      borderBottom: `5px solid transparent`,\n      borderLeft: `7px solid ${theme.colors.border.strong}`,\n      position: 'relative',\n      top: '10px',\n    }),\n  };\n};\n\n/**\n * When flash is switched on makes sure it is switched of right away, so we just flash the highlight and then fade\n * out.\n * @param flash\n */\nfunction useFlash(flash?: boolean) {\n  const [keepFlash, setKeepFlash] = useState(true);\n  useEffect(() => {\n    let t: ReturnType<typeof setTimeout>;\n    if (flash) {\n      t = setTimeout(() => {\n        setKeepFlash(false);\n      }, 1000);\n    } else {\n      setKeepFlash(true);\n    }\n\n    return () => clearTimeout(t);\n  }, [flash]);\n\n  return keepFlash && flash;\n}\n\nfunction callParamChangedThenOnChange(\n  def: QueryBuilderOperationDefinition,\n  operation: QueryBuilderOperation,\n  operationIndex: number,\n  paramIndex: number,\n  onChange: (index: number, update: QueryBuilderOperation) => void\n) {\n  if (def.paramChangedHandler) {\n    onChange(operationIndex, def.paramChangedHandler(paramIndex, operation, def));\n  } else {\n    onChange(operationIndex, operation);\n  }\n}\n\nfunction renderAddRestParamButton(\n  paramDef: QueryBuilderOperationParamDef,\n  onAddRestParam: () => void,\n  operationIndex: number,\n  paramIndex: number,\n  styles: OperationEditorStyles\n) {\n  return (\n    <div className={styles.restParam} key={`${paramIndex}-2`}>\n      <Button\n        size=\"sm\"\n        icon=\"plus\"\n        title={`Add ${paramDef.name}`.trimEnd()}\n        variant=\"secondary\"\n        onClick={onAddRestParam}\n        data-testid={`operations.${operationIndex}.add-rest-param`}\n      >\n        {paramDef.name}\n      </Button>\n    </div>\n  );\n}\n\ntype OperationEditorStyles = ReturnType<typeof getStyles>;\n","import React from 'react';\nimport { css, cx } from '@emotion/css';\nimport { Draggable } from '@hello-pangea/dnd';\n\nimport { type DataSourceApi, type GrafanaTheme2, type TimeRange } from '@grafana/data';\nimport { InlineField, useTheme2 } from '@grafana/ui';\n\nimport { type QueryBuilderOperation, type VisualQuery, type VisualQueryModeller } from '../types';\nimport { OperationEditorBody } from './OperationEditorBody';\n\ninterface Props<T extends VisualQuery> {\n  operation: QueryBuilderOperation;\n  index: number;\n  query: T;\n  datasource: DataSourceApi;\n  queryModeller: VisualQueryModeller;\n  onChange: (index: number, update: QueryBuilderOperation) => void;\n  onRemove: (index: number) => void;\n  onToggle: (index: number) => void;\n  onRunQuery: () => void;\n  flash?: boolean;\n  highlight?: boolean;\n  timeRange?: TimeRange;\n  isConflictingOperation?: (operation: QueryBuilderOperation, otherOperations: QueryBuilderOperation[]) => boolean;\n}\n\nexport function OperationEditor<T extends VisualQuery>({\n  operation,\n  index,\n  onRemove,\n  onToggle,\n  onChange,\n  onRunQuery,\n  queryModeller,\n  query,\n  datasource,\n  flash,\n  highlight,\n  timeRange,\n  isConflictingOperation,\n}: Props<T>) {\n  const def = queryModeller.getOperationDefinition(operation.id);\n\n  const theme = useTheme2();\n  const isConflicting = isConflictingOperation ? isConflictingOperation(operation, query.operations) : false;\n  const styles = getStyles(theme, isConflicting);\n\n  if (!def) {\n    return <span>Operation {operation.id} not found</span>;\n  }\n\n  const isInvalid = (isDragging: boolean) => {\n    if (isDragging) {\n      return undefined;\n    }\n\n    return isConflicting ? true : undefined;\n  };\n\n  return (\n    <Draggable draggableId={`operation-${index}`} index={index}>\n      {(provided, snapshot) => (\n        <InlineField\n          error={'You have conflicting label filters'}\n          invalid={isInvalid(snapshot.isDragging)}\n          className={cx(styles.error, styles.cardWrapper)}\n        >\n          <OperationEditorBody\n            provided={provided}\n            flash={flash}\n            highlight={highlight}\n            isConflicting={isConflicting}\n            index={index}\n            operation={operation}\n            definition={def}\n            onChange={onChange}\n            onRemove={onRemove}\n            onToggle={onToggle}\n            queryModeller={queryModeller}\n            query={query}\n            timeRange={timeRange}\n            onRunQuery={onRunQuery}\n            datasource={datasource}\n          />\n        </InlineField>\n      )}\n    </Draggable>\n  );\n}\n\nconst getStyles = (theme: GrafanaTheme2, isConflicting: boolean) => {\n  return {\n    cardWrapper: css({\n      alignItems: 'stretch',\n    }),\n    error: css({\n      marginBottom: theme.spacing(1),\n    }),\n  };\n};\n","import { css } from '@emotion/css';\nimport React, { useState } from 'react';\nimport { DragDropContext, Droppable, type DropResult } from '@hello-pangea/dnd';\nimport { useMountedState, usePrevious } from 'react-use';\n\nimport { type DataSourceApi, type GrafanaTheme2, type TimeRange } from '@grafana/data';\nimport { Button, Cascader, type CascaderOption, useStyles2 } from '@grafana/ui';\n\nimport { OperationEditor } from './OperationEditor';\nimport { type QueryBuilderOperation, type VisualQuery, type VisualQueryModeller } from '../types';\nimport { EditorStack } from '../../QueryEditor';\n\nexport interface Props<T extends VisualQuery> {\n  query: T;\n  datasource: DataSourceApi;\n  onChange: (query: T) => void;\n  onRunQuery: () => void;\n  queryModeller: VisualQueryModeller;\n  explainMode?: boolean;\n  highlightedOp?: QueryBuilderOperation;\n  timeRange?: TimeRange;\n  isConflictingOperation?: (operation: QueryBuilderOperation, otherOperations: QueryBuilderOperation[]) => boolean;\n}\n\nexport function OperationList<T extends VisualQuery>({\n  query,\n  datasource,\n  queryModeller,\n  onChange,\n  onRunQuery,\n  highlightedOp,\n  timeRange,\n  isConflictingOperation,\n}: Props<T>) {\n  const styles = useStyles2(getStyles);\n  const { operations } = query;\n\n  const opsToHighlight = useOperationsHighlight(operations);\n\n  const [cascaderOpen, setCascaderOpen] = useState(false);\n\n  const onOperationChange = (index: number, update: QueryBuilderOperation) => {\n    const updatedList = [...operations];\n    updatedList.splice(index, 1, update);\n    onChange({ ...query, operations: updatedList });\n  };\n\n  const onRemove = (index: number) => {\n    const updatedList = [...operations.slice(0, index), ...operations.slice(index + 1)];\n    onChange({ ...query, operations: updatedList });\n  };\n\n  const onToggle = (index: number) => {\n    onOperationChange(index, { ...operations[index], disabled: !operations[index].disabled });\n  };\n\n  const addOptions: CascaderOption[] = queryModeller.getCategories().map((category) => {\n    return {\n      value: category,\n      label: category,\n      items: queryModeller.getOperationsForCategory(category).map((operation) => ({\n        value: operation.id,\n        label: operation.name,\n        isLeaf: true,\n      })),\n    };\n  });\n\n  const onAddOperation = (value: string) => {\n    const operationDef = queryModeller.getOperationDefinition(value);\n    if (!operationDef) {\n      return;\n    }\n    onChange(operationDef.addOperationHandler(operationDef, query, queryModeller));\n    setCascaderOpen(false);\n  };\n\n  const onDragEnd = (result: DropResult) => {\n    if (!result.destination) {\n      return;\n    }\n\n    const updatedList = [...operations];\n    const element = updatedList[result.source.index];\n    updatedList.splice(result.source.index, 1);\n    updatedList.splice(result.destination.index, 0, element);\n    onChange({ ...query, operations: updatedList });\n  };\n\n  const onCascaderBlur = () => {\n    setCascaderOpen(false);\n  };\n\n  return (\n    <EditorStack gap={1} direction=\"column\">\n      <EditorStack gap={1}>\n        {operations.length > 0 && (\n          <DragDropContext onDragEnd={onDragEnd}>\n            <Droppable droppableId=\"sortable-field-mappings\" direction=\"horizontal\">\n              {(provided) => (\n                <div className={styles.operationList} ref={provided.innerRef} {...provided.droppableProps}>\n                  {operations.map((op, index) => {\n                    return (\n                      <OperationEditor\n                        key={op.id + JSON.stringify(op.params) + index}\n                        queryModeller={queryModeller}\n                        index={index}\n                        operation={op}\n                        query={query}\n                        datasource={datasource}\n                        onChange={onOperationChange}\n                        onRemove={onRemove}\n                        onToggle={onToggle}\n                        onRunQuery={onRunQuery}\n                        flash={opsToHighlight[index]}\n                        highlight={highlightedOp === op}\n                        timeRange={timeRange}\n                        isConflictingOperation={isConflictingOperation}\n                      />\n                    );\n                  })}\n                  {provided.placeholder}\n                </div>\n              )}\n            </Droppable>\n          </DragDropContext>\n        )}\n        <div className={styles.addButton}>\n          {cascaderOpen ? (\n            <Cascader\n              options={addOptions}\n              onSelect={onAddOperation}\n              onBlur={onCascaderBlur}\n              autoFocus={true}\n              alwaysOpen={true}\n              hideActiveLevelLabel={true}\n              placeholder={'Search'}\n            />\n          ) : (\n            <Button icon={'plus'} variant={'secondary'} onClick={() => setCascaderOpen(true)} title={'Add operation'}>\n              Operations\n            </Button>\n          )}\n        </div>\n      </EditorStack>\n    </EditorStack>\n  );\n}\n\n/**\n * Returns indexes of operations that should be highlighted. We check the diff of operations added but at the same time\n * we want to highlight operations only after the initial render, so we check for mounted state and calculate the diff\n * only after.\n * @param operations\n */\nfunction useOperationsHighlight(operations: QueryBuilderOperation[]) {\n  const isMounted = useMountedState();\n  const prevOperations = usePrevious(operations);\n\n  if (!isMounted()) {\n    return operations.map(() => false);\n  }\n\n  if (!prevOperations) {\n    return operations.map(() => true);\n  }\n\n  let newOps: boolean[] = [];\n\n  if (prevOperations.length - 1 === operations.length && operations.every((op) => prevOperations.includes(op))) {\n    // In case we remove one op and does not change any ops then don't highlight anything.\n    return operations.map(() => false);\n  }\n  if (prevOperations.length + 1 === operations.length && prevOperations.every((op) => operations.includes(op))) {\n    // If we add a single op just find it and highlight just that.\n    const newOp = operations.find((op) => !prevOperations.includes(op));\n    newOps = operations.map((op) => {\n      return op === newOp;\n    });\n  } else {\n    // Default diff of all ops.\n    newOps = operations.map((op, index) => {\n      return !isSameOp(op.id, prevOperations[index]?.id);\n    });\n  }\n  return newOps;\n}\n\nfunction isSameOp(op1?: string, op2?: string) {\n  return op1 === op2 || `__${op1}_by` === op2 || op1 === `__${op2}_by`;\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    heading: css({\n      label: 'heading',\n      fontSize: 12,\n      fontWeight: theme.typography.fontWeightMedium,\n      marginBottom: 0,\n    }),\n    operationList: css({\n      label: 'operationList',\n      display: 'flex',\n      flexWrap: 'wrap',\n      gap: theme.spacing(2),\n    }),\n    addButton: css({\n      label: 'addButton',\n      width: 126,\n      paddingBottom: theme.spacing(1),\n    }),\n  };\n};\n","import React from 'react';\nimport { css, cx } from '@emotion/css';\nimport Prism, { type Grammar } from 'prismjs';\n\nimport { type GrafanaTheme2, textUtil } from '@grafana/data';\nimport { useTheme2 } from '@grafana/ui';\n\ninterface Props {\n  query: string;\n  language: {\n    grammar: Grammar;\n    name: string;\n  };\n  className?: string;\n}\nexport function RawQuery({ query, language, className }: Props) {\n  const theme = useTheme2();\n  const styles = getStyles(theme);\n  const highlighted = Prism.highlight(query, language.grammar, language.name);\n\n  return (\n    <div\n      className={cx(styles.editorField, 'prism-syntax-highlight', className)}\n      aria-label=\"selector\"\n      dangerouslySetInnerHTML={{ __html: textUtil.sanitize(highlighted) }}\n    />\n  );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    editorField: css({\n      fontFamily: theme.typography.fontFamilyMonospace,\n      fontSize: theme.typography.bodySmall.fontSize,\n    }),\n  };\n};\n","import React from 'react';\nimport { type Grammar } from 'prismjs';\n\nimport { OperationExplainedBox } from './OperationExplainedBox';\nimport { RawQuery } from './RawQuery';\nimport { type QueryBuilderOperation, type VisualQuery, type VisualQueryModeller } from '../types';\n\ninterface Props<T extends VisualQuery> {\n  query: T;\n  queryModeller: VisualQueryModeller;\n  explainMode?: boolean;\n  stepNumber: number;\n  language: {\n    grammar: Grammar;\n    name: string;\n  };\n  onMouseEnter?: (op: QueryBuilderOperation, index: number) => void;\n  onMouseLeave?: (op: QueryBuilderOperation, index: number) => void;\n}\n\nexport function OperationListExplained<T extends VisualQuery>({\n  query,\n  queryModeller,\n  stepNumber,\n  language,\n  onMouseEnter,\n  onMouseLeave,\n}: Props<T>) {\n  return (\n    <>\n      {query.operations.map((op, index) => {\n        const def = queryModeller.getOperationDefinition(op.id);\n        if (!def) {\n          return `Operation ${op.id} not found`;\n        }\n        const title = def.renderer(op, def, queryModeller.innerQueryPlaceholder);\n        const body = def.explainHandler ? def.explainHandler(op, def) : (def.documentation ?? 'no docs');\n\n        return (\n          <div\n            key={index}\n            onMouseEnter={() => onMouseEnter?.(op, index)}\n            onMouseLeave={() => onMouseLeave?.(op, index)}\n          >\n            <OperationExplainedBox\n              stepNumber={index + stepNumber}\n              title={<RawQuery query={title} language={language} />}\n              markdown={body}\n            />\n          </div>\n        );\n      })}\n    </>\n  );\n}\n","import React from 'react';\nimport { css } from '@emotion/css';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\n\nimport { EditorStack } from '../../QueryEditor';\n\nexport function OperationsEditorRow({ children }: React.PropsWithChildren<{}>) {\n  const styles = useStyles2(getStyles);\n\n  return (\n    <div className={styles.root}>\n      <EditorStack gap={1}>{children}</EditorStack>\n    </div>\n  );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    root: css({\n      padding: theme.spacing(1, 1, 0, 1),\n      backgroundColor: theme.colors.background.secondary,\n      borderRadius: theme.shape.radius.default,\n    }),\n  };\n};\n","import { css } from '@emotion/css';\nimport React, { useMemo } from 'react';\n\nimport { type DataSourceApi, type GrafanaTheme2, type PanelData, type DataQuery } from '@grafana/data';\nimport { reportInteraction } from '@grafana/runtime';\nimport { Button, Tooltip, useStyles2 } from '@grafana/ui';\n\nimport { type VisualQuery, type VisualQueryModeller } from '../types';\n\ninterface Props<TVisualQuery extends VisualQuery, TDataQuery extends DataQuery> {\n  query: TVisualQuery;\n  datasource: DataSourceApi<TDataQuery>;\n  queryModeller: VisualQueryModeller;\n  buildVisualQueryFromString: (queryString: string) => { query: TVisualQuery };\n  buildDataQueryFromQueryString: (queryString: string) => TDataQuery;\n  buildQueryStringFromDataQuery: (dataQuery: TDataQuery) => string;\n  onChange: (update: TVisualQuery) => void;\n  data?: PanelData;\n}\n\nexport const QueryBuilderHints = <TVisualQuery extends VisualQuery, TDataQuery extends DataQuery>({\n  datasource,\n  query: visualQuery,\n  onChange,\n  data,\n  queryModeller,\n  buildVisualQueryFromString,\n  buildDataQueryFromQueryString,\n  buildQueryStringFromDataQuery,\n}: Props<TVisualQuery, TDataQuery>) => {\n  const styles = useStyles2(getStyles);\n\n  const hints = useMemo(() => {\n    const dataQuery = buildDataQueryFromQueryString(queryModeller.renderQuery(visualQuery));\n    // For now show only actionable hints\n    const hints = datasource.getQueryHints?.(dataQuery, data?.series || []).filter((hint) => hint.fix?.action);\n    return hints ?? [];\n  }, [datasource, visualQuery, data, queryModeller, buildDataQueryFromQueryString]);\n\n  return (\n    <>\n      {hints.length > 0 && (\n        <div className={styles.container}>\n          {hints.map((hint) => {\n            return (\n              <Tooltip content={`${hint.label} ${hint.fix?.label}`} key={hint.type}>\n                <Button\n                  onClick={() => {\n                    reportInteraction('grafana_query_builder_hints_clicked', {\n                      hint: hint.type,\n                      datasourceType: datasource.type,\n                    });\n\n                    if (hint?.fix?.action) {\n                      const dataQuery = buildDataQueryFromQueryString(queryModeller.renderQuery(visualQuery));\n                      const newQuery = datasource.modifyQuery?.(dataQuery, hint.fix.action);\n                      if (newQuery) {\n                        const newVisualQuery = buildVisualQueryFromString(\n                          buildQueryStringFromDataQuery(newQuery) ?? ''\n                        );\n                        return onChange(newVisualQuery.query);\n                      }\n                    }\n                  }}\n                  fill=\"outline\"\n                  size=\"sm\"\n                  className={styles.hint}\n                >\n                  hint: {hint.fix?.title || hint.fix?.action?.type.toLowerCase().replace('_', ' ')}\n                </Button>\n              </Tooltip>\n            );\n          })}\n        </div>\n      )}\n    </>\n  );\n};\n\nQueryBuilderHints.displayName = 'QueryBuilderHints';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    container: css`\n      display: flex;\n      align-items: start;\n    `,\n    hint: css`\n      margin-right: ${theme.spacing(1)};\n    `,\n  };\n};\n","import React from 'react';\nimport { RadioButtonGroup } from '@grafana/ui';\nimport { QueryEditorMode } from '../types';\n\ninterface Props {\n  mode: QueryEditorMode;\n  onChange: (mode: QueryEditorMode) => void;\n}\n\nconst editorModes = [\n  { label: 'Builder', value: QueryEditorMode.Builder },\n  { label: 'Code', value: QueryEditorMode.Code },\n];\n\nexport function QueryEditorModeToggle({ mode, onChange }: Props) {\n  return (\n    <div data-testid={'QueryEditorModeToggle'}>\n      <RadioButtonGroup options={editorModes} size=\"sm\" value={mode} onChange={onChange} />\n    </div>\n  );\n}\n","import { css } from '@emotion/css';\nimport { uniqueId } from 'lodash';\nimport React, { type HTMLProps, useRef } from 'react';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { Switch, useStyles2 } from '@grafana/ui';\n\nimport { EditorStack } from '../../QueryEditor';\n\ninterface Props extends Omit<HTMLProps<HTMLInputElement>, 'value' | 'ref'> {\n  value?: boolean;\n  label: string;\n}\n\nexport function QueryHeaderSwitch({ label, ...inputProps }: Props) {\n  const dashedLabel = label.replace(' ', '-');\n  const switchIdRef = useRef(uniqueId(`switch-${dashedLabel}`));\n  const styles = useStyles2(getStyles);\n\n  return (\n    <EditorStack gap={1}>\n      <label htmlFor={switchIdRef.current} className={styles.switchLabel}>\n        {label}\n      </label>\n      <Switch {...inputProps} id={switchIdRef.current} />\n    </EditorStack>\n  );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    switchLabel: css({\n      color: theme.colors.text.secondary,\n      cursor: 'pointer',\n      fontSize: theme.typography.bodySmall.fontSize,\n      '&:hover': {\n        color: theme.colors.text.primary,\n      },\n    }),\n  };\n};\n","import React from 'react';\nimport { css } from '@emotion/css';\nimport { useToggle } from 'react-use';\n\nimport { getValueFormat, type GrafanaTheme2 } from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport { Collapse, Icon, Tooltip, useStyles2 } from '@grafana/ui';\n\nimport { type QueryStats } from '../types';\nimport { EditorStack } from '../../QueryEditor';\n\ninterface Props {\n  title: string;\n  collapsedInfo: string[];\n  queryStats?: QueryStats | null;\n}\n\nexport function QueryOptionGroup({ title, children, collapsedInfo, queryStats }: React.PropsWithChildren<Props>) {\n  const [isOpen, toggleOpen] = useToggle(false);\n  const styles = useStyles2(getStyles);\n\n  return (\n    <div className={styles.wrapper}>\n      <Collapse\n        className={styles.collapse}\n        collapsible\n        isOpen={isOpen}\n        onToggle={toggleOpen}\n        label={\n          <EditorStack gap={0}>\n            <h6 className={styles.title}>{title}</h6>\n            {!isOpen && (\n              <div className={styles.description}>\n                {collapsedInfo.map((x, i) => (\n                  <span key={i}>{x}</span>\n                ))}\n              </div>\n            )}\n          </EditorStack>\n        }\n      >\n        <div className={styles.body}>{children}</div>\n      </Collapse>\n      <div className={styles.queryStatsWrap}>\n        {/**TODO: This is Loki logic that should eventually be moved to Loki */}\n        {queryStats && config.featureToggles.lokiQuerySplitting && (\n          <Tooltip content=\"Note: the query will be split into multiple parts and executed in sequence. Query limits will only apply each individual part.\">\n            <Icon tabIndex={0} name=\"info-circle\" className={styles.tooltip} size=\"sm\" />\n          </Tooltip>\n        )}\n\n        {queryStats && <p className={styles.stats}>{generateQueryStats(queryStats)}</p>}\n      </div>\n    </div>\n  );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    collapse: css({\n      backgroundColor: 'unset',\n      border: 'unset',\n      marginBottom: 0,\n\n      ['> button']: {\n        padding: theme.spacing(0, 1),\n      },\n    }),\n    wrapper: css({\n      width: '100%',\n      display: 'flex',\n      justifyContent: 'space-between',\n      alignItems: 'baseline',\n    }),\n    title: css({\n      flexGrow: 1,\n      overflow: 'hidden',\n      fontSize: theme.typography.bodySmall.fontSize,\n      fontWeight: theme.typography.fontWeightMedium,\n      margin: 0,\n    }),\n    description: css({\n      color: theme.colors.text.secondary,\n      fontSize: theme.typography.bodySmall.fontSize,\n      fontWeight: theme.typography.bodySmall.fontWeight,\n      paddingLeft: theme.spacing(2),\n      gap: theme.spacing(2),\n      display: 'flex',\n    }),\n    body: css({\n      display: 'flex',\n      gap: theme.spacing(2),\n      flexWrap: 'wrap',\n    }),\n    queryStatsWrap: css({\n      display: 'flex',\n      alignItems: 'center',\n      alignSelf: 'flex-start',\n      label: 'query-stats-wrap',\n      padding: theme.spacing(1),\n    }),\n    stats: css({\n      margin: '0px',\n      color: theme.colors.text.secondary,\n      fontSize: theme.typography.bodySmall.fontSize,\n    }),\n    tooltip: css({\n      marginRight: theme.spacing(0.25),\n    }),\n  };\n};\n\nconst generateQueryStats = (queryStats: QueryStats) => {\n  if (queryStats.message) {\n    return queryStats.message;\n  }\n\n  return `This query will process approximately ${convertUnits(queryStats)}.`;\n};\n\nconst convertUnits = (queryStats: QueryStats): string => {\n  const { text, suffix } = getValueFormat('bytes')(queryStats.bytes, 1);\n  return text + suffix;\n};\n","'use strict'\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n  'major',\n  'premajor',\n  'minor',\n  'preminor',\n  'patch',\n  'prepatch',\n  'prerelease',\n]\n\nmodule.exports = {\n  MAX_LENGTH,\n  MAX_SAFE_COMPONENT_LENGTH,\n  MAX_SAFE_BUILD_LENGTH,\n  MAX_SAFE_INTEGER,\n  RELEASE_TYPES,\n  SEMVER_SPEC_VERSION,\n  FLAG_INCLUDE_PRERELEASE: 0b001,\n  FLAG_LOOSE: 0b010,\n}\n","'use strict'\n\nconst debug = (\n  typeof process === 'object' &&\n  process.env &&\n  process.env.NODE_DEBUG &&\n  /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n  : () => {}\n\nmodule.exports = debug\n","'use strict'\n\nconst {\n  MAX_SAFE_COMPONENT_LENGTH,\n  MAX_SAFE_BUILD_LENGTH,\n  MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst safeSrc = exports.safeSrc = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n  ['\\\\s', 1],\n  ['\\\\d', MAX_LENGTH],\n  [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n  for (const [token, max] of safeRegexReplacements) {\n    value = value\n      .split(`${token}*`).join(`${token}{0,${max}}`)\n      .split(`${token}+`).join(`${token}{1,${max}}`)\n  }\n  return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n  const safe = makeSafeRegex(value)\n  const index = R++\n  debug(name, index, value)\n  t[name] = index\n  src[index] = value\n  safeSrc[index] = safe\n  re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n  safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n                   `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n                   `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n                        `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n                        `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n// Non-numeric identifiers include numeric identifiers but can be longer.\n// Therefore non-numeric identifiers must go first.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups.  The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n  src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n  src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifier, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:${src[t.PRERELEASE]})?${\n                     src[t.BUILD]}?` +\n                   `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:${src[t.PRERELEASELOOSE]})?${\n                          src[t.BUILD]}?` +\n                        `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n              '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n              `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n              `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n              `(?:${src[t.PRERELEASE]})?` +\n              `(?:${src[t.BUILD]})?` +\n              `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n                   `\\\\s+-\\\\s+` +\n                   `(${src[t.XRANGEPLAIN]})` +\n                   `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n                        `\\\\s+-\\\\s+` +\n                        `(${src[t.XRANGEPLAINLOOSE]})` +\n                        `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","'use strict'\n\n// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n  if (!options) {\n    return emptyOpts\n  }\n\n  if (typeof options !== 'object') {\n    return looseOption\n  }\n\n  return options\n}\nmodule.exports = parseOptions\n","'use strict'\n\nconst numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n  if (typeof a === 'number' && typeof b === 'number') {\n    return a === b ? 0 : a < b ? -1 : 1\n  }\n\n  const anum = numeric.test(a)\n  const bnum = numeric.test(b)\n\n  if (anum && bnum) {\n    a = +a\n    b = +b\n  }\n\n  return a === b ? 0\n    : (anum && !bnum) ? -1\n    : (bnum && !anum) ? 1\n    : a < b ? -1\n    : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n  compareIdentifiers,\n  rcompareIdentifiers,\n}\n","'use strict'\n\nconst debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\n\nconst isPrereleaseIdentifier = (prerelease, identifier) => {\n  const identifiers = identifier.split('.')\n  if (identifiers.length > prerelease.length) {\n    return false\n  }\n\n  for (let i = 0; i < identifiers.length; i++) {\n    if (compareIdentifiers(prerelease[i], identifiers[i]) !== 0) {\n      return false\n    }\n  }\n\n  return true\n}\n\nclass SemVer {\n  constructor (version, options) {\n    options = parseOptions(options)\n\n    if (version instanceof SemVer) {\n      if (version.loose === !!options.loose &&\n        version.includePrerelease === !!options.includePrerelease) {\n        return version\n      } else {\n        version = version.version\n      }\n    } else if (typeof version !== 'string') {\n      throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n    }\n\n    if (version.length > MAX_LENGTH) {\n      throw new TypeError(\n        `version is longer than ${MAX_LENGTH} characters`\n      )\n    }\n\n    debug('SemVer', version, options)\n    this.options = options\n    this.loose = !!options.loose\n    // this isn't actually relevant for versions, but keep it so that we\n    // don't run into trouble passing this.options around.\n    this.includePrerelease = !!options.includePrerelease\n\n    const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n    if (!m) {\n      throw new TypeError(`Invalid Version: ${version}`)\n    }\n\n    this.raw = version\n\n    // these are actually numbers\n    this.major = +m[1]\n    this.minor = +m[2]\n    this.patch = +m[3]\n\n    if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n      throw new TypeError('Invalid major version')\n    }\n\n    if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n      throw new TypeError('Invalid minor version')\n    }\n\n    if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n      throw new TypeError('Invalid patch version')\n    }\n\n    // numberify any prerelease numeric ids\n    if (!m[4]) {\n      this.prerelease = []\n    } else {\n      this.prerelease = m[4].split('.').map((id) => {\n        if (/^[0-9]+$/.test(id)) {\n          const num = +id\n          if (num >= 0 && num < MAX_SAFE_INTEGER) {\n            return num\n          }\n        }\n        return id\n      })\n    }\n\n    this.build = m[5] ? m[5].split('.') : []\n    this.format()\n  }\n\n  format () {\n    this.version = `${this.major}.${this.minor}.${this.patch}`\n    if (this.prerelease.length) {\n      this.version += `-${this.prerelease.join('.')}`\n    }\n    return this.version\n  }\n\n  toString () {\n    return this.version\n  }\n\n  compare (other) {\n    debug('SemVer.compare', this.version, this.options, other)\n    if (!(other instanceof SemVer)) {\n      if (typeof other === 'string' && other === this.version) {\n        return 0\n      }\n      other = new SemVer(other, this.options)\n    }\n\n    if (other.version === this.version) {\n      return 0\n    }\n\n    return this.compareMain(other) || this.comparePre(other)\n  }\n\n  compareMain (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    if (this.major < other.major) {\n      return -1\n    }\n    if (this.major > other.major) {\n      return 1\n    }\n    if (this.minor < other.minor) {\n      return -1\n    }\n    if (this.minor > other.minor) {\n      return 1\n    }\n    if (this.patch < other.patch) {\n      return -1\n    }\n    if (this.patch > other.patch) {\n      return 1\n    }\n    return 0\n  }\n\n  comparePre (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    // NOT having a prerelease is > having one\n    if (this.prerelease.length && !other.prerelease.length) {\n      return -1\n    } else if (!this.prerelease.length && other.prerelease.length) {\n      return 1\n    } else if (!this.prerelease.length && !other.prerelease.length) {\n      return 0\n    }\n\n    let i = 0\n    do {\n      const a = this.prerelease[i]\n      const b = other.prerelease[i]\n      debug('prerelease compare', i, a, b)\n      if (a === undefined && b === undefined) {\n        return 0\n      } else if (b === undefined) {\n        return 1\n      } else if (a === undefined) {\n        return -1\n      } else if (a === b) {\n        continue\n      } else {\n        return compareIdentifiers(a, b)\n      }\n    } while (++i)\n  }\n\n  compareBuild (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    let i = 0\n    do {\n      const a = this.build[i]\n      const b = other.build[i]\n      debug('build compare', i, a, b)\n      if (a === undefined && b === undefined) {\n        return 0\n      } else if (b === undefined) {\n        return 1\n      } else if (a === undefined) {\n        return -1\n      } else if (a === b) {\n        continue\n      } else {\n        return compareIdentifiers(a, b)\n      }\n    } while (++i)\n  }\n\n  // preminor will bump the version up to the next minor release, and immediately\n  // down to pre-release. premajor and prepatch work the same way.\n  inc (release, identifier, identifierBase) {\n    if (release.startsWith('pre')) {\n      if (!identifier && identifierBase === false) {\n        throw new Error('invalid increment argument: identifier is empty')\n      }\n      // Avoid an invalid semver results\n      if (identifier) {\n        const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE])\n        if (!match || match[1] !== identifier) {\n          throw new Error(`invalid identifier: ${identifier}`)\n        }\n      }\n    }\n\n    switch (release) {\n      case 'premajor':\n        this.prerelease.length = 0\n        this.patch = 0\n        this.minor = 0\n        this.major++\n        this.inc('pre', identifier, identifierBase)\n        break\n      case 'preminor':\n        this.prerelease.length = 0\n        this.patch = 0\n        this.minor++\n        this.inc('pre', identifier, identifierBase)\n        break\n      case 'prepatch':\n        // If this is already a prerelease, it will bump to the next version\n        // drop any prereleases that might already exist, since they are not\n        // relevant at this point.\n        this.prerelease.length = 0\n        this.inc('patch', identifier, identifierBase)\n        this.inc('pre', identifier, identifierBase)\n        break\n      // If the input is a non-prerelease version, this acts the same as\n      // prepatch.\n      case 'prerelease':\n        if (this.prerelease.length === 0) {\n          this.inc('patch', identifier, identifierBase)\n        }\n        this.inc('pre', identifier, identifierBase)\n        break\n      case 'release':\n        if (this.prerelease.length === 0) {\n          throw new Error(`version ${this.raw} is not a prerelease`)\n        }\n        this.prerelease.length = 0\n        break\n\n      case 'major':\n        // If this is a pre-major version, bump up to the same major version.\n        // Otherwise increment major.\n        // 1.0.0-5 bumps to 1.0.0\n        // 1.1.0 bumps to 2.0.0\n        if (\n          this.minor !== 0 ||\n          this.patch !== 0 ||\n          this.prerelease.length === 0\n        ) {\n          this.major++\n        }\n        this.minor = 0\n        this.patch = 0\n        this.prerelease = []\n        break\n      case 'minor':\n        // If this is a pre-minor version, bump up to the same minor version.\n        // Otherwise increment minor.\n        // 1.2.0-5 bumps to 1.2.0\n        // 1.2.1 bumps to 1.3.0\n        if (this.patch !== 0 || this.prerelease.length === 0) {\n          this.minor++\n        }\n        this.patch = 0\n        this.prerelease = []\n        break\n      case 'patch':\n        // If this is not a pre-release version, it will increment the patch.\n        // If it is a pre-release it will bump up to the same patch version.\n        // 1.2.0-5 patches to 1.2.0\n        // 1.2.0 patches to 1.2.1\n        if (this.prerelease.length === 0) {\n          this.patch++\n        }\n        this.prerelease = []\n        break\n      // This probably shouldn't be used publicly.\n      // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n      case 'pre': {\n        const base = Number(identifierBase) ? 1 : 0\n\n        if (this.prerelease.length === 0) {\n          this.prerelease = [base]\n        } else {\n          let i = this.prerelease.length\n          while (--i >= 0) {\n            if (typeof this.prerelease[i] === 'number') {\n              this.prerelease[i]++\n              i = -2\n            }\n          }\n          if (i === -1) {\n            // didn't increment anything\n            if (identifier === this.prerelease.join('.') && identifierBase === false) {\n              throw new Error('invalid increment argument: identifier already exists')\n            }\n            this.prerelease.push(base)\n          }\n        }\n        if (identifier) {\n          // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n          // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n          let prerelease = [identifier, base]\n          if (identifierBase === false) {\n            prerelease = [identifier]\n          }\n          if (isPrereleaseIdentifier(this.prerelease, identifier)) {\n            const prereleaseBase = this.prerelease[identifier.split('.').length]\n            if (isNaN(prereleaseBase)) {\n              this.prerelease = prerelease\n            }\n          } else {\n            this.prerelease = prerelease\n          }\n        }\n        break\n      }\n      default:\n        throw new Error(`invalid increment argument: ${release}`)\n    }\n    this.raw = this.format()\n    if (this.build.length) {\n      this.raw += `+${this.build.join('.')}`\n    }\n    return this\n  }\n}\n\nmodule.exports = SemVer\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n  if (version instanceof SemVer) {\n    return version\n  }\n  try {\n    return new SemVer(version, options)\n  } catch (er) {\n    if (!throwErrors) {\n      return null\n    }\n    throw er\n  }\n}\n\nmodule.exports = parse\n","'use strict'\n\nconst parse = require('./parse')\nconst valid = (version, options) => {\n  const v = parse(version, options)\n  return v ? v.version : null\n}\nmodule.exports = valid\n","'use strict'\n\nconst parse = require('./parse')\nconst clean = (version, options) => {\n  const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n  return s ? s.version : null\n}\nmodule.exports = clean\n","'use strict'\n\nconst SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n  if (typeof (options) === 'string') {\n    identifierBase = identifier\n    identifier = options\n    options = undefined\n  }\n\n  try {\n    return new SemVer(\n      version instanceof SemVer ? version.version : version,\n      options\n    ).inc(release, identifier, identifierBase).version\n  } catch (er) {\n    return null\n  }\n}\nmodule.exports = inc\n","'use strict'\n\nconst parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n  const v1 = parse(version1, null, true)\n  const v2 = parse(version2, null, true)\n  const comparison = v1.compare(v2)\n\n  if (comparison === 0) {\n    return null\n  }\n\n  const v1Higher = comparison > 0\n  const highVersion = v1Higher ? v1 : v2\n  const lowVersion = v1Higher ? v2 : v1\n  const highHasPre = !!highVersion.prerelease.length\n  const lowHasPre = !!lowVersion.prerelease.length\n\n  if (lowHasPre && !highHasPre) {\n    // Going from prerelease -> no prerelease requires some special casing\n\n    // If the low version has only a major, then it will always be a major\n    // Some examples:\n    // 1.0.0-1 -> 1.0.0\n    // 1.0.0-1 -> 1.1.1\n    // 1.0.0-1 -> 2.0.0\n    if (!lowVersion.patch && !lowVersion.minor) {\n      return 'major'\n    }\n\n    // If the main part has no difference\n    if (lowVersion.compareMain(highVersion) === 0) {\n      if (lowVersion.minor && !lowVersion.patch) {\n        return 'minor'\n      }\n      return 'patch'\n    }\n  }\n\n  // add the `pre` prefix if we are going to a prerelease version\n  const prefix = highHasPre ? 'pre' : ''\n\n  if (v1.major !== v2.major) {\n    return prefix + 'major'\n  }\n\n  if (v1.minor !== v2.minor) {\n    return prefix + 'minor'\n  }\n\n  if (v1.patch !== v2.patch) {\n    return prefix + 'patch'\n  }\n\n  // high and low are prereleases\n  return 'prerelease'\n}\n\nmodule.exports = diff\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","'use strict'\n\nconst parse = require('./parse')\nconst prerelease = (version, options) => {\n  const parsed = parse(version, options)\n  return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n  new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","'use strict'\n\nconst compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","'use strict'\n\nconst compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n  const versionA = new SemVer(a, loose)\n  const versionB = new SemVer(b, loose)\n  return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","'use strict'\n\nconst compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","'use strict'\n\nconst compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","'use strict'\n\nconst compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","'use strict'\n\nconst compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","'use strict'\n\nconst compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","'use strict'\n\nconst compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","'use strict'\n\nconst eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n  switch (op) {\n    case '===':\n      if (typeof a === 'object') {\n        a = a.version\n      }\n      if (typeof b === 'object') {\n        b = b.version\n      }\n      return a === b\n\n    case '!==':\n      if (typeof a === 'object') {\n        a = a.version\n      }\n      if (typeof b === 'object') {\n        b = b.version\n      }\n      return a !== b\n\n    case '':\n    case '=':\n    case '==':\n      return eq(a, b, loose)\n\n    case '!=':\n      return neq(a, b, loose)\n\n    case '>':\n      return gt(a, b, loose)\n\n    case '>=':\n      return gte(a, b, loose)\n\n    case '<':\n      return lt(a, b, loose)\n\n    case '<=':\n      return lte(a, b, loose)\n\n    default:\n      throw new TypeError(`Invalid operator: ${op}`)\n  }\n}\nmodule.exports = cmp\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n  if (version instanceof SemVer) {\n    return version\n  }\n\n  if (typeof version === 'number') {\n    version = String(version)\n  }\n\n  if (typeof version !== 'string') {\n    return null\n  }\n\n  options = options || {}\n\n  let match = null\n  if (!options.rtl) {\n    match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n  } else {\n    // Find the right-most coercible string that does not share\n    // a terminus with a more left-ward coercible string.\n    // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n    // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n    //\n    // Walk through the string checking with a /g regexp\n    // Manually set the index so as to pick up overlapping matches.\n    // Stop when we get a match that ends at the string end, since no\n    // coercible string can be more right-ward without the same terminus.\n    const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n    let next\n    while ((next = coerceRtlRegex.exec(version)) &&\n        (!match || match.index + match[0].length !== version.length)\n    ) {\n      if (!match ||\n            next.index + next[0].length !== match.index + match[0].length) {\n        match = next\n      }\n      coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n    }\n    // leave it in a clean state\n    coerceRtlRegex.lastIndex = -1\n  }\n\n  if (match === null) {\n    return null\n  }\n\n  const major = match[2]\n  const minor = match[3] || '0'\n  const patch = match[4] || '0'\n  const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n  const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n  return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n","'use strict'\n\nconst parse = require('./parse')\nconst constants = require('../internal/constants')\nconst SemVer = require('../classes/semver')\n\nconst truncate = (version, truncation, options) => {\n  if (!constants.RELEASE_TYPES.includes(truncation)) {\n    return null\n  }\n\n  const clonedVersion = cloneInputVersion(version, options)\n  return clonedVersion && doTruncation(clonedVersion, truncation)\n}\n\nconst cloneInputVersion = (version, options) => {\n  const versionStringToParse = (\n    version instanceof SemVer ? version.version : version\n  )\n\n  return parse(versionStringToParse, options)\n}\n\nconst doTruncation = (version, truncation) => {\n  if (isPrerelease(truncation)) {\n    return version.version\n  }\n\n  version.prerelease = []\n\n  switch (truncation) {\n    case 'major':\n      version.minor = 0\n      version.patch = 0\n      break\n    case 'minor':\n      version.patch = 0\n      break\n  }\n\n  return version.format()\n}\n\nconst isPrerelease = (type) => {\n  return type.startsWith('pre')\n}\n\nmodule.exports = truncate\n","'use strict'\n\nclass LRUCache {\n  constructor () {\n    this.max = 1000\n    this.map = new Map()\n  }\n\n  get (key) {\n    const value = this.map.get(key)\n    if (value === undefined) {\n      return undefined\n    } else {\n      // Remove the key from the map and add it to the end\n      this.map.delete(key)\n      this.map.set(key, value)\n      return value\n    }\n  }\n\n  delete (key) {\n    return this.map.delete(key)\n  }\n\n  set (key, value) {\n    const deleted = this.delete(key)\n\n    if (!deleted && value !== undefined) {\n      // If cache is full, delete the least recently used item\n      if (this.map.size >= this.max) {\n        const firstKey = this.map.keys().next().value\n        this.delete(firstKey)\n      }\n\n      this.map.set(key, value)\n    }\n\n    return this\n  }\n}\n\nmodule.exports = LRUCache\n","'use strict'\n\nconst SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n  constructor (range, options) {\n    options = parseOptions(options)\n\n    if (range instanceof Range) {\n      if (\n        range.loose === !!options.loose &&\n        range.includePrerelease === !!options.includePrerelease\n      ) {\n        return range\n      } else {\n        return new Range(range.raw, options)\n      }\n    }\n\n    if (range instanceof Comparator) {\n      // just put it in the set and return\n      this.raw = range.value\n      this.set = [[range]]\n      this.formatted = undefined\n      return this\n    }\n\n    this.options = options\n    this.loose = !!options.loose\n    this.includePrerelease = !!options.includePrerelease\n\n    // First reduce all whitespace as much as possible so we do not have to rely\n    // on potentially slow regexes like \\s*. This is then stored and used for\n    // future error messages as well.\n    this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n    // First, split on ||\n    this.set = this.raw\n      .split('||')\n      // map the range to a 2d array of comparators\n      .map(r => this.parseRange(r.trim()))\n      // throw out any comparator lists that are empty\n      // this generally means that it was not a valid range, which is allowed\n      // in loose mode, but will still throw if the WHOLE range is invalid.\n      .filter(c => c.length)\n\n    if (!this.set.length) {\n      throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n    }\n\n    // if we have any that are not the null set, throw out null sets.\n    if (this.set.length > 1) {\n      // keep the first one, in case they're all null sets\n      const first = this.set[0]\n      this.set = this.set.filter(c => !isNullSet(c[0]))\n      if (this.set.length === 0) {\n        this.set = [first]\n      } else if (this.set.length > 1) {\n        // if we have any that are *, then the range is just *\n        for (const c of this.set) {\n          if (c.length === 1 && isAny(c[0])) {\n            this.set = [c]\n            break\n          }\n        }\n      }\n    }\n\n    this.formatted = undefined\n  }\n\n  get range () {\n    if (this.formatted === undefined) {\n      this.formatted = ''\n      for (let i = 0; i < this.set.length; i++) {\n        if (i > 0) {\n          this.formatted += '||'\n        }\n        const comps = this.set[i]\n        for (let k = 0; k < comps.length; k++) {\n          if (k > 0) {\n            this.formatted += ' '\n          }\n          this.formatted += comps[k].toString().trim()\n        }\n      }\n    }\n    return this.formatted\n  }\n\n  format () {\n    return this.range\n  }\n\n  toString () {\n    return this.range\n  }\n\n  parseRange (range) {\n    // strip build metadata so it can't bleed into the version\n    range = range.replace(BUILDSTRIPRE, '')\n\n    // memoize range parsing for performance.\n    // this is a very hot path, and fully deterministic.\n    const memoOpts =\n      (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n      (this.options.loose && FLAG_LOOSE)\n    const memoKey = memoOpts + ':' + range\n    const cached = cache.get(memoKey)\n    if (cached) {\n      return cached\n    }\n\n    const loose = this.options.loose\n    // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n    const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n    range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n    debug('hyphen replace', range)\n\n    // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n    range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n    debug('comparator trim', range)\n\n    // `~ 1.2.3` => `~1.2.3`\n    range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n    debug('tilde trim', range)\n\n    // `^ 1.2.3` => `^1.2.3`\n    range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n    debug('caret trim', range)\n\n    // At this point, the range is completely trimmed and\n    // ready to be split into comparators.\n\n    let rangeList = range\n      .split(' ')\n      .map(comp => parseComparator(comp, this.options))\n      .join(' ')\n      .split(/\\s+/)\n      // >=0.0.0 is equivalent to *\n      .map(comp => replaceGTE0(comp, this.options))\n\n    if (loose) {\n      // in loose mode, throw out any that are not valid comparators\n      rangeList = rangeList.filter(comp => {\n        debug('loose invalid filter', comp, this.options)\n        return !!comp.match(re[t.COMPARATORLOOSE])\n      })\n    }\n    debug('range list', rangeList)\n\n    // if any comparators are the null set, then replace with JUST null set\n    // if more than one comparator, remove any * comparators\n    // also, don't include the same comparator more than once\n    const rangeMap = new Map()\n    const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n    for (const comp of comparators) {\n      if (isNullSet(comp)) {\n        return [comp]\n      }\n      rangeMap.set(comp.value, comp)\n    }\n    if (rangeMap.size > 1 && rangeMap.has('')) {\n      rangeMap.delete('')\n    }\n\n    const result = [...rangeMap.values()]\n    cache.set(memoKey, result)\n    return result\n  }\n\n  intersects (range, options) {\n    if (!(range instanceof Range)) {\n      throw new TypeError('a Range is required')\n    }\n\n    return this.set.some((thisComparators) => {\n      return (\n        isSatisfiable(thisComparators, options) &&\n        range.set.some((rangeComparators) => {\n          return (\n            isSatisfiable(rangeComparators, options) &&\n            thisComparators.every((thisComparator) => {\n              return rangeComparators.every((rangeComparator) => {\n                return thisComparator.intersects(rangeComparator, options)\n              })\n            })\n          )\n        })\n      )\n    })\n  }\n\n  // if ANY of the sets match ALL of its comparators, then pass\n  test (version) {\n    if (!version) {\n      return false\n    }\n\n    if (typeof version === 'string') {\n      try {\n        version = new SemVer(version, this.options)\n      } catch (er) {\n        return false\n      }\n    }\n\n    for (let i = 0; i < this.set.length; i++) {\n      if (testSet(this.set[i], version, this.options)) {\n        return true\n      }\n    }\n    return false\n  }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n  safeRe: re,\n  src,\n  t,\n  comparatorTrimReplace,\n  tildeTrimReplace,\n  caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\n// unbounded global build-metadata stripper used by parseRange\nconst BUILDSTRIPRE = new RegExp(src[t.BUILD], 'g')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n  let result = true\n  const remainingComparators = comparators.slice()\n  let testComparator = remainingComparators.pop()\n\n  while (result && remainingComparators.length) {\n    result = remainingComparators.every((otherComparator) => {\n      return testComparator.intersects(otherComparator, options)\n    })\n\n    testComparator = remainingComparators.pop()\n  }\n\n  return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n  comp = comp.replace(re[t.BUILD], '')\n  debug('comp', comp, options)\n  comp = replaceCarets(comp, options)\n  debug('caret', comp)\n  comp = replaceTildes(comp, options)\n  debug('tildes', comp)\n  comp = replaceXRanges(comp, options)\n  debug('xrange', comp)\n  comp = replaceStars(comp, options)\n  debug('stars', comp)\n  return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\nconst invalidXRangeOrder = (M, m, p) => (\n  (isX(M) && !isX(m)) ||\n  (isX(m) && p && !isX(p))\n)\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n  return comp\n    .trim()\n    .split(/\\s+/)\n    .map((c) => replaceTilde(c, options))\n    .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n  const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n  // if we're including prereleases in the match, then the lower bound is\n  // -0, the lowest possible prerelease value, just like x-ranges and carets.\n  // this keeps `~1.2` equivalent to the `1.2.x` x-range it's documented as.\n  const z = options.includePrerelease ? '-0' : ''\n  return comp.replace(r, (_, M, m, p, pr) => {\n    debug('tilde', comp, _, M, m, p, pr)\n    let ret\n\n    if (isX(M)) {\n      ret = ''\n    } else if (isX(m)) {\n      ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n    } else if (isX(p)) {\n      // ~1.2 == >=1.2.0 <1.3.0-0\n      ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n    } else if (pr) {\n      debug('replaceTilde pr', pr)\n      ret = `>=${M}.${m}.${p}-${pr\n      } <${M}.${+m + 1}.0-0`\n    } else {\n      // ~1.2.3 == >=1.2.3 <1.3.0-0\n      ret = `>=${M}.${m}.${p\n      } <${M}.${+m + 1}.0-0`\n    }\n\n    debug('tilde return', ret)\n    return ret\n  })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n  return comp\n    .trim()\n    .split(/\\s+/)\n    .map((c) => replaceCaret(c, options))\n    .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n  debug('caret', comp, options)\n  const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n  const z = options.includePrerelease ? '-0' : ''\n  return comp.replace(r, (_, M, m, p, pr) => {\n    debug('caret', comp, _, M, m, p, pr)\n    let ret\n\n    if (isX(M)) {\n      ret = ''\n    } else if (isX(m)) {\n      ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n    } else if (isX(p)) {\n      if (M === '0') {\n        ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n      } else {\n        ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n      }\n    } else if (pr) {\n      debug('replaceCaret pr', pr)\n      if (M === '0') {\n        if (m === '0') {\n          ret = `>=${M}.${m}.${p}-${pr\n          } <${M}.${m}.${+p + 1}-0`\n        } else {\n          ret = `>=${M}.${m}.${p}-${pr\n          } <${M}.${+m + 1}.0-0`\n        }\n      } else {\n        ret = `>=${M}.${m}.${p}-${pr\n        } <${+M + 1}.0.0-0`\n      }\n    } else {\n      debug('no pr')\n      if (M === '0') {\n        if (m === '0') {\n          ret = `>=${M}.${m}.${p\n          } <${M}.${m}.${+p + 1}-0`\n        } else {\n          ret = `>=${M}.${m}.${p\n          } <${M}.${+m + 1}.0-0`\n        }\n      } else {\n        ret = `>=${M}.${m}.${p\n        } <${+M + 1}.0.0-0`\n      }\n    }\n\n    debug('caret return', ret)\n    return ret\n  })\n}\n\nconst replaceXRanges = (comp, options) => {\n  debug('replaceXRanges', comp, options)\n  return comp\n    .split(/\\s+/)\n    .map((c) => replaceXRange(c, options))\n    .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n  comp = comp.trim()\n  const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n  return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n    debug('xRange', comp, ret, gtlt, M, m, p, pr)\n    if (invalidXRangeOrder(M, m, p)) {\n      return comp\n    }\n\n    const xM = isX(M)\n    const xm = xM || isX(m)\n    const xp = xm || isX(p)\n    const anyX = xp\n\n    if (gtlt === '=' && anyX) {\n      gtlt = ''\n    }\n\n    // if we're including prereleases in the match, then we need\n    // to fix this to -0, the lowest possible prerelease value\n    pr = options.includePrerelease ? '-0' : ''\n\n    if (xM) {\n      if (gtlt === '>' || gtlt === '<') {\n        // nothing is allowed\n        ret = '<0.0.0-0'\n      } else {\n        // nothing is forbidden\n        ret = '*'\n      }\n    } else if (gtlt && anyX) {\n      // we know patch is an x, because we have any x at all.\n      // replace X with 0\n      if (xm) {\n        m = 0\n      }\n      p = 0\n\n      if (gtlt === '>') {\n        // >1 => >=2.0.0\n        // >1.2 => >=1.3.0\n        gtlt = '>='\n        if (xm) {\n          M = +M + 1\n          m = 0\n          p = 0\n        } else {\n          m = +m + 1\n          p = 0\n        }\n      } else if (gtlt === '<=') {\n        // <=0.7.x is actually <0.8.0, since any 0.7.x should\n        // pass.  Similarly, <=7.x is actually <8.0.0, etc.\n        gtlt = '<'\n        if (xm) {\n          M = +M + 1\n        } else {\n          m = +m + 1\n        }\n      }\n\n      if (gtlt === '<') {\n        pr = '-0'\n      }\n\n      ret = `${gtlt + M}.${m}.${p}${pr}`\n    } else if (xm) {\n      ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n    } else if (xp) {\n      ret = `>=${M}.${m}.0${pr\n      } <${M}.${+m + 1}.0-0`\n    }\n\n    debug('xRange return', ret)\n\n    return ret\n  })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n  debug('replaceStars', comp, options)\n  // Looseness is ignored here.  star is always as loose as it gets!\n  return comp\n    .trim()\n    .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n  debug('replaceGTE0', comp, options)\n  return comp\n    .trim()\n    .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n  from, fM, fm, fp, fpr, fb,\n  to, tM, tm, tp, tpr) => {\n  if (isX(fM)) {\n    from = ''\n  } else if (isX(fm)) {\n    from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n  } else if (isX(fp)) {\n    from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n  } else if (fpr) {\n    from = `>=${from}`\n  } else {\n    from = `>=${from}${incPr ? '-0' : ''}`\n  }\n\n  if (isX(tM)) {\n    to = ''\n  } else if (isX(tm)) {\n    to = `<${+tM + 1}.0.0-0`\n  } else if (isX(tp)) {\n    to = `<${tM}.${+tm + 1}.0-0`\n  } else if (tpr) {\n    to = `<=${tM}.${tm}.${tp}-${tpr}`\n  } else if (incPr) {\n    to = `<${tM}.${tm}.${+tp + 1}-0`\n  } else {\n    to = `<=${to}`\n  }\n\n  return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n  for (let i = 0; i < set.length; i++) {\n    if (!set[i].test(version)) {\n      return false\n    }\n  }\n\n  if (version.prerelease.length && !options.includePrerelease) {\n    // Find the set of versions that are allowed to have prereleases\n    // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n    // That should allow `1.2.3-pr.2` to pass.\n    // However, `1.2.4-alpha.notready` should NOT be allowed,\n    // even though it's within the range set by the comparators.\n    for (let i = 0; i < set.length; i++) {\n      debug(set[i].semver)\n      if (set[i].semver === Comparator.ANY) {\n        continue\n      }\n\n      if (set[i].semver.prerelease.length > 0) {\n        const allowed = set[i].semver\n        if (allowed.major === version.major &&\n            allowed.minor === version.minor &&\n            allowed.patch === version.patch) {\n          return true\n        }\n      }\n    }\n\n    // Version has a -pre, but it's not one of the ones we like.\n    return false\n  }\n\n  return true\n}\n","'use strict'\n\nconst ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n  static get ANY () {\n    return ANY\n  }\n\n  constructor (comp, options) {\n    options = parseOptions(options)\n\n    if (comp instanceof Comparator) {\n      if (comp.loose === !!options.loose) {\n        return comp\n      } else {\n        comp = comp.value\n      }\n    }\n\n    comp = comp.trim().split(/\\s+/).join(' ')\n    debug('comparator', comp, options)\n    this.options = options\n    this.loose = !!options.loose\n    this.parse(comp)\n\n    if (this.semver === ANY) {\n      this.value = ''\n    } else {\n      this.value = this.operator + this.semver.version\n    }\n\n    debug('comp', this)\n  }\n\n  parse (comp) {\n    const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n    const m = comp.match(r)\n\n    if (!m) {\n      throw new TypeError(`Invalid comparator: ${comp}`)\n    }\n\n    this.operator = m[1] !== undefined ? m[1] : ''\n    if (this.operator === '=') {\n      this.operator = ''\n    }\n\n    // if it literally is just '>' or '' then allow anything.\n    if (!m[2]) {\n      this.semver = ANY\n    } else {\n      this.semver = new SemVer(m[2], this.options.loose)\n    }\n  }\n\n  toString () {\n    return this.value\n  }\n\n  test (version) {\n    debug('Comparator.test', version, this.options.loose)\n\n    if (this.semver === ANY || version === ANY) {\n      return true\n    }\n\n    if (typeof version === 'string') {\n      try {\n        version = new SemVer(version, this.options)\n      } catch (er) {\n        return false\n      }\n    }\n\n    return cmp(version, this.operator, this.semver, this.options)\n  }\n\n  intersects (comp, options) {\n    if (!(comp instanceof Comparator)) {\n      throw new TypeError('a Comparator is required')\n    }\n\n    if (this.operator === '') {\n      if (this.value === '') {\n        return true\n      }\n      return new Range(comp.value, options).test(this.value)\n    } else if (comp.operator === '') {\n      if (comp.value === '') {\n        return true\n      }\n      return new Range(this.value, options).test(comp.semver)\n    }\n\n    options = parseOptions(options)\n\n    // Special cases where nothing can possibly be lower\n    if (options.includePrerelease &&\n      (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n      return false\n    }\n    if (!options.includePrerelease &&\n      (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n      return false\n    }\n\n    // Same direction increasing (> or >=)\n    if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n      return true\n    }\n    // Same direction decreasing (< or <=)\n    if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n      return true\n    }\n    // same SemVer and both sides are inclusive (<= or >=)\n    if (\n      (this.semver.version === comp.semver.version) &&\n      this.operator.includes('=') && comp.operator.includes('=')) {\n      return true\n    }\n    // opposite directions less than\n    if (cmp(this.semver, '<', comp.semver, options) &&\n      this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n      return true\n    }\n    // opposite directions greater than\n    if (cmp(this.semver, '>', comp.semver, options) &&\n      this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n      return true\n    }\n    return false\n  }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","'use strict'\n\nconst Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n  try {\n    range = new Range(range, options)\n  } catch (er) {\n    return false\n  }\n  return range.test(version)\n}\nmodule.exports = satisfies\n","'use strict'\n\nconst Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n  new Range(range, options).set\n    .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n  let max = null\n  let maxSV = null\n  let rangeObj = null\n  try {\n    rangeObj = new Range(range, options)\n  } catch (er) {\n    return null\n  }\n  versions.forEach((v) => {\n    if (rangeObj.test(v)) {\n      // satisfies(v, range, options)\n      if (!max || maxSV.compare(v) === -1) {\n        // compare(max, v, true)\n        max = v\n        maxSV = new SemVer(max, options)\n      }\n    }\n  })\n  return max\n}\nmodule.exports = maxSatisfying\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n  let min = null\n  let minSV = null\n  let rangeObj = null\n  try {\n    rangeObj = new Range(range, options)\n  } catch (er) {\n    return null\n  }\n  versions.forEach((v) => {\n    if (rangeObj.test(v)) {\n      // satisfies(v, range, options)\n      if (!min || minSV.compare(v) === 1) {\n        // compare(min, v, true)\n        min = v\n        minSV = new SemVer(min, options)\n      }\n    }\n  })\n  return min\n}\nmodule.exports = minSatisfying\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n  range = new Range(range, loose)\n\n  let minver = new SemVer('0.0.0')\n  if (range.test(minver)) {\n    return minver\n  }\n\n  minver = new SemVer('0.0.0-0')\n  if (range.test(minver)) {\n    return minver\n  }\n\n  minver = null\n  for (let i = 0; i < range.set.length; ++i) {\n    const comparators = range.set[i]\n\n    let setMin = null\n    comparators.forEach((comparator) => {\n      // Clone to avoid manipulating the comparator's semver object.\n      const compver = new SemVer(comparator.semver.version)\n      switch (comparator.operator) {\n        case '>':\n          if (compver.prerelease.length === 0) {\n            compver.patch++\n          } else {\n            compver.prerelease.push(0)\n          }\n          compver.raw = compver.format()\n          /* fallthrough */\n        case '':\n        case '>=':\n          if (!setMin || gt(compver, setMin)) {\n            setMin = compver\n          }\n          break\n        case '<':\n        case '<=':\n          /* Ignore maximum versions */\n          break\n        /* istanbul ignore next */\n        default:\n          throw new Error(`Unexpected operation: ${comparator.operator}`)\n      }\n    })\n    if (setMin && (!minver || gt(minver, setMin))) {\n      minver = setMin\n    }\n  }\n\n  if (minver && range.test(minver)) {\n    return minver\n  }\n\n  return null\n}\nmodule.exports = minVersion\n","'use strict'\n\nconst Range = require('../classes/range')\nconst validRange = (range, options) => {\n  try {\n    // Return '*' instead of '' so that truthiness works.\n    // This will throw if it's invalid anyway\n    return new Range(range, options).range || '*'\n  } catch (er) {\n    return null\n  }\n}\nmodule.exports = validRange\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n  version = new SemVer(version, options)\n  range = new Range(range, options)\n\n  let gtfn, ltefn, ltfn, comp, ecomp\n  switch (hilo) {\n    case '>':\n      gtfn = gt\n      ltefn = lte\n      ltfn = lt\n      comp = '>'\n      ecomp = '>='\n      break\n    case '<':\n      gtfn = lt\n      ltefn = gte\n      ltfn = gt\n      comp = '<'\n      ecomp = '<='\n      break\n    default:\n      throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n  }\n\n  // If it satisfies the range it is not outside\n  if (satisfies(version, range, options)) {\n    return false\n  }\n\n  // From now on, variable terms are as if we're in \"gtr\" mode.\n  // but note that everything is flipped for the \"ltr\" function.\n\n  for (let i = 0; i < range.set.length; ++i) {\n    const comparators = range.set[i]\n\n    let high = null\n    let low = null\n\n    comparators.forEach((comparator) => {\n      if (comparator.semver === ANY) {\n        comparator = new Comparator('>=0.0.0')\n      }\n      high = high || comparator\n      low = low || comparator\n      if (gtfn(comparator.semver, high.semver, options)) {\n        high = comparator\n      } else if (ltfn(comparator.semver, low.semver, options)) {\n        low = comparator\n      }\n    })\n\n    // If the edge version comparator has a operator then our version\n    // isn't outside it\n    if (high.operator === comp || high.operator === ecomp) {\n      return false\n    }\n\n    // If the lowest version comparator has an operator and our version\n    // is less than it then it isn't higher than the range\n    if ((!low.operator || low.operator === comp) &&\n        ltefn(version, low.semver)) {\n      return false\n    } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n      return false\n    }\n  }\n  return true\n}\n\nmodule.exports = outside\n","'use strict'\n\n// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","'use strict'\n\nconst outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","'use strict'\n\nconst Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n  r1 = new Range(r1, options)\n  r2 = new Range(r2, options)\n  return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","'use strict'\n\n// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n  const set = []\n  let first = null\n  let prev = null\n  const v = versions.sort((a, b) => compare(a, b, options))\n  for (const version of v) {\n    const included = satisfies(version, range, options)\n    if (included) {\n      prev = version\n      if (!first) {\n        first = version\n      }\n    } else {\n      if (prev) {\n        set.push([first, prev])\n      }\n      prev = null\n      first = null\n    }\n  }\n  if (first) {\n    set.push([first, null])\n  }\n\n  const ranges = []\n  for (const [min, max] of set) {\n    if (min === max) {\n      ranges.push(min)\n    } else if (!max && min === v[0]) {\n      ranges.push('*')\n    } else if (!max) {\n      ranges.push(`>=${min}`)\n    } else if (min === v[0]) {\n      ranges.push(`<=${max}`)\n    } else {\n      ranges.push(`${min} - ${max}`)\n    }\n  }\n  const simplified = ranges.join(' || ')\n  const original = typeof range.raw === 'string' ? range.raw : String(range)\n  return simplified.length < original.length ? simplified : range\n}\n","'use strict'\n\nconst Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n//   some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n//   - If C is only the ANY comparator, return true\n//   - Else if in prerelease mode, return false\n//   - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n//   - if in prerelease mode, return true\n//   - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n//   - If GT, and EQ does not satisfy GT, return true (null set)\n//   - If LT, and EQ does not satisfy LT, return true (null set)\n//   - If EQ satisfies every C, return true\n//   - Else return false\n// - If GT\n//   - If GT.semver is lower than any > or >= comp in C, return false\n//   - If GT is >=, and GT.semver does not satisfy every C, return false\n//   - If GT.semver has a prerelease, and not in prerelease mode\n//     - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n//   - If LT.semver is greater than any < or <= comp in C, return false\n//   - If LT is <=, and LT.semver does not satisfy every C, return false\n//   - If LT.semver has a prerelease, and not in prerelease mode\n//     - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n  if (sub === dom) {\n    return true\n  }\n\n  sub = new Range(sub, options)\n  dom = new Range(dom, options)\n  let sawNonNull = false\n\n  OUTER: for (const simpleSub of sub.set) {\n    for (const simpleDom of dom.set) {\n      const isSub = simpleSubset(simpleSub, simpleDom, options)\n      sawNonNull = sawNonNull || isSub !== null\n      if (isSub) {\n        continue OUTER\n      }\n    }\n    // the null set is a subset of everything, but null simple ranges in\n    // a complex range should be ignored.  so if we saw a non-null range,\n    // then we know this isn't a subset, but if EVERY simple range was null,\n    // then it is a subset.\n    if (sawNonNull) {\n      return false\n    }\n  }\n  return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n  if (sub === dom) {\n    return true\n  }\n\n  if (sub.length === 1 && sub[0].semver === ANY) {\n    if (dom.length === 1 && dom[0].semver === ANY) {\n      return true\n    } else if (options.includePrerelease) {\n      sub = minimumVersionWithPreRelease\n    } else {\n      sub = minimumVersion\n    }\n  }\n\n  if (dom.length === 1 && dom[0].semver === ANY) {\n    if (options.includePrerelease) {\n      return true\n    } else {\n      dom = minimumVersion\n    }\n  }\n\n  const eqSet = new Set()\n  let gt, lt\n  for (const c of sub) {\n    if (c.operator === '>' || c.operator === '>=') {\n      gt = higherGT(gt, c, options)\n    } else if (c.operator === '<' || c.operator === '<=') {\n      lt = lowerLT(lt, c, options)\n    } else {\n      eqSet.add(c.semver)\n    }\n  }\n\n  if (eqSet.size > 1) {\n    return null\n  }\n\n  let gtltComp\n  if (gt && lt) {\n    gtltComp = compare(gt.semver, lt.semver, options)\n    if (gtltComp > 0) {\n      return null\n    } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n      return null\n    }\n  }\n\n  // will iterate one or zero times\n  for (const eq of eqSet) {\n    if (gt && !satisfies(eq, String(gt), options)) {\n      return null\n    }\n\n    if (lt && !satisfies(eq, String(lt), options)) {\n      return null\n    }\n\n    for (const c of dom) {\n      if (!satisfies(eq, String(c), options)) {\n        return false\n      }\n    }\n\n    return true\n  }\n\n  let higher, lower\n  let hasDomLT, hasDomGT\n  // if the subset has a prerelease, we need a comparator in the superset\n  // with the same tuple and a prerelease, or it's not a subset\n  let needDomLTPre = lt &&\n    !options.includePrerelease &&\n    lt.semver.prerelease.length ? lt.semver : false\n  let needDomGTPre = gt &&\n    !options.includePrerelease &&\n    gt.semver.prerelease.length ? gt.semver : false\n  // exception: <1.2.3-0 is the same as <1.2.3\n  if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n      lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n    needDomLTPre = false\n  }\n\n  for (const c of dom) {\n    hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n    hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n    if (gt) {\n      if (needDomGTPre) {\n        if (c.semver.prerelease && c.semver.prerelease.length &&\n            c.semver.major === needDomGTPre.major &&\n            c.semver.minor === needDomGTPre.minor &&\n            c.semver.patch === needDomGTPre.patch) {\n          needDomGTPre = false\n        }\n      }\n      if (c.operator === '>' || c.operator === '>=') {\n        higher = higherGT(gt, c, options)\n        if (higher === c && higher !== gt) {\n          return false\n        }\n      } else if (gt.operator === '>=' && !c.test(gt.semver)) {\n        return false\n      }\n    }\n    if (lt) {\n      if (needDomLTPre) {\n        if (c.semver.prerelease && c.semver.prerelease.length &&\n            c.semver.major === needDomLTPre.major &&\n            c.semver.minor === needDomLTPre.minor &&\n            c.semver.patch === needDomLTPre.patch) {\n          needDomLTPre = false\n        }\n      }\n      if (c.operator === '<' || c.operator === '<=') {\n        lower = lowerLT(lt, c, options)\n        if (lower === c && lower !== lt) {\n          return false\n        }\n      } else if (lt.operator === '<=' && !c.test(lt.semver)) {\n        return false\n      }\n    }\n    if (!c.operator && (lt || gt) && gtltComp !== 0) {\n      return false\n    }\n  }\n\n  // if there was a < or >, and nothing in the dom, then must be false\n  // UNLESS it was limited by another range in the other direction.\n  // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n  if (gt && hasDomLT && !lt && gtltComp !== 0) {\n    return false\n  }\n\n  if (lt && hasDomGT && !gt && gtltComp !== 0) {\n    return false\n  }\n\n  // we needed a prerelease range in a specific tuple, but didn't get one\n  // then this isn't a subset.  eg >=1.2.3-pre is not a subset of >=1.0.0,\n  // because it includes prereleases in the 1.2.3 tuple\n  if (needDomGTPre || needDomLTPre) {\n    return false\n  }\n\n  return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n  if (!a) {\n    return b\n  }\n  const comp = compare(a.semver, b.semver, options)\n  return comp > 0 ? a\n    : comp < 0 ? b\n    : b.operator === '>' && a.operator === '>=' ? b\n    : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n  if (!a) {\n    return b\n  }\n  const comp = compare(a.semver, b.semver, options)\n  return comp < 0 ? a\n    : comp > 0 ? b\n    : b.operator === '<' && a.operator === '<=' ? b\n    : a\n}\n\nmodule.exports = subset\n","'use strict'\n\n// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst truncate = require('./functions/truncate')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n  parse,\n  valid,\n  clean,\n  inc,\n  diff,\n  major,\n  minor,\n  patch,\n  prerelease,\n  compare,\n  rcompare,\n  compareLoose,\n  compareBuild,\n  sort,\n  rsort,\n  gt,\n  lt,\n  eq,\n  neq,\n  gte,\n  lte,\n  cmp,\n  coerce,\n  truncate,\n  Comparator,\n  Range,\n  satisfies,\n  toComparators,\n  maxSatisfying,\n  minSatisfying,\n  minVersion,\n  validRange,\n  outside,\n  gtr,\n  ltr,\n  intersects,\n  simplifyRange,\n  subset,\n  SemVer,\n  re: internalRe.re,\n  src: internalRe.src,\n  tokens: internalRe.t,\n  SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n  RELEASE_TYPES: constants.RELEASE_TYPES,\n  compareIdentifiers: identifiers.compareIdentifiers,\n  rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n","import {\n  LoadingState,\n  type DataFrame,\n  type DataQuery,\n  type DataQueryRequest,\n  type DataQueryResponse,\n} from '@grafana/data';\nimport { Observable, type Subscription, type Observer } from 'rxjs';\n\nexport interface RequestLoopOptions<TQuery extends DataQuery = DataQuery> {\n  /**\n   * If the response needs an additional request to execute, return it here\n   */\n  getNextQuery: (rsp: DataQueryResponse) => TQuery | undefined;\n\n  /**\n   * The datasource execute method\n   */\n  query: (req: DataQueryRequest<TQuery>) => Observable<DataQueryResponse>;\n\n  /**\n   * Process the results\n   */\n  process: (data: DataFrame[]) => DataFrame[];\n\n  /**\n   * Check if the query should be cancelled\n   */\n  shouldCancel: () => boolean;\n\n  /**\n   * Callback that gets executed when unsubscribed\n   */\n  onCancel: () => void;\n}\n\nconst DELAY_INTERVAL_MS = 10;\nconst MAX_NEXT_REQUEST_DELAY = 10000 / DELAY_INTERVAL_MS; // 10 seconds maximum delay between requests\n\n/**\n * Continue executing requests as long as `getNextQuery` returns a query\n */\nexport function getRequestLooper<T extends DataQuery = DataQuery>(\n  req: DataQueryRequest<T>,\n  options: RequestLoopOptions<T>\n): Observable<DataQueryResponse> {\n  return new Observable<DataQueryResponse>((subscriber) => {\n    let nextQuery: T | undefined = undefined;\n    let subscription: Subscription | undefined = undefined;\n    let loadingState: LoadingState | undefined = LoadingState.Loading;\n    let nextRequestDelay = 1; // number of DELAY_INTERVAL_MS to wait before the next request\n    let count = 1;\n    let shouldCancel = false;\n\n    // Single observer gets reused for each request\n    const observer: Observer<DataQueryResponse> = {\n      next: (rsp: DataQueryResponse) => {\n        loadingState = rsp.state;\n        let checkstate = false;\n        if (loadingState !== LoadingState.Error) {\n          nextQuery = options.getNextQuery(rsp);\n          const _shouldCancel = options.shouldCancel();\n\n          if (nextQuery && _shouldCancel) {\n            // `shouldCancel` is set here only if there is a `nextQuery`, otherwise\n            // we would try to cancel a finished query in the cleanup function\n            shouldCancel = _shouldCancel;\n            nextQuery = undefined;\n          }\n\n          checkstate = true;\n        }\n        const data = options.process(rsp.data);\n\n        // Set the loading status to show a spinner if loading or to show data if streaming.\n        if (checkstate) {\n          if (nextQuery) {\n            if (data.length && data[0].length) {\n              loadingState = LoadingState.Streaming;\n            } else {\n              loadingState = LoadingState.Loading;\n            }\n            // Calculate the number of DELAY_INTERVAL_MS to wait before the next request.\n            // Caps it so the delay is not more than 10s\n            nextRequestDelay =\n              nextRequestDelay * 2 > MAX_NEXT_REQUEST_DELAY ? MAX_NEXT_REQUEST_DELAY : nextRequestDelay * 2;\n          } else {\n            loadingState = LoadingState.Done;\n            nextRequestDelay = 0;\n          }\n        }\n        subscriber.next({ ...rsp, data, state: loadingState, key: req.requestId });\n      },\n      error: (err) => {\n        subscriber.error(err);\n      },\n      complete: () => {\n        // We unsubscribe from the internal subscription after completing a request\n        if (subscription) {\n          subscription.unsubscribe();\n          subscription = undefined;\n        }\n\n        // Queues up a new request if the current query is still in a running state.\n        // The timeout is set in the `next` callback.\n        if (nextQuery) {\n          const next = nextQuery;\n          setTimeout(() => {\n            subscription = options\n              .query({ ...req, requestId: `${req.requestId}.${++count}`, targets: [next] })\n              .subscribe(observer);\n            nextQuery = undefined;\n          }, nextRequestDelay * DELAY_INTERVAL_MS);\n        } else {\n          subscriber.complete();\n        }\n      },\n    };\n\n    // This runs the initial query, subsequent queries are run in the `complete` callback of the observer.\n    subscription = options.query(req).subscribe(observer);\n\n    // Cleanup function\n    return function unsubscribe() {\n      observer.complete();\n      if (nextQuery || shouldCancel) {\n        options.onCancel();\n      }\n      nextQuery = undefined;\n    };\n  });\n}\n","import type {\n  DataFrame,\n  DataQuery,\n  DataQueryRequest,\n  DataQueryResponse,\n  DataSourceInstanceSettings,\n  DataSourceJsonData,\n} from '@grafana/data';\nimport {\n  DataSourceWithBackend,\n  config,\n  getBackendSrv,\n  toDataQueryResponse,\n  type BackendDataSourceResponse,\n} from '@grafana/runtime';\nimport { merge, of, type Observable } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { lt } from 'semver';\nimport { getRequestLooper } from './requestLooper';\n\nexport interface CustomMeta {\n  queryID: string;\n  status: string;\n}\n\nexport interface RunningQueryInfo {\n  queryID?: string;\n  shouldCancel?: boolean;\n}\n\ninterface DataQueryMeta {\n  meta?: { queryFlow?: 'async' | 'sync' };\n}\n\nconst RUNNING_STATUSES = ['started', 'submitted', 'running'];\nconst isRunning = (status = '') => RUNNING_STATUSES.includes(status);\nconst isCustomMeta = (meta: unknown): meta is CustomMeta => {\n  return !!(typeof meta === 'object' && meta?.hasOwnProperty('queryID') && meta?.hasOwnProperty('status'));\n};\n\nexport class DatasourceWithAsyncBackend<\n  TQuery extends DataQuery = DataQuery,\n  TOptions extends DataSourceJsonData = DataSourceJsonData,\n> extends DataSourceWithBackend<TQuery, TOptions> {\n  private runningQueries: { [hash: string]: RunningQueryInfo } = {};\n  private requestCounter = 100;\n  private requestIdPrefix: number | string;\n\n  constructor(instanceSettings: DataSourceInstanceSettings<TOptions>) {\n    super(instanceSettings);\n    this.requestIdPrefix = instanceSettings.uid ?? instanceSettings.id;\n  }\n\n  query(request: DataQueryRequest<TQuery>): Observable<DataQueryResponse> {\n    const targets = this.filterQuery ? request.targets.filter(this.filterQuery) : request.targets;\n    if (!targets.length) {\n      return of({ data: [] });\n    }\n    const all: Array<Observable<DataQueryResponse>> = [];\n    for (let target of targets) {\n      if (target.hide) {\n        continue;\n      }\n      all.push(this.doSingle(target, request));\n    }\n    return merge(...all);\n  }\n\n  storeQuery(target: TQuery, queryInfo: RunningQueryInfo) {\n    const key = JSON.stringify(target);\n    const existingQueryInfo = this.runningQueries[key] || {};\n    this.runningQueries[key] = { ...existingQueryInfo, ...queryInfo };\n  }\n\n  getQuery(target: TQuery) {\n    const key = JSON.stringify(target);\n    return this.runningQueries[key] || {};\n  }\n\n  removeQuery(target: TQuery) {\n    const key = JSON.stringify(target);\n    delete this.runningQueries[key];\n  }\n\n  doSingle(target: TQuery, request: DataQueryRequest<TQuery>): Observable<DataQueryResponse> {\n    let queryID: string | undefined = undefined;\n    let status: string | undefined = undefined;\n    let allData: DataFrame[] = [];\n\n    return getRequestLooper(\n      { ...request, targets: [target], requestId: `${this.requestIdPrefix}_${this.requestCounter++}` },\n      {\n        /**\n         * Additional query to execute if the current query is still in a running state\n         */\n        getNextQuery: (rsp: DataQueryResponse) => {\n          if (rsp.data?.length) {\n            const first: DataFrame = rsp.data[0];\n            const meta = first.meta?.custom;\n\n            if (isCustomMeta(meta) && isRunning(meta.status)) {\n              queryID = meta.queryID;\n              status = meta.status;\n              this.storeQuery(target, { queryID });\n              return { ...target, queryID };\n            }\n          }\n\n          this.removeQuery(target);\n          return undefined;\n        },\n\n        /**\n         * The original request\n         */\n        query: (request: DataQueryRequest<TQuery>) => {\n          const { range, targets, requestId, intervalMs, maxDataPoints } = request;\n          const [_query] = targets;\n          const query: TQuery & DataQueryMeta = {\n            ..._query,\n            meta: { queryFlow: 'async' },\n            intervalMs,\n            maxDataPoints,\n            // getRef optionally chained to support < v8.3.x of Grafana\n            datasource: this?.getRef(),\n            datasourceId: this.id,\n            ...this.applyTemplateVariables(_query, request.scopedVars),\n          };\n\n          // Manually bypass the query cache for running queries if the caching service is not enabled.\n          // The caching service handles bypassing the query cache automatically when it is enabled.\n          const cachingDisabled = !config.featureToggles.awsAsyncQueryCaching;\n          if (cachingDisabled && isRunning(status)) {\n            const requestSkipQueryCacheUnsupported = lt(config.buildInfo.version, '10.2.3');\n            if (requestSkipQueryCacheUnsupported) {\n              return getBackendSrv()\n                .fetch<BackendDataSourceResponse>({\n                  method: 'POST',\n                  url: '/api/ds/query',\n                  headers: { 'X-Cache-Skip': true },\n                  requestId,\n                  data: {\n                    queries: [query],\n                    range: range,\n                    from: range.from.valueOf().toString(),\n                    to: range.to.valueOf().toString(),\n                  },\n                })\n                .pipe(\n                  map((result) => ({ data: toDataQueryResponse(result).data })),\n                  catchError((err) => of(toDataQueryResponse(err)))\n                );\n            }\n\n            return super.query({ ...request, targets: [query], skipQueryCache: true });\n          }\n\n          return super.query({ ...request, targets: [query] });\n        },\n\n        /**\n         * Process the results\n         */\n        process: (data: DataFrame[]) => {\n          for (const frame of data) {\n            if (frame.fields.length > 0) {\n              allData.push(frame);\n            }\n          }\n\n          return allData;\n        },\n\n        shouldCancel: () => {\n          const { shouldCancel } = this.getQuery(target);\n          return !!shouldCancel;\n        },\n\n        /**\n         * Callback that gets executed when unsubscribed\n         */\n        onCancel: () => {\n          if (queryID) {\n            this.removeQuery(target);\n            this.postResource('cancel', {\n              queryId: queryID,\n            }).catch((err) => {\n              err.isHandled = true; // avoid the popup\n              console.error(`error cancelling query ID: ${queryID}`, err);\n            });\n          }\n        },\n      }\n    );\n  }\n\n  // cancel sets shouldCancel to tell requestLooper to cancel the query\n  cancel = (target: TQuery) => {\n    this.storeQuery(target, { shouldCancel: true });\n  };\n}\n","import React, { useState } from 'react';\nimport { Button } from '@grafana/ui';\nimport { type DataQuery, LoadingState } from '@grafana/data';\n\nexport interface RunQueryButtonsProps<TQuery extends DataQuery> {\n  enableRun?: boolean;\n  onRunQuery: () => void;\n  onCancelQuery: (query: TQuery) => void;\n  query: TQuery;\n  state?: LoadingState;\n}\n\nexport const RunQueryButtons = <TQuery extends DataQuery>(props: RunQueryButtonsProps<TQuery>) => {\n  const { state } = props;\n  const [running, setRunning] = useState(false);\n  const [stopping, setStopping] = useState(false);\n  const [prevState, setPrevState] = useState(state);\n  const [lastQuery, setLastQuery] = useState(props.query);\n\n  if (state !== prevState) {\n    setPrevState(state);\n    if (state && state !== LoadingState.Loading) {\n      setRunning(false);\n      setStopping(false);\n    }\n  }\n\n  const onRunQuery = () => {\n    setRunning(true);\n    setLastQuery(props.query);\n    props.onRunQuery();\n  };\n\n  const onCancelQuery = props.onCancelQuery\n    ? () => {\n        props.onCancelQuery?.(lastQuery);\n        setStopping(true);\n      }\n    : undefined;\n\n  return (\n    <>\n      <Button\n        variant={props.enableRun ? 'primary' : 'secondary'}\n        size=\"sm\"\n        onClick={onRunQuery}\n        icon={running && !stopping ? 'fa fa-spinner' : undefined}\n        disabled={state === LoadingState.Loading || !props.enableRun}\n      >\n        Run query\n      </Button>\n      <Button\n        variant={running && !stopping ? 'primary' : 'secondary'}\n        size=\"sm\"\n        disabled={!running || stopping}\n        icon={stopping ? 'fa fa-spinner' : undefined}\n        onClick={onCancelQuery}\n      >\n        Stop query\n      </Button>\n    </>\n  );\n};\n"],"names":["React","useState","useEffect","Input","GrafanaSegment","getStyles","css","memo","useTheme2","ClickOutsideWrapper","Calendar","Icon","cx","Badge","PluginSignatureStatus","PureComponent","__publicField","getDataSourceSrv","selectors","Select","Stack","LegacyForms","stylesFactory","Button","DataLinkInput","usePrevious","DataLinkBuiltInVars","VariableOrigin","QueryEditorPropertyType","QueryEditorExpressionType","TokenType","OperatorType","MacroType","StatementPosition","SuggestionKind","CompletionItemPriority","CompletionItemKind","CompletionItemInsertTextRule","SQLEditorMode","getTemplateSrv","m","attachDebugger","createLogger","useRef","useMemo","v4","id","useCallback","CodeEditor","Registry","_a","QueryFormat","EditorMode","toOptionFromData","isEmpty","forwardRef","EditorList","useStyles2","Children","isValidElement","cloneElement","toOption","EditorField","ReactUtils","Tooltip","Space","Field","EditorRow","EditorRows","Switch","BaseSelectContainer","Modal","useAsync","editorModes","useCopyToClipboard","useId","InlineSwitch","RadioButtonGroup","format","getValueFormat","useAsyncFn","useDebounce","Spinner","formattedValueToString","reportInteraction","IconButton","useMeasure","AutoSizer","uniqueId","_b","Iterator","isArrayLike","Map","merge$1","isPlainObject","get","set","deepEqual","Set","Utils","BasicConfig","DateTimePicker","dateTime","customOperators","isString","config","Query","Builder","injectGlobal","isFunction","Symbol_observable","Symbol_iterator","process","iterator","map","merge","DataSourceWithBackend","DataFrameView","getBackendSrv","toDataQueryResponse","InlineField","AuthMethod","SecretInput","defaultOptions","Checkbox","SecretTextArea","TLSClientAuth","TLSClientAuthComponent","InlineFieldRow","headers","header","TagsInput","celParse","celEvaluate","TextArea","FileDropzone","ROOT_CONFIG_FIELDS","e","Alert","LinkButton","isFieldVisible","isFieldVisibleImpl","isGroupValid","isGroupValidImpl","isFieldDisabled","isFieldDisabledImpl","groupHasData","groupHasDataImpl","Component","QueryEditorMode","item","uniqBy","change","isEqual","renderMarkdown","usePopperTooltip","Portal","AutoSizeInput","value","Draggable","DragDropContext","Droppable","Cascader","useMountedState","Prism","textUtil","hints","_c","useToggle","Collapse","require$$0","require$$1","exports","require$$2","require$$3","require$$4","semver","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","require$$22","require$$23","require$$24","require$$25","require$$26","require$$27","require$$28","require$$29","require$$30","require$$31","require$$32","require$$33","require$$34","require$$35","require$$36","require$$37","require$$38","require$$39","require$$40","require$$41","LoadingState","data","request","lt"],"mappings":"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","x_google_ignoreList":[81,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,165,176,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258]}