From 6b3fce90a05025e4d896eb42484449f46a8897c4 Mon Sep 17 00:00:00 2001 From: Stratoula Kalafateli Date: Thu, 20 Feb 2025 20:31:01 +0100 Subject: [PATCH] [ES|QL] Changes function definition type to enum (#211782) --- .../kbn-esql-validation-autocomplete/index.ts | 2 +- .../scripts/generate_function_definitions.ts | 48 ++-- .../autocomplete.suggest.eval.test.ts | 4 +- .../src/autocomplete/__tests__/helpers.ts | 7 +- .../hidden_functions_and_commands.test.ts | 13 +- .../src/autocomplete/autocomplete.ts | 12 +- .../src/autocomplete/factories.ts | 7 +- .../src/autocomplete/helper.ts | 13 +- .../src/code_actions/actions.test.ts | 8 +- .../src/code_actions/actions.ts | 8 +- .../src/definitions/all_operators.ts | 23 +- .../src/definitions/commands.ts | 10 +- .../generated/aggregation_functions.ts | 34 +-- .../generated/grouping_functions.ts | 6 +- .../src/definitions/generated/operators.ts | 40 +-- .../definitions/generated/scalar_functions.ts | 230 +++++++++--------- .../src/definitions/types.ts | 9 +- .../src/shared/context.ts | 3 +- .../src/shared/helpers.test.ts | 10 +- .../src/shared/helpers.ts | 7 +- .../__tests__/fields_and_variables.test.ts | 6 +- .../validation/__tests__/functions.test.ts | 62 ++--- .../src/validation/validation.test.ts | 4 +- .../src/validation/validation.ts | 5 +- .../identifier_control_form.tsx | 4 +- 25 files changed, 312 insertions(+), 263 deletions(-) diff --git a/src/platform/packages/shared/kbn-esql-validation-autocomplete/index.ts b/src/platform/packages/shared/kbn-esql-validation-autocomplete/index.ts index 93db9103b9957..4e0f6b3962ae3 100644 --- a/src/platform/packages/shared/kbn-esql-validation-autocomplete/index.ts +++ b/src/platform/packages/shared/kbn-esql-validation-autocomplete/index.ts @@ -68,7 +68,7 @@ export { } from './src/shared/helpers'; export { ENRICH_MODES } from './src/definitions/settings'; export { timeUnits } from './src/definitions/literals'; -export { aggregationFunctionDefinitions } from './src/definitions/generated/aggregation_functions'; +export { aggFunctionDefinitions } from './src/definitions/generated/aggregation_functions'; export { getFunctionSignatures } from './src/definitions/helpers'; export { diff --git a/src/platform/packages/shared/kbn-esql-validation-autocomplete/scripts/generate_function_definitions.ts b/src/platform/packages/shared/kbn-esql-validation-autocomplete/scripts/generate_function_definitions.ts index 369bf3f581386..7da1915c00fd3 100644 --- a/src/platform/packages/shared/kbn-esql-validation-autocomplete/scripts/generate_function_definitions.ts +++ b/src/platform/packages/shared/kbn-esql-validation-autocomplete/scripts/generate_function_definitions.ts @@ -17,6 +17,7 @@ import { FunctionParameterType, FunctionReturnType, Signature, + FunctionDefinitionTypes, } from '../src/definitions/types'; import { FULL_TEXT_SEARCH_FUNCTIONS } from '../src/shared/constants'; const aliasTable: Record = { @@ -91,7 +92,7 @@ const excludedFunctions = new Set(['case']); const extraFunctions: FunctionDefinition[] = [ { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'case', description: 'Accepts pairs of conditions and values. The function returns the value that belongs to the first condition that evaluates to `true`. If the number of arguments is odd, the last argument is the default value which is returned when no condition matches.', @@ -307,7 +308,7 @@ function getFunctionDefinition(ESFunctionDefinition: Record): Funct FunctionDefinition, 'supportedCommands' | 'supportedOptions' > = - ESFunctionDefinition.type === 'scalar' + ESFunctionDefinition.type === FunctionDefinitionTypes.SCALAR ? scalarSupportedCommandsAndOptions : aggregationSupportedCommandsAndOptions; @@ -765,7 +766,7 @@ const enrichOperators = ( // so we are overriding to add proper support supportedCommands, supportedOptions, - type: 'operator' as const, + type: FunctionDefinitionTypes.OPERATOR, validate: validators[op.name], ...(isNotOperator ? { ignoreAsSuggestion: true } : {}), }; @@ -774,7 +775,7 @@ const enrichOperators = ( function printGeneratedFunctionsFile( functionDefinitions: FunctionDefinition[], - functionsType: 'aggregation' | 'scalar' | 'operator' | 'grouping' + functionsType: FunctionDefinitionTypes ) { /** * Deals with asciidoc internal cross-references in the function descriptions @@ -828,7 +829,7 @@ function printGeneratedFunctionsFile( } return `// Do not edit this manually... generated by scripts/generate_function_definitions.ts const ${getDefinitionName(name)}: FunctionDefinition = { - type: '${type}', + type: FunctionDefinitionTypes.${type.toUpperCase()}, name: '${functionName}', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.${name}', { defaultMessage: ${JSON.stringify( removeAsciiDocInternalCrossReferences(removeInlineAsciiDocLinks(description), functionNames) @@ -867,14 +868,18 @@ function printGeneratedFunctionsFile( */ import { i18n } from '@kbn/i18n'; -import type { FunctionDefinition } from '../types'; +import { type FunctionDefinition, FunctionDefinitionTypes } from '../types'; ${ - functionsType === 'scalar' + functionsType === FunctionDefinitionTypes.SCALAR ? `import type { ESQLFunction } from '@kbn/esql-ast'; import { isLiteralItem } from '../../shared/helpers';` : '' } -${functionsType === 'operator' ? `import { isNumericType } from '../../shared/esql_types';` : ''} +${ + functionsType === FunctionDefinitionTypes.OPERATOR + ? `import { isNumericType } from '../../shared/esql_types';` + : '' +} @@ -927,17 +932,20 @@ ${functionsType === 'operator' ? `import { isNumericType } from '../../shared/es const isLikeOperator = functionDefinition.name.toLowerCase().includes('like'); if (functionDefinition.name.toLowerCase() === 'match') { - scalarFunctionDefinitions.push({ ...functionDefinition, type: 'scalar' }); + scalarFunctionDefinitions.push({ + ...functionDefinition, + type: FunctionDefinitionTypes.SCALAR, + }); continue; } - if (functionDefinition.type === 'operator' || isLikeOperator) { + if (functionDefinition.type === FunctionDefinitionTypes.OPERATOR || isLikeOperator) { operatorDefinitions.push(functionDefinition); } - if (functionDefinition.type === 'scalar' && !isLikeOperator) { + if (functionDefinition.type === FunctionDefinitionTypes.SCALAR && !isLikeOperator) { scalarFunctionDefinitions.push(functionDefinition); - } else if (functionDefinition.type === 'agg') { + } else if (functionDefinition.type === FunctionDefinitionTypes.AGG) { aggFunctionDefinitions.push(functionDefinition); - } else if (functionDefinition.type === 'grouping') { + } else if (functionDefinition.type === FunctionDefinitionTypes.GROUPING) { groupingFunctionDefinitions.push(functionDefinition); } } @@ -946,18 +954,24 @@ ${functionsType === 'operator' ? `import { isNumericType } from '../../shared/es await writeFile( join(__dirname, '../src/definitions/generated/scalar_functions.ts'), - printGeneratedFunctionsFile(scalarFunctionDefinitions, 'scalar') + printGeneratedFunctionsFile(scalarFunctionDefinitions, FunctionDefinitionTypes.SCALAR) ); await writeFile( join(__dirname, '../src/definitions/generated/aggregation_functions.ts'), - printGeneratedFunctionsFile(aggFunctionDefinitions, 'aggregation') + printGeneratedFunctionsFile(aggFunctionDefinitions, FunctionDefinitionTypes.AGG) ); await writeFile( join(__dirname, '../src/definitions/generated/operators.ts'), - printGeneratedFunctionsFile(enrichOperators(operatorDefinitions), 'operator') + printGeneratedFunctionsFile( + enrichOperators(operatorDefinitions), + FunctionDefinitionTypes.OPERATOR + ) ); await writeFile( join(__dirname, '../src/definitions/generated/grouping_functions.ts'), - printGeneratedFunctionsFile(enrichGrouping(groupingFunctionDefinitions), 'grouping') + printGeneratedFunctionsFile( + enrichGrouping(groupingFunctionDefinitions), + FunctionDefinitionTypes.GROUPING + ) ); })(); diff --git a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/autocomplete/__tests__/autocomplete.suggest.eval.test.ts b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/autocomplete/__tests__/autocomplete.suggest.eval.test.ts index 706893a3b42b5..39c1142d1deed 100644 --- a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/autocomplete/__tests__/autocomplete.suggest.eval.test.ts +++ b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/autocomplete/__tests__/autocomplete.suggest.eval.test.ts @@ -19,6 +19,7 @@ import { import { ESQL_COMMON_NUMERIC_TYPES } from '../../shared/esql_types'; import { scalarFunctionDefinitions } from '../../definitions/generated/scalar_functions'; import { timeUnitsToSuggest } from '../../definitions/literals'; +import { FunctionDefinitionTypes } from '../../definitions/types'; import { getCompatibleTypesToSuggestNext, getValidFunctionSignaturesForPreviousArgs, @@ -454,7 +455,8 @@ describe('autocomplete.suggest', () => { // Wehther to prepend comma to suggestion string // E.g. if true, "fieldName" -> "fieldName, " - const shouldAddComma = hasMoreMandatoryArgs && fn.type !== 'operator'; + const shouldAddComma = + hasMoreMandatoryArgs && fn.type !== FunctionDefinitionTypes.OPERATOR; const constantOnlyParamDefs = typesToSuggestNext.filter( (p) => p.constantOnly || /_literal/.test(p.type as string) diff --git a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/autocomplete/__tests__/helpers.ts b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/autocomplete/__tests__/helpers.ts index bd02f12df30d5..c24728f853ba4 100644 --- a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/autocomplete/__tests__/helpers.ts +++ b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/autocomplete/__tests__/helpers.ts @@ -12,8 +12,9 @@ import { parse } from '@kbn/esql-ast'; import { scalarFunctionDefinitions } from '../../definitions/generated/scalar_functions'; import { operatorsDefinitions } from '../../definitions/all_operators'; import { NOT_SUGGESTED_TYPES } from '../../shared/resources_helpers'; -import { aggregationFunctionDefinitions } from '../../definitions/generated/aggregation_functions'; +import { aggFunctionDefinitions } from '../../definitions/generated/aggregation_functions'; import { timeUnitsToSuggest } from '../../definitions/literals'; +import { FunctionDefinitionTypes } from '../../definitions/types'; import { groupingFunctionDefinitions } from '../../definitions/generated/grouping_functions'; import * as autocomplete from '../autocomplete'; import type { ESQLCallbacks } from '../../shared/types'; @@ -158,7 +159,7 @@ export function getFunctionSignaturesByReturnType( const list = []; if (agg) { - list.push(...aggregationFunctionDefinitions); + list.push(...aggFunctionDefinitions); } if (grouping) { list.push(...groupingFunctionDefinitions); @@ -217,7 +218,7 @@ export function getFunctionSignaturesByReturnType( .map((definition) => { const { type, name, signatures, customParametersSnippet } = definition; - if (type === 'operator') { + if (type === FunctionDefinitionTypes.OPERATOR) { return { text: signatures.some(({ params }) => params.length > 1) ? `${name.toUpperCase()} $0` diff --git a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/autocomplete/__tests__/hidden_functions_and_commands.test.ts b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/autocomplete/__tests__/hidden_functions_and_commands.test.ts index 51bb5c7ba165a..011d318195e2b 100644 --- a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/autocomplete/__tests__/hidden_functions_and_commands.test.ts +++ b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/autocomplete/__tests__/hidden_functions_and_commands.test.ts @@ -8,6 +8,7 @@ */ import { setTestFunctions } from '../../shared/test_functions'; +import { FunctionDefinitionTypes } from '../../definitions/types'; import { setup } from './helpers'; describe('hidden commands', () => { @@ -28,7 +29,7 @@ describe('hidden functions', () => { it('does not suggest hidden scalar functions', async () => { setTestFunctions([ { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'HIDDEN_FUNCTION', description: 'This is a hidden function', signatures: [{ params: [], returnType: 'text' }], @@ -36,7 +37,7 @@ describe('hidden functions', () => { ignoreAsSuggestion: true, }, { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'VISIBLE_FUNCTION', description: 'This is a visible function', signatures: [{ params: [], returnType: 'text' }], @@ -54,7 +55,7 @@ describe('hidden functions', () => { it('does not suggest hidden agg functions', async () => { setTestFunctions([ { - type: 'agg', + type: FunctionDefinitionTypes.AGG, name: 'HIDDEN_FUNCTION', description: 'This is a hidden function', signatures: [{ params: [], returnType: 'text' }], @@ -62,7 +63,7 @@ describe('hidden functions', () => { ignoreAsSuggestion: true, }, { - type: 'agg', + type: FunctionDefinitionTypes.AGG, name: 'VISIBLE_FUNCTION', description: 'This is a visible function', signatures: [{ params: [], returnType: 'text' }], @@ -80,7 +81,7 @@ describe('hidden functions', () => { it('does not suggest hidden operators', async () => { setTestFunctions([ { - type: 'operator', + type: FunctionDefinitionTypes.OPERATOR, name: 'HIDDEN_OPERATOR', description: 'This is a hidden function', supportedCommands: ['eval', 'where', 'row', 'sort'], @@ -97,7 +98,7 @@ describe('hidden functions', () => { ], }, { - type: 'operator', + type: FunctionDefinitionTypes.OPERATOR, name: 'VISIBLE_OPERATOR', description: 'This is a visible function', supportedCommands: ['eval', 'where', 'row', 'sort'], diff --git a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts index 5212f20827326..68c835d74de5a 100644 --- a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts +++ b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts @@ -103,7 +103,7 @@ import { getSuggestionsToRightOfOperatorExpression, checkFunctionInvocationComplete, } from './helper'; -import { FunctionParameter, isParameterType } from '../definitions/types'; +import { FunctionParameter, isParameterType, FunctionDefinitionTypes } from '../definitions/types'; import { comparisonFunctions } from '../definitions/all_operators'; import { getRecommendedQueriesSuggestions } from './recommended_queries/suggestions'; @@ -992,11 +992,13 @@ async function getFunctionArgsSuggestions( const shouldAddComma = hasMoreMandatoryArgs && - fnDefinition.type !== 'operator' && + fnDefinition.type !== FunctionDefinitionTypes.OPERATOR && !isCursorFollowedByComma && !canBeBooleanCondition; const shouldAdvanceCursor = - hasMoreMandatoryArgs && fnDefinition.type !== 'operator' && !isCursorFollowedByComma; + hasMoreMandatoryArgs && + fnDefinition.type !== FunctionDefinitionTypes.OPERATOR && + !isCursorFollowedByComma; const suggestedConstants = uniq( typesToSuggestNext @@ -1048,9 +1050,9 @@ async function getFunctionArgsSuggestions( fnToIgnore.push( ...getFunctionsToIgnoreForStats(command, finalCommandArgIndex), // ignore grouping functions, they are only used for grouping - ...getAllFunctions({ type: 'grouping' }).map(({ name }) => name), + ...getAllFunctions({ type: FunctionDefinitionTypes.GROUPING }).map(({ name }) => name), ...(isAggFunctionUsedAlready(command, finalCommandArgIndex) - ? getAllFunctions({ type: 'agg' }).map(({ name }) => name) + ? getAllFunctions({ type: FunctionDefinitionTypes.AGG }).map(({ name }) => name) : []) ); } diff --git a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/autocomplete/factories.ts b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/autocomplete/factories.ts index af8f677dcd727..2938757064655 100644 --- a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/autocomplete/factories.ts +++ b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/autocomplete/factories.ts @@ -11,7 +11,7 @@ import { i18n } from '@kbn/i18n'; import { memoize } from 'lodash'; import { SuggestionRawDefinition } from './types'; import { groupingFunctionDefinitions } from '../definitions/generated/grouping_functions'; -import { aggregationFunctionDefinitions } from '../definitions/generated/aggregation_functions'; +import { aggFunctionDefinitions } from '../definitions/generated/aggregation_functions'; import { scalarFunctionDefinitions } from '../definitions/generated/scalar_functions'; import { getFunctionSignatures } from '../definitions/helpers'; import { timeUnitsToSuggest } from '../definitions/literals'; @@ -20,6 +20,7 @@ import { CommandOptionsDefinition, CommandModeDefinition, FunctionParameterType, + FunctionDefinitionTypes, } from '../definitions/types'; import { shouldBeQuotedSource, shouldBeQuotedText } from '../shared/helpers'; import { buildFunctionDocumentation } from './documentation_util'; @@ -39,7 +40,7 @@ const techPreviewLabel = i18n.translate( const allFunctions = memoize( () => - aggregationFunctionDefinitions + aggFunctionDefinitions .concat(scalarFunctionDefinitions) .concat(groupingFunctionDefinitions) .concat(getTestFunctions()), @@ -87,7 +88,7 @@ export function getFunctionSuggestion(fn: FunctionDefinition): SuggestionRawDefi value: buildFunctionDocumentation(fullSignatures, fn.examples), }, // agg functgions have priority over everything else - sortText: fn.type === 'agg' ? '1A' : 'C', + sortText: fn.type === FunctionDefinitionTypes.AGG ? '1A' : 'C', // trigger a suggestion follow up on selection command: TRIGGER_SUGGESTION_COMMAND, }; diff --git a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/autocomplete/helper.ts b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/autocomplete/helper.ts index 0cc2d4c8f565a..e635aaa92dc01 100644 --- a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/autocomplete/helper.ts +++ b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/autocomplete/helper.ts @@ -22,6 +22,7 @@ import { type FunctionReturnType, type SupportedDataType, isReturnType, + FunctionDefinitionTypes, } from '../definitions/types'; import { findFinalWord, @@ -56,7 +57,10 @@ function extractFunctionArgs(args: ESQLAstItem[]): ESQLFunction[] { function checkContent(fn: ESQLFunction): boolean { const fnDef = getFunctionDefinition(fn.name); - return (!!fnDef && fnDef.type === 'agg') || extractFunctionArgs(fn.args).some(checkContent); + return ( + (!!fnDef && fnDef.type === FunctionDefinitionTypes.AGG) || + extractFunctionArgs(fn.args).some(checkContent) + ); } export function isAggFunctionUsedAlready(command: ESQLCommand, argIndex: number) { @@ -291,7 +295,9 @@ export function getValidSignaturesAndTypesToSuggestNext( // E.g. if true, "fieldName" -> "fieldName, " const alreadyHasComma = fullText ? fullText[offset] === ',' : false; const shouldAddComma = - hasMoreMandatoryArgs && fnDefinition.type !== 'operator' && !alreadyHasComma; + hasMoreMandatoryArgs && + fnDefinition.type !== FunctionDefinitionTypes.OPERATOR && + !alreadyHasComma; const currentArg = enrichedArgs[argIndex]; return { shouldAddComma, @@ -610,7 +616,8 @@ export async function getSuggestionsToRightOfOperatorExpression({ // technically another boolean value should be suggested, but it is a better experience // to actually suggest a wider set of fields/functions const typeToUse = - finalType === 'boolean' && getFunctionDefinition(operator.name)?.type === 'operator' + finalType === 'boolean' && + getFunctionDefinition(operator.name)?.type === FunctionDefinitionTypes.OPERATOR ? ['any'] : (supportedTypes as string[]); diff --git a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/code_actions/actions.test.ts b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/code_actions/actions.test.ts index 147d8d662a3bf..85317fb44c59f 100644 --- a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/code_actions/actions.test.ts +++ b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/code_actions/actions.test.ts @@ -13,7 +13,7 @@ import { getAllFunctions } from '../shared/helpers'; import { getAstAndSyntaxErrors } from '@kbn/esql-ast'; import type { CodeActionOptions } from './types'; import type { ESQLRealField } from '../validation/types'; -import type { FieldType } from '../definitions/types'; +import { type FieldType, FunctionDefinitionTypes } from '../definitions/types'; import type { ESQLCallbacks, PartialFieldsMetadataClient } from '../shared/types'; import { FULL_TEXT_SEARCH_FUNCTIONS } from '../shared/constants'; @@ -280,7 +280,7 @@ describe('quick fixes logic', () => { { relaxOnMissingCallbacks: false }, { relaxOnMissingCallbacks: false }, ]) { - for (const fn of getAllFunctions({ type: 'scalar' })) { + for (const fn of getAllFunctions({ type: FunctionDefinitionTypes.SCALAR })) { if (FULL_TEXT_SEARCH_FUNCTIONS.includes(fn.name)) { testQuickFixes( `FROM index | WHERE ${BROKEN_PREFIX}${fn.name}()`, @@ -289,7 +289,7 @@ describe('quick fixes logic', () => { ); } } - for (const fn of getAllFunctions({ type: 'scalar' })) { + for (const fn of getAllFunctions({ type: FunctionDefinitionTypes.SCALAR })) { if (FULL_TEXT_SEARCH_FUNCTIONS.includes(fn.name)) continue; // add an A to the function name to make it invalid testQuickFixes( @@ -318,7 +318,7 @@ describe('quick fixes logic', () => { { equalityCheck: 'include', ...options } ); } - for (const fn of getAllFunctions({ type: 'agg' })) { + for (const fn of getAllFunctions({ type: FunctionDefinitionTypes.AGG })) { if (FULL_TEXT_SEARCH_FUNCTIONS.includes(fn.name)) continue; // add an A to the function name to make it invalid diff --git a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/code_actions/actions.ts b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/code_actions/actions.ts index fe55bd3e17b76..1c9951ffeb2df 100644 --- a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/code_actions/actions.ts +++ b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/code_actions/actions.ts @@ -29,6 +29,7 @@ import { isSourceItem, shouldBeQuotedText, } from '../shared/helpers'; +import { FunctionDefinitionTypes } from '../definitions/types'; import { ESQLCallbacks } from '../shared/types'; import { buildQueryForFieldsFromSource } from '../validation/helpers'; import { DOUBLE_BACKTICK, SINGLE_TICK_REGEX, METADATA_FIELDS } from '../shared/constants'; @@ -74,9 +75,10 @@ export const getCompatibleFunctionDefinitions = ( command: string, option: string | undefined ): string[] => { - const fnSupportedByCommand = getAllFunctions({ type: ['scalar', 'agg'] }).filter( - ({ name, supportedCommands, supportedOptions }) => - option ? supportedOptions?.includes(option) : supportedCommands.includes(command) + const fnSupportedByCommand = getAllFunctions({ + type: [FunctionDefinitionTypes.SCALAR, FunctionDefinitionTypes.AGG], + }).filter(({ name, supportedCommands, supportedOptions }) => + option ? supportedOptions?.includes(option) : supportedCommands.includes(command) ); return fnSupportedByCommand.map(({ name }) => name); }; diff --git a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/all_operators.ts b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/all_operators.ts index 78cfaee709d4b..c5f5fc1302123 100644 --- a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/all_operators.ts +++ b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/all_operators.ts @@ -8,7 +8,12 @@ */ import { i18n } from '@kbn/i18n'; -import type { FunctionDefinition, FunctionParameterType, FunctionReturnType } from './types'; +import { + type FunctionDefinition, + type FunctionParameterType, + type FunctionReturnType, + FunctionDefinitionTypes, +} from './types'; import { operatorFunctionDefinitions } from './generated/operators'; type MathFunctionSignature = [FunctionParameterType, FunctionParameterType, FunctionReturnType]; @@ -57,7 +62,7 @@ function createComparisonDefinition( }); return { - type: 'operator' as const, + type: FunctionDefinitionTypes.OPERATOR, name, description, supportedCommands: ['eval', 'where', 'row', 'sort'], @@ -204,7 +209,7 @@ export const logicalOperators: FunctionDefinition[] = [ }), }, ].map(({ name, description }) => ({ - type: 'operator' as const, + type: FunctionDefinitionTypes.OPERATOR, name, description, supportedCommands: ['eval', 'where', 'row', 'sort'], @@ -234,7 +239,7 @@ const nullFunctions: FunctionDefinition[] = [ }), }, ].map(({ name, description }) => ({ - type: 'operator', + type: FunctionDefinitionTypes.OPERATOR, name, description, supportedCommands: ['eval', 'where', 'row', 'sort'], @@ -248,7 +253,7 @@ const nullFunctions: FunctionDefinition[] = [ const otherDefinitions: FunctionDefinition[] = [ { - type: 'operator' as const, + type: FunctionDefinitionTypes.OPERATOR, name: 'not', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definition.notDoc', { defaultMessage: 'Not', @@ -263,7 +268,7 @@ const otherDefinitions: FunctionDefinition[] = [ ], }, { - type: 'operator' as const, + type: FunctionDefinitionTypes.OPERATOR, name: '=', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definition.assignDoc', { defaultMessage: 'Assign (=)', @@ -290,7 +295,7 @@ const otherDefinitions: FunctionDefinition[] = [ ], }, { - type: 'operator' as const, + type: FunctionDefinitionTypes.OPERATOR, name: 'as', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definition.asDoc', { defaultMessage: 'Rename as (AS)', @@ -308,7 +313,7 @@ const otherDefinitions: FunctionDefinition[] = [ ], }, { - type: 'operator' as const, + type: FunctionDefinitionTypes.OPERATOR, name: 'where', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definition.whereDoc', { defaultMessage: 'WHERE operator', @@ -328,7 +333,7 @@ const otherDefinitions: FunctionDefinition[] = [ { // TODO — this shouldn't be a function or an operator... name: 'info', - type: 'operator', + type: FunctionDefinitionTypes.OPERATOR, description: i18n.translate('kbn-esql-validation-autocomplete.esql.definition.infoDoc', { defaultMessage: 'Show information about the current ES node', }), diff --git a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/commands.ts b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/commands.ts index 497ea79f71e42..9e85cecb6f096 100644 --- a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/commands.ts +++ b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/commands.ts @@ -36,7 +36,7 @@ import { onOption, withOption, } from './options'; -import type { CommandDefinition } from './types'; +import { type CommandDefinition, FunctionDefinitionTypes } from './types'; import { suggest as suggestForSort } from '../autocomplete/commands/sort'; import { suggest as suggestForKeep } from '../autocomplete/commands/keep'; import { suggest as suggestForDrop } from '../autocomplete/commands/drop'; @@ -81,10 +81,14 @@ const statsValidator = (command: ESQLCommand) => { if (statsArg.length) { function isAggFunction(arg: ESQLAstItem): arg is ESQLFunction { - return isFunctionItem(arg) && getFunctionDefinition(arg.name)?.type === 'agg'; + return ( + isFunctionItem(arg) && getFunctionDefinition(arg.name)?.type === FunctionDefinitionTypes.AGG + ); } function isOtherFunction(arg: ESQLAstItem): arg is ESQLFunction { - return isFunctionItem(arg) && getFunctionDefinition(arg.name)?.type !== 'agg'; + return ( + isFunctionItem(arg) && getFunctionDefinition(arg.name)?.type !== FunctionDefinitionTypes.AGG + ); } function checkAggExistence(arg: ESQLFunction): boolean { diff --git a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/generated/aggregation_functions.ts b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/generated/aggregation_functions.ts index 22af81a95bc5c..97de3f4d4d6a0 100644 --- a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/generated/aggregation_functions.ts +++ b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/generated/aggregation_functions.ts @@ -27,11 +27,11 @@ */ import { i18n } from '@kbn/i18n'; -import type { FunctionDefinition } from '../types'; +import { type FunctionDefinition, FunctionDefinitionTypes } from '../types'; // Do not edit this manually... generated by scripts/generate_function_definitions.ts const avgDefinition: FunctionDefinition = { - type: 'agg', + type: FunctionDefinitionTypes.AGG, name: 'avg', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.avg', { defaultMessage: 'The average of a numeric field.', @@ -81,7 +81,7 @@ const avgDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const countDefinition: FunctionDefinition = { - type: 'agg', + type: FunctionDefinitionTypes.AGG, name: 'count', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.count', { defaultMessage: 'Returns the total number (count) of input values.', @@ -225,7 +225,7 @@ const countDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const countDistinctDefinition: FunctionDefinition = { - type: 'agg', + type: FunctionDefinitionTypes.AGG, name: 'count_distinct', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.count_distinct', { defaultMessage: 'Returns the approximate number of distinct values.', @@ -796,7 +796,7 @@ const countDistinctDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const maxDefinition: FunctionDefinition = { - type: 'agg', + type: FunctionDefinitionTypes.AGG, name: 'max', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.max', { defaultMessage: 'The maximum value of a field.', @@ -916,7 +916,7 @@ const maxDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const medianDefinition: FunctionDefinition = { - type: 'agg', + type: FunctionDefinitionTypes.AGG, name: 'median', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.median', { defaultMessage: @@ -967,7 +967,7 @@ const medianDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const medianAbsoluteDeviationDefinition: FunctionDefinition = { - type: 'agg', + type: FunctionDefinitionTypes.AGG, name: 'median_absolute_deviation', description: i18n.translate( 'kbn-esql-validation-autocomplete.esql.definitions.median_absolute_deviation', @@ -1021,7 +1021,7 @@ const medianAbsoluteDeviationDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const minDefinition: FunctionDefinition = { - type: 'agg', + type: FunctionDefinitionTypes.AGG, name: 'min', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.min', { defaultMessage: 'The minimum value of a field.', @@ -1141,7 +1141,7 @@ const minDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const percentileDefinition: FunctionDefinition = { - type: 'agg', + type: FunctionDefinitionTypes.AGG, name: 'percentile', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.percentile', { defaultMessage: @@ -1306,7 +1306,7 @@ const percentileDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const stCentroidAggDefinition: FunctionDefinition = { - type: 'agg', + type: FunctionDefinitionTypes.AGG, name: 'st_centroid_agg', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.st_centroid_agg', { defaultMessage: 'Calculate the spatial centroid over a field with spatial point geometry type.', @@ -1343,7 +1343,7 @@ const stCentroidAggDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const stExtentAggDefinition: FunctionDefinition = { - type: 'agg', + type: FunctionDefinitionTypes.AGG, name: 'st_extent_agg', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.st_extent_agg', { defaultMessage: @@ -1401,7 +1401,7 @@ const stExtentAggDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const stdDevDefinition: FunctionDefinition = { - type: 'agg', + type: FunctionDefinitionTypes.AGG, name: 'std_dev', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.std_dev', { defaultMessage: 'The standard deviation of a numeric field.', @@ -1451,7 +1451,7 @@ const stdDevDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const sumDefinition: FunctionDefinition = { - type: 'agg', + type: FunctionDefinitionTypes.AGG, name: 'sum', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.sum', { defaultMessage: 'The sum of a numeric expression.', @@ -1501,7 +1501,7 @@ const sumDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const topDefinition: FunctionDefinition = { - type: 'agg', + type: FunctionDefinitionTypes.AGG, name: 'top', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.top', { defaultMessage: 'Collects the top values for a field. Includes repeated values.', @@ -1698,7 +1698,7 @@ const topDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const valuesDefinition: FunctionDefinition = { - type: 'agg', + type: FunctionDefinitionTypes.AGG, name: 'values', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.values', { defaultMessage: @@ -1818,7 +1818,7 @@ const valuesDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const weightedAvgDefinition: FunctionDefinition = { - type: 'agg', + type: FunctionDefinitionTypes.AGG, name: 'weighted_avg', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.weighted_avg', { defaultMessage: 'The weighted average of a numeric expression.', @@ -1969,7 +1969,7 @@ const weightedAvgDefinition: FunctionDefinition = { 'FROM employees\n| STATS w_avg = WEIGHTED_AVG(salary, height) by languages\n| EVAL w_avg = ROUND(w_avg)\n| KEEP w_avg, languages\n| SORT languages', ], }; -export const aggregationFunctionDefinitions = [ +export const aggFunctionDefinitions = [ avgDefinition, countDefinition, countDistinctDefinition, diff --git a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/generated/grouping_functions.ts b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/generated/grouping_functions.ts index 04107c20b38d9..a7f814b25a3cd 100644 --- a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/generated/grouping_functions.ts +++ b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/generated/grouping_functions.ts @@ -27,11 +27,11 @@ */ import { i18n } from '@kbn/i18n'; -import type { FunctionDefinition } from '../types'; +import { type FunctionDefinition, FunctionDefinitionTypes } from '../types'; // Do not edit this manually... generated by scripts/generate_function_definitions.ts const bucketDefinition: FunctionDefinition = { - type: 'grouping', + type: FunctionDefinitionTypes.GROUPING, name: 'bucket', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.bucket', { defaultMessage: @@ -802,7 +802,7 @@ const bucketDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const categorizeDefinition: FunctionDefinition = { - type: 'grouping', + type: FunctionDefinitionTypes.GROUPING, name: 'categorize', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.categorize', { defaultMessage: 'Groups text messages into categories of similarly formatted text values.', diff --git a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/generated/operators.ts b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/generated/operators.ts index 8501775b9c53a..07e2d624bc661 100644 --- a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/generated/operators.ts +++ b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/generated/operators.ts @@ -27,13 +27,13 @@ */ import { i18n } from '@kbn/i18n'; -import type { FunctionDefinition } from '../types'; +import { type FunctionDefinition, FunctionDefinitionTypes } from '../types'; import { isNumericType } from '../../shared/esql_types'; // Do not edit this manually... generated by scripts/generate_function_definitions.ts const addDefinition: FunctionDefinition = { - type: 'operator', + type: FunctionDefinitionTypes.OPERATOR, name: '+', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.add', { defaultMessage: @@ -377,7 +377,7 @@ const addDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const divDefinition: FunctionDefinition = { - type: 'operator', + type: FunctionDefinitionTypes.OPERATOR, name: '/', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.div', { defaultMessage: @@ -570,7 +570,7 @@ const divDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const equalsDefinition: FunctionDefinition = { - type: 'operator', + type: FunctionDefinitionTypes.OPERATOR, name: '==', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.equals', { defaultMessage: @@ -1060,7 +1060,7 @@ const equalsDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const greaterThanDefinition: FunctionDefinition = { - type: 'operator', + type: FunctionDefinitionTypes.OPERATOR, name: '>', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.greater_than', { defaultMessage: @@ -1434,7 +1434,7 @@ const greaterThanDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const greaterThanOrEqualDefinition: FunctionDefinition = { - type: 'operator', + type: FunctionDefinitionTypes.OPERATOR, name: '>=', description: i18n.translate( 'kbn-esql-validation-autocomplete.esql.definitions.greater_than_or_equal', @@ -1811,7 +1811,7 @@ const greaterThanOrEqualDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const inDefinition: FunctionDefinition = { - type: 'operator', + type: FunctionDefinitionTypes.OPERATOR, name: 'in', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.in', { defaultMessage: @@ -2053,7 +2053,7 @@ const inDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const lessThanDefinition: FunctionDefinition = { - type: 'operator', + type: FunctionDefinitionTypes.OPERATOR, name: '<', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.less_than', { defaultMessage: @@ -2427,7 +2427,7 @@ const lessThanDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const lessThanOrEqualDefinition: FunctionDefinition = { - type: 'operator', + type: FunctionDefinitionTypes.OPERATOR, name: '<=', description: i18n.translate( 'kbn-esql-validation-autocomplete.esql.definitions.less_than_or_equal', @@ -2748,7 +2748,7 @@ const lessThanOrEqualDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const likeDefinition: FunctionDefinition = { - type: 'operator', + type: FunctionDefinitionTypes.OPERATOR, name: 'like', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.like', { defaultMessage: @@ -2830,7 +2830,7 @@ const likeDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const matchOperatorDefinition: FunctionDefinition = { - type: 'operator', + type: FunctionDefinitionTypes.OPERATOR, name: ':', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.match_operator', { defaultMessage: @@ -3343,7 +3343,7 @@ const matchOperatorDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const modDefinition: FunctionDefinition = { - type: 'operator', + type: FunctionDefinitionTypes.OPERATOR, name: '%', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.mod', { defaultMessage: @@ -3536,7 +3536,7 @@ const modDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const mulDefinition: FunctionDefinition = { - type: 'operator', + type: FunctionDefinitionTypes.OPERATOR, name: '*', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.mul', { defaultMessage: @@ -3704,7 +3704,7 @@ const mulDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const negDefinition: FunctionDefinition = { - type: 'operator', + type: FunctionDefinitionTypes.OPERATOR, name: '-', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.neg', { defaultMessage: 'Returns the negation of the argument.', @@ -3771,7 +3771,7 @@ const negDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const notEqualsDefinition: FunctionDefinition = { - type: 'operator', + type: FunctionDefinitionTypes.OPERATOR, name: '!=', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.not_equals', { defaultMessage: @@ -4261,7 +4261,7 @@ const notEqualsDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const notInDefinition: FunctionDefinition = { - type: 'operator', + type: FunctionDefinitionTypes.OPERATOR, name: 'not_in', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.not_in', { defaultMessage: @@ -4505,7 +4505,7 @@ const notInDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const notLikeDefinition: FunctionDefinition = { - type: 'operator', + type: FunctionDefinitionTypes.OPERATOR, name: 'not_like', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.not_like', { defaultMessage: @@ -4555,7 +4555,7 @@ const notLikeDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const notRlikeDefinition: FunctionDefinition = { - type: 'operator', + type: FunctionDefinitionTypes.OPERATOR, name: 'not_rlike', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.not_rlike', { defaultMessage: @@ -4605,7 +4605,7 @@ const notRlikeDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const rlikeDefinition: FunctionDefinition = { - type: 'operator', + type: FunctionDefinitionTypes.OPERATOR, name: 'rlike', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.rlike', { defaultMessage: @@ -4689,7 +4689,7 @@ const rlikeDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const subDefinition: FunctionDefinition = { - type: 'operator', + type: FunctionDefinitionTypes.OPERATOR, name: '-', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.sub', { defaultMessage: diff --git a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/generated/scalar_functions.ts b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/generated/scalar_functions.ts index b933992243b9b..7825daff97427 100644 --- a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/generated/scalar_functions.ts +++ b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/generated/scalar_functions.ts @@ -28,12 +28,12 @@ import { i18n } from '@kbn/i18n'; import type { ESQLFunction } from '@kbn/esql-ast'; -import type { FunctionDefinition } from '../types'; +import { type FunctionDefinition, FunctionDefinitionTypes } from '../types'; import { isLiteralItem } from '../../shared/helpers'; // Do not edit this manually... generated by scripts/generate_function_definitions.ts const absDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'abs', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.abs', { defaultMessage: 'Returns the absolute value.', @@ -93,7 +93,7 @@ const absDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const acosDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'acos', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.acos', { defaultMessage: 'Returns the arccosine of `n` as an angle, expressed in radians.', @@ -150,7 +150,7 @@ const acosDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const asinDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'asin', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.asin', { defaultMessage: @@ -208,7 +208,7 @@ const asinDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const atanDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'atan', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.atan', { defaultMessage: @@ -266,7 +266,7 @@ const atanDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const atan2Definition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'atan2', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.atan2', { defaultMessage: @@ -524,7 +524,7 @@ const atan2Definition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const bitLengthDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'bit_length', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.bit_length', { defaultMessage: 'Returns the bit length of a string.', @@ -563,7 +563,7 @@ const bitLengthDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const byteLengthDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'byte_length', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.byte_length', { defaultMessage: 'Returns the byte length of a string.', @@ -602,7 +602,7 @@ const byteLengthDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const cbrtDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'cbrt', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.cbrt', { defaultMessage: @@ -660,7 +660,7 @@ const cbrtDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const ceilDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'ceil', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.ceil', { defaultMessage: 'Round a number up to the nearest integer.', @@ -717,7 +717,7 @@ const ceilDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const cidrMatchDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'cidr_match', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.cidr_match', { defaultMessage: @@ -769,7 +769,7 @@ const cidrMatchDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const coalesceDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'coalesce', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.coalesce', { defaultMessage: @@ -1050,7 +1050,7 @@ const coalesceDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const concatDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'concat', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.concat', { defaultMessage: 'Concatenates two or more strings.', @@ -1133,7 +1133,7 @@ const concatDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const cosDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'cos', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.cos', { defaultMessage: 'Returns the cosine of an angle.', @@ -1190,7 +1190,7 @@ const cosDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const coshDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'cosh', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.cosh', { defaultMessage: 'Returns the hyperbolic cosine of a number.', @@ -1247,7 +1247,7 @@ const coshDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const dateDiffDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'date_diff', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.date_diff', { defaultMessage: @@ -1489,7 +1489,7 @@ const dateDiffDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const dateExtractDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'date_extract', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.date_extract', { defaultMessage: 'Extracts parts of a date, like year, month, day, hour.', @@ -1601,7 +1601,7 @@ const dateExtractDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const dateFormatDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'date_format', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.date_format', { defaultMessage: 'Returns a string representation of a date, in the provided format.', @@ -1700,7 +1700,7 @@ const dateFormatDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const dateParseDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'date_parse', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.date_parse', { defaultMessage: @@ -1778,7 +1778,7 @@ const dateParseDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const dateTruncDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'date_trunc', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.date_trunc', { defaultMessage: 'Rounds down a date to the closest interval.', @@ -1859,7 +1859,7 @@ const dateTruncDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const eDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'e', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.e', { defaultMessage: "Returns Euler's number.", @@ -1880,7 +1880,7 @@ const eDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const endsWithDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'ends_with', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.ends_with', { defaultMessage: @@ -1958,7 +1958,7 @@ const endsWithDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const expDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'exp', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.exp', { defaultMessage: 'Returns the value of e raised to the power of the given number.', @@ -2015,7 +2015,7 @@ const expDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const floorDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'floor', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.floor', { defaultMessage: 'Round a number down to the nearest integer.', @@ -2072,7 +2072,7 @@ const floorDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const fromBase64Definition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'from_base64', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.from_base64', { defaultMessage: 'Decode a base64 string.', @@ -2109,7 +2109,7 @@ const fromBase64Definition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const greatestDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'greatest', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.greatest', { defaultMessage: @@ -2342,7 +2342,7 @@ const greatestDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const hashDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'hash', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.hash', { defaultMessage: @@ -2422,7 +2422,7 @@ const hashDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const hypotDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'hypot', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.hypot', { defaultMessage: @@ -2680,7 +2680,7 @@ const hypotDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const ipPrefixDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'ip_prefix', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.ip_prefix', { defaultMessage: 'Truncates an IP to a given prefix length.', @@ -2719,7 +2719,7 @@ const ipPrefixDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const kqlDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'kql', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.kql', { defaultMessage: @@ -2762,7 +2762,7 @@ const kqlDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const leastDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'least', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.least', { defaultMessage: @@ -2995,7 +2995,7 @@ const leastDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const leftDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'left', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.left', { defaultMessage: @@ -3045,7 +3045,7 @@ const leftDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const lengthDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'length', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.length', { defaultMessage: 'Returns the character length of a string.', @@ -3084,7 +3084,7 @@ const lengthDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const locateDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'locate', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.locate', { defaultMessage: @@ -3242,7 +3242,7 @@ const locateDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const logDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'log', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.log', { defaultMessage: @@ -3566,7 +3566,7 @@ const logDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const log10Definition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'log10', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.log10', { defaultMessage: @@ -3647,7 +3647,7 @@ const log10Definition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const ltrimDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'ltrim', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.ltrim', { defaultMessage: 'Removes leading whitespaces from a string.', @@ -3686,7 +3686,7 @@ const ltrimDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const matchDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'match', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.match', { defaultMessage: @@ -4432,7 +4432,7 @@ const matchDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const md5Definition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'md5', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.md5', { defaultMessage: 'Computes the MD5 hash of the input.', @@ -4471,7 +4471,7 @@ const md5Definition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const mvAppendDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'mv_append', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.mv_append', { defaultMessage: 'Concatenates values of two multi-value fields.', @@ -4743,7 +4743,7 @@ const mvAppendDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const mvAvgDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'mv_avg', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.mv_avg', { defaultMessage: @@ -4801,7 +4801,7 @@ const mvAvgDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const mvConcatDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'mv_concat', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.mv_concat', { defaultMessage: @@ -4882,7 +4882,7 @@ const mvConcatDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const mvCountDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'mv_count', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.mv_count', { defaultMessage: @@ -5050,7 +5050,7 @@ const mvCountDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const mvDedupeDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'mv_dedupe', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.mv_dedupe', { defaultMessage: 'Remove duplicate values from a multivalued field.', @@ -5217,7 +5217,7 @@ const mvDedupeDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const mvFirstDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'mv_first', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.mv_first', { defaultMessage: @@ -5385,7 +5385,7 @@ const mvFirstDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const mvLastDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'mv_last', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.mv_last', { defaultMessage: @@ -5553,7 +5553,7 @@ const mvLastDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const mvMaxDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'mv_max', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.mv_max', { defaultMessage: @@ -5684,7 +5684,7 @@ const mvMaxDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const mvMedianDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'mv_median', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.mv_median', { defaultMessage: @@ -5745,7 +5745,7 @@ const mvMedianDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const mvMedianAbsoluteDeviationDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'mv_median_absolute_deviation', description: i18n.translate( 'kbn-esql-validation-autocomplete.esql.definitions.mv_median_absolute_deviation', @@ -5808,7 +5808,7 @@ const mvMedianAbsoluteDeviationDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const mvMinDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'mv_min', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.mv_min', { defaultMessage: @@ -5939,7 +5939,7 @@ const mvMinDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const mvPercentileDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'mv_percentile', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.mv_percentile', { defaultMessage: @@ -6094,7 +6094,7 @@ const mvPercentileDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const mvPseriesWeightedSumDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'mv_pseries_weighted_sum', description: i18n.translate( 'kbn-esql-validation-autocomplete.esql.definitions.mv_pseries_weighted_sum', @@ -6132,7 +6132,7 @@ const mvPseriesWeightedSumDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const mvSliceDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'mv_slice', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.mv_slice', { defaultMessage: @@ -6453,7 +6453,7 @@ const mvSliceDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const mvSortDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'mv_sort', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.mv_sort', { defaultMessage: 'Sorts a multivalued field in lexicographical order.', @@ -6630,7 +6630,7 @@ const mvSortDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const mvSumDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'mv_sum', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.mv_sum', { defaultMessage: @@ -6688,7 +6688,7 @@ const mvSumDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const mvZipDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'mv_zip', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.mv_zip', { defaultMessage: @@ -6928,7 +6928,7 @@ const mvZipDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const nowDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'now', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.now', { defaultMessage: 'Returns current date and time.', @@ -6949,7 +6949,7 @@ const nowDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const piDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'pi', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.pi', { defaultMessage: "Returns Pi, the ratio of a circle's circumference to its diameter.", @@ -6970,7 +6970,7 @@ const piDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const powDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'pow', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.pow', { defaultMessage: 'Returns the value of `base` raised to the power of `exponent`.', @@ -7230,7 +7230,7 @@ const powDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const qstrDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'qstr', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.qstr', { defaultMessage: @@ -7273,7 +7273,7 @@ const qstrDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const repeatDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'repeat', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.repeat', { defaultMessage: @@ -7321,7 +7321,7 @@ const repeatDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const replaceDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'replace', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.replace', { defaultMessage: @@ -7499,7 +7499,7 @@ const replaceDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const reverseDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'reverse', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.reverse', { defaultMessage: 'Returns a new string representing the input string in reverse order.', @@ -7539,7 +7539,7 @@ const reverseDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const rightDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'right', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.right', { defaultMessage: @@ -7589,7 +7589,7 @@ const rightDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const roundDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'round', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.round', { defaultMessage: @@ -7769,7 +7769,7 @@ const roundDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const rtrimDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'rtrim', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.rtrim', { defaultMessage: 'Removes trailing whitespaces from a string.', @@ -7808,7 +7808,7 @@ const rtrimDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const sha1Definition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'sha1', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.sha1', { defaultMessage: 'Computes the SHA1 hash of the input.', @@ -7847,7 +7847,7 @@ const sha1Definition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const sha256Definition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'sha256', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.sha256', { defaultMessage: 'Computes the SHA256 hash of the input.', @@ -7886,7 +7886,7 @@ const sha256Definition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const signumDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'signum', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.signum', { defaultMessage: @@ -7944,7 +7944,7 @@ const signumDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const sinDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'sin', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.sin', { defaultMessage: 'Returns the sine of an angle.', @@ -8001,7 +8001,7 @@ const sinDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const sinhDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'sinh', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.sinh', { defaultMessage: 'Returns the hyperbolic sine of a number.', @@ -8058,7 +8058,7 @@ const sinhDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const spaceDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'space', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.space', { defaultMessage: 'Returns a string made of `number` spaces.', @@ -8085,7 +8085,7 @@ const spaceDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const splitDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'split', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.split', { defaultMessage: 'Split a single valued string into multiple strings.', @@ -8162,7 +8162,7 @@ const splitDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const sqrtDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'sqrt', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.sqrt', { defaultMessage: @@ -8220,7 +8220,7 @@ const sqrtDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const stContainsDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'st_contains', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.st_contains', { defaultMessage: @@ -8360,7 +8360,7 @@ const stContainsDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const stDisjointDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'st_disjoint', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.st_disjoint', { defaultMessage: @@ -8500,7 +8500,7 @@ const stDisjointDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const stDistanceDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'st_distance', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.st_distance', { defaultMessage: @@ -8550,7 +8550,7 @@ const stDistanceDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const stEnvelopeDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'st_envelope', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.st_envelope', { defaultMessage: 'Determines the minimum bounding box of the supplied geometry.', @@ -8609,7 +8609,7 @@ const stEnvelopeDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const stIntersectsDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'st_intersects', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.st_intersects', { defaultMessage: @@ -8749,7 +8749,7 @@ const stIntersectsDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const stWithinDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'st_within', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.st_within', { defaultMessage: @@ -8889,7 +8889,7 @@ const stWithinDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const stXDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'st_x', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.st_x', { defaultMessage: @@ -8929,7 +8929,7 @@ const stXDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const stXmaxDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'st_xmax', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.st_xmax', { defaultMessage: @@ -8989,7 +8989,7 @@ const stXmaxDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const stXminDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'st_xmin', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.st_xmin', { defaultMessage: @@ -9049,7 +9049,7 @@ const stXminDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const stYDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'st_y', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.st_y', { defaultMessage: @@ -9089,7 +9089,7 @@ const stYDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const stYmaxDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'st_ymax', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.st_ymax', { defaultMessage: @@ -9149,7 +9149,7 @@ const stYmaxDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const stYminDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'st_ymin', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.st_ymin', { defaultMessage: @@ -9209,7 +9209,7 @@ const stYminDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const startsWithDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'starts_with', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.starts_with', { defaultMessage: @@ -9287,7 +9287,7 @@ const startsWithDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const substringDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'substring', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.substring', { defaultMessage: @@ -9349,7 +9349,7 @@ const substringDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const tanDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'tan', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.tan', { defaultMessage: 'Returns the tangent of an angle.', @@ -9406,7 +9406,7 @@ const tanDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const tanhDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'tanh', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.tanh', { defaultMessage: 'Returns the hyperbolic tangent of a number.', @@ -9463,7 +9463,7 @@ const tanhDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const tauDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'tau', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.tau', { defaultMessage: "Returns the ratio of a circle's circumference to its radius.", @@ -9484,7 +9484,7 @@ const tauDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const termDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'term', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.term', { defaultMessage: @@ -9564,7 +9564,7 @@ const termDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const toBase64Definition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'to_base64', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.to_base64', { defaultMessage: 'Encode a string to a base64 string.', @@ -9601,7 +9601,7 @@ const toBase64Definition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const toBooleanDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'to_boolean', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.to_boolean', { defaultMessage: @@ -9689,7 +9689,7 @@ const toBooleanDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const toCartesianpointDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'to_cartesianpoint', description: i18n.translate( 'kbn-esql-validation-autocomplete.esql.definitions.to_cartesianpoint', @@ -9742,7 +9742,7 @@ const toCartesianpointDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const toCartesianshapeDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'to_cartesianshape', description: i18n.translate( 'kbn-esql-validation-autocomplete.esql.definitions.to_cartesianshape', @@ -9805,7 +9805,7 @@ const toCartesianshapeDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const toDateNanosDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'to_date_nanos', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.to_date_nanos', { defaultMessage: 'Converts an input to a nanosecond-resolution date value (aka date_nanos).', @@ -9892,7 +9892,7 @@ const toDateNanosDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const toDateperiodDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'to_dateperiod', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.to_dateperiod', { defaultMessage: 'Converts an input value into a `date_period` value.', @@ -9941,7 +9941,7 @@ const toDateperiodDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const toDatetimeDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'to_datetime', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.to_datetime', { defaultMessage: @@ -10042,7 +10042,7 @@ const toDatetimeDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const toDegreesDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'to_degrees', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.to_degrees', { defaultMessage: 'Converts a number in radians to degrees.', @@ -10099,7 +10099,7 @@ const toDegreesDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const toDoubleDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'to_double', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.to_double', { defaultMessage: @@ -10229,7 +10229,7 @@ const toDoubleDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const toGeopointDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'to_geopoint', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.to_geopoint', { defaultMessage: @@ -10277,7 +10277,7 @@ const toGeopointDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const toGeoshapeDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'to_geoshape', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.to_geoshape', { defaultMessage: @@ -10337,7 +10337,7 @@ const toGeoshapeDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const toIntegerDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'to_integer', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.to_integer', { defaultMessage: @@ -10445,7 +10445,7 @@ const toIntegerDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const toIpDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'to_ip', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.to_ip', { defaultMessage: 'Converts an input string to an IP value.', @@ -10494,7 +10494,7 @@ const toIpDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const toLongDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'to_long', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.to_long', { defaultMessage: @@ -10624,7 +10624,7 @@ const toLongDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const toLowerDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'to_lower', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.to_lower', { defaultMessage: 'Returns a new string representing the input string converted to lower case.', @@ -10661,7 +10661,7 @@ const toLowerDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const toRadiansDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'to_radians', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.to_radians', { defaultMessage: 'Converts a number in degrees to radians.', @@ -10718,7 +10718,7 @@ const toRadiansDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const toStringDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'to_string', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.to_string', { defaultMessage: 'Converts an input value into a string.', @@ -10885,7 +10885,7 @@ const toStringDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const toTimedurationDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'to_timeduration', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.to_timeduration', { defaultMessage: 'Converts an input value into a `time_duration` value.', @@ -10934,7 +10934,7 @@ const toTimedurationDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const toUnsignedLongDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'to_unsigned_long', description: i18n.translate( 'kbn-esql-validation-autocomplete.esql.definitions.to_unsigned_long', @@ -11037,7 +11037,7 @@ const toUnsignedLongDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const toUpperDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'to_upper', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.to_upper', { defaultMessage: 'Returns a new string representing the input string converted to upper case.', @@ -11074,7 +11074,7 @@ const toUpperDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const toVersionDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'to_version', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.to_version', { defaultMessage: 'Converts an input string to a version value.', @@ -11121,7 +11121,7 @@ const toVersionDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const trimDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'trim', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.trim', { defaultMessage: 'Removes leading and trailing whitespaces from a string.', @@ -11160,7 +11160,7 @@ const trimDefinition: FunctionDefinition = { // Do not edit this manually... generated by scripts/generate_function_definitions.ts const caseDefinition: FunctionDefinition = { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'case', description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.case', { defaultMessage: diff --git a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/types.ts b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/types.ts index 0de269191d744..a3aa51c696d61 100644 --- a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/types.ts +++ b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/definitions/types.ts @@ -174,8 +174,15 @@ export interface Signature { returnType: FunctionReturnType; } +export enum FunctionDefinitionTypes { + AGG = 'agg', + SCALAR = 'scalar', + OPERATOR = 'operator', + GROUPING = 'grouping', +} + export interface FunctionDefinition { - type: 'agg' | 'scalar' | 'operator' | 'grouping'; + type: FunctionDefinitionTypes; preview?: boolean; ignoreAsSuggestion?: boolean; name: string; diff --git a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/shared/context.ts b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/shared/context.ts index 8bc59fad94ff8..95d3a9fa2d33b 100644 --- a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/shared/context.ts +++ b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/shared/context.ts @@ -19,6 +19,7 @@ import { isIdentifier, } from '@kbn/esql-ast'; import { ENRICH_MODES } from '../definitions/settings'; +import { FunctionDefinitionTypes } from '../definitions/types'; import { EDITOR_MARKER } from './constants'; import { isOptionItem, @@ -139,7 +140,7 @@ function isNotEnrichClauseAssigment(node: ESQLFunction, command: ESQLCommand) { } function isOperator(node: ESQLFunction) { - return getFunctionDefinition(node.name)?.type === 'operator'; + return getFunctionDefinition(node.name)?.type === FunctionDefinitionTypes.OPERATOR; } /** diff --git a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/shared/helpers.test.ts b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/shared/helpers.test.ts index d453741e6e1de..b4e3deb664e1e 100644 --- a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/shared/helpers.test.ts +++ b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/shared/helpers.test.ts @@ -9,7 +9,7 @@ import { parse } from '@kbn/esql-ast'; import { getBracketsToClose, getExpressionType, shouldBeQuotedSource } from './helpers'; -import { SupportedDataType } from '../definitions/types'; +import { SupportedDataType, FunctionDefinitionTypes } from '../definitions/types'; import { setTestFunctions } from './test_functions'; describe('shouldBeQuotedSource', () => { @@ -184,7 +184,7 @@ describe('getExpressionType', () => { beforeAll(() => { setTestFunctions([ { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'test', description: 'Test function', supportedCommands: ['eval'], @@ -201,14 +201,14 @@ describe('getExpressionType', () => { ], }, { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'returns_keyword', description: 'Test function', supportedCommands: ['eval'], signatures: [{ params: [], returnType: 'keyword' }], }, { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'accepts_dates', description: 'Test function', supportedCommands: ['eval'], @@ -297,7 +297,7 @@ describe('getExpressionType', () => { it('accounts for the "any" parameter type', () => { setTestFunctions([ { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, name: 'test', description: 'Test function', supportedCommands: ['eval'], diff --git a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/shared/helpers.ts b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/shared/helpers.ts index d58d5681422ee..0aa03b3d37999 100644 --- a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/shared/helpers.ts +++ b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/shared/helpers.ts @@ -25,7 +25,7 @@ import { ESQLParamLiteral, ESQLProperNode, } from '@kbn/esql-ast/src/types'; -import { aggregationFunctionDefinitions } from '../definitions/generated/aggregation_functions'; +import { aggFunctionDefinitions } from '../definitions/generated/aggregation_functions'; import { operatorsDefinitions } from '../definitions/all_operators'; import { commandDefinitions } from '../definitions/commands'; import { scalarFunctionDefinitions } from '../definitions/generated/scalar_functions'; @@ -50,6 +50,7 @@ import { FunctionReturnType, ArrayType, SupportedDataType, + FunctionDefinitionTypes, } from '../definitions/types'; import type { ESQLRealField, ESQLVariable, ReferenceMaps } from '../validation/types'; import { removeMarkerArgFromArgsList } from './context'; @@ -146,7 +147,7 @@ function buildFunctionLookup() { fnLookups = operatorsDefinitions .concat( scalarFunctionDefinitions, - aggregationFunctionDefinitions, + aggFunctionDefinitions, groupingFunctionDefinitions, getTestFunctions() ) @@ -652,7 +653,7 @@ export function shouldBeQuotedText( } export const isAggFunction = (arg: ESQLFunction): boolean => - getFunctionDefinition(arg.name)?.type === 'agg'; + getFunctionDefinition(arg.name)?.type === FunctionDefinitionTypes.AGG; export const isParam = (x: unknown): x is ESQLParamLiteral => !!x && diff --git a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/validation/__tests__/fields_and_variables.test.ts b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/validation/__tests__/fields_and_variables.test.ts index 1224edeb7dbce..8a6313255c1af 100644 --- a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/validation/__tests__/fields_and_variables.test.ts +++ b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/validation/__tests__/fields_and_variables.test.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { FunctionParameterType } from '../../definitions/types'; +import { FunctionParameterType, FunctionDefinitionTypes } from '../../definitions/types'; import { setTestFunctions } from '../../shared/test_functions'; import { setup } from './helpers'; @@ -117,7 +117,7 @@ describe('variable support', () => { setTestFunctions([ // this test function is just used to test the type of the variable { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, description: 'Test function', supportedCommands: ['eval'], name: 'test', @@ -128,7 +128,7 @@ describe('variable support', () => { // this test function is used to check that the correct return type is used // when determining variable types { - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, description: 'Test function', supportedCommands: ['eval'], name: 'return_value', diff --git a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/validation/__tests__/functions.test.ts b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/validation/__tests__/functions.test.ts index df1a8b2e5314d..8b16ea7e3dd26 100644 --- a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/validation/__tests__/functions.test.ts +++ b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/validation/__tests__/functions.test.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { FunctionDefinition } from '../../definitions/types'; +import { FunctionDefinition, FunctionDefinitionTypes } from '../../definitions/types'; import { setTestFunctions } from '../../shared/test_functions'; import { setup } from './helpers'; @@ -23,7 +23,7 @@ describe('function validation', () => { const definitions: FunctionDefinition[] = [ { name: 'test', - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, description: '', supportedCommands: ['eval'], signatures: [ @@ -39,7 +39,7 @@ describe('function validation', () => { }, { name: 'returns_integer', - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, description: '', supportedCommands: ['eval'], signatures: [ @@ -51,7 +51,7 @@ describe('function validation', () => { }, { name: 'returns_double', - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, description: '', supportedCommands: ['eval'], signatures: [ @@ -145,7 +145,7 @@ describe('function validation', () => { it('any type', async () => { const testFn: FunctionDefinition = { name: 'test', - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, description: '', supportedCommands: ['eval'], signatures: [ @@ -170,7 +170,7 @@ describe('function validation', () => { it('list type', async () => { const testFn: FunctionDefinition = { name: 'in', - type: 'operator', + type: FunctionDefinitionTypes.OPERATOR, description: '', supportedCommands: ['row'], signatures: [ @@ -198,7 +198,7 @@ describe('function validation', () => { it('checks types by signature', async () => { const testFn: FunctionDefinition = { name: 'test', - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, description: '', supportedCommands: ['eval'], signatures: [ @@ -269,7 +269,7 @@ describe('function validation', () => { const testFns: FunctionDefinition[] = [ { name: 'test', - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, description: '', supportedCommands: ['eval'], signatures: [ @@ -288,7 +288,7 @@ describe('function validation', () => { }, { name: 'variadic_fn', - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, description: '', supportedCommands: ['eval'], signatures: [ @@ -327,7 +327,7 @@ describe('function validation', () => { const testFns: FunctionDefinition[] = [ { name: 'test', - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, description: '', supportedCommands: ['eval'], signatures: [ @@ -354,7 +354,7 @@ describe('function validation', () => { setTestFunctions([ { name: 'supports_all', - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, description: '', supportedCommands: ['eval'], signatures: [ @@ -366,7 +366,7 @@ describe('function validation', () => { }, { name: 'does_not_support_all', - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, description: '', supportedCommands: ['eval'], signatures: [ @@ -397,7 +397,7 @@ describe('function validation', () => { setTestFunctions([ { name: 'test', - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, description: '', supportedCommands: ['eval'], signatures: [ @@ -428,7 +428,7 @@ describe('function validation', () => { setTestFunctions([ { name: 'test', - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, description: '', supportedCommands: ['eval'], signatures: [ @@ -440,7 +440,7 @@ describe('function validation', () => { }, { name: 'test2', - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, description: '', supportedCommands: ['eval'], signatures: [ @@ -476,7 +476,7 @@ describe('function validation', () => { setTestFunctions([ { name: 'test', - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, description: '', supportedCommands: ['eval'], signatures: [ @@ -510,7 +510,7 @@ describe('function validation', () => { setTestFunctions([ { name: 'test1', - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, description: '', supportedCommands: ['eval'], signatures: [ @@ -522,7 +522,7 @@ describe('function validation', () => { }, { name: 'test2', - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, description: '', supportedCommands: ['eval'], signatures: [ @@ -534,7 +534,7 @@ describe('function validation', () => { }, { name: 'test3', - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, description: '', supportedCommands: ['eval'], signatures: [ @@ -561,7 +561,7 @@ describe('function validation', () => { setTestFunctions([ { name: 'eval_fn', - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, description: '', supportedCommands: ['eval'], signatures: [ @@ -573,7 +573,7 @@ describe('function validation', () => { }, { name: 'stats_fn', - type: 'agg', + type: FunctionDefinitionTypes.AGG, description: '', supportedCommands: ['stats'], signatures: [ @@ -585,7 +585,7 @@ describe('function validation', () => { }, { name: 'row_fn', - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, description: '', supportedCommands: ['row'], signatures: [ @@ -597,7 +597,7 @@ describe('function validation', () => { }, { name: 'where_fn', - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, description: '', supportedCommands: ['where'], signatures: [ @@ -609,7 +609,7 @@ describe('function validation', () => { }, { name: 'sort_fn', - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, description: '', supportedCommands: ['sort'], signatures: [ @@ -649,7 +649,7 @@ describe('function validation', () => { setTestFunctions([ { name: 'supports_by_option', - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, description: '', supportedCommands: ['eval'], supportedOptions: ['by'], @@ -662,7 +662,7 @@ describe('function validation', () => { }, { name: 'does_not_support_by_option', - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, description: '', supportedCommands: ['eval'], supportedOptions: [], @@ -676,7 +676,7 @@ describe('function validation', () => { { name: 'agg_fn', - type: 'agg', + type: FunctionDefinitionTypes.AGG, description: '', supportedCommands: ['stats'], supportedOptions: [], @@ -703,7 +703,7 @@ describe('function validation', () => { setTestFunctions([ { name: 'test', - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, description: '', supportedCommands: ['eval'], signatures: [ @@ -715,7 +715,7 @@ describe('function validation', () => { }, { name: 'test2', - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, description: '', supportedCommands: ['eval'], signatures: [ @@ -736,7 +736,7 @@ describe('function validation', () => { setTestFunctions([ { name: 'agg_fn', - type: 'agg', + type: FunctionDefinitionTypes.AGG, description: '', supportedCommands: ['stats'], signatures: [ @@ -748,7 +748,7 @@ describe('function validation', () => { }, { name: 'scalar_fn', - type: 'scalar', + type: FunctionDefinitionTypes.SCALAR, description: '', supportedCommands: ['stats'], signatures: [ diff --git a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/validation/validation.test.ts b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/validation/validation.test.ts index a7172f50ce803..8d4b47c89370c 100644 --- a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/validation/validation.test.ts +++ b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/validation/validation.test.ts @@ -20,7 +20,7 @@ import { fieldTypes as _fieldTypes, } from '../definitions/types'; import { timeUnits, timeUnitsToSuggest } from '../definitions/literals'; -import { aggregationFunctionDefinitions } from '../definitions/generated/aggregation_functions'; +import { aggFunctionDefinitions } from '../definitions/generated/aggregation_functions'; import capitalize from 'lodash/capitalize'; import { camelCase } from 'lodash'; import { getAstAndSyntaxErrors } from '@kbn/esql-ast'; @@ -43,7 +43,7 @@ const NESTED_DEPTHS = Array(NESTING_LEVELS) .fill(0) .map((_, i) => i + 1); -const toAvgSignature = aggregationFunctionDefinitions.find(({ name }) => name === 'avg')!; +const toAvgSignature = aggFunctionDefinitions.find(({ name }) => name === 'avg')!; const toInteger = scalarFunctionDefinitions.find(({ name }) => name === 'to_integer')!; const toDoubleSignature = scalarFunctionDefinitions.find(({ name }) => name === 'to_double')!; const toStringSignature = scalarFunctionDefinitions.find(({ name }) => name === 'to_string')!; diff --git a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/validation/validation.ts b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/validation/validation.ts index 9a43caf8e359a..21c4df26d55e8 100644 --- a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/validation/validation.ts +++ b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/validation/validation.ts @@ -35,6 +35,7 @@ import { CommandModeDefinition, CommandOptionsDefinition, FunctionParameter, + FunctionDefinitionTypes, } from '../definitions/types'; import { areFieldAndVariableTypesCompatible, @@ -215,7 +216,7 @@ function validateNestedFunctionArg( const argFn = getFunctionDefinition(actualArg.name)!; const fnDef = getFunctionDefinition(astFunction.name)!; // no nestying criteria should be enforced only for same type function - if (fnDef.type === 'agg' && argFn.type === 'agg') { + if (fnDef.type === FunctionDefinitionTypes.AGG && argFn.type === FunctionDefinitionTypes.AGG) { messages.push( getMessageFromId({ messageId: 'noNestedArgumentSupport', @@ -838,7 +839,7 @@ const validateAggregates = ( visitFunction: (fn) => { const definition = getFunctionDefinition(fn.name); if (!definition) return; - if (definition.type === 'agg') hasAggregationFunction = true; + if (definition.type === FunctionDefinitionTypes.AGG) hasAggregationFunction = true; }, }); diff --git a/src/platform/plugins/shared/esql/public/triggers/esql_controls/control_flyout/identifier_control_form.tsx b/src/platform/plugins/shared/esql/public/triggers/esql_controls/control_flyout/identifier_control_form.tsx index 9b67486e702c9..d16572e5a6f61 100644 --- a/src/platform/plugins/shared/esql/public/triggers/esql_controls/control_flyout/identifier_control_form.tsx +++ b/src/platform/plugins/shared/esql/public/triggers/esql_controls/control_flyout/identifier_control_form.tsx @@ -23,7 +23,7 @@ import type { ISearchGeneric } from '@kbn/search-types'; import { ESQLVariableType, ESQLControlVariable, - aggregationFunctionDefinitions, + aggFunctionDefinitions, } from '@kbn/esql-validation-autocomplete'; import { getESQLQueryColumnsRaw } from '@kbn/esql-utils'; import type { ESQLControlState, ControlWidthOptions } from '../types'; @@ -131,7 +131,7 @@ export function IdentifierControlForm({ }); } if (variableType === ESQLVariableType.FUNCTIONS) { - const aggregatedFunctions = aggregationFunctionDefinitions.map((func) => { + const aggregatedFunctions = aggFunctionDefinitions.map((func) => { return { label: func.name, key: func.name,