import type { TermDslExpression, DslQueryType, } from '/lib/xp/node'; interface QueryExpressionTermParams extends TermDslExpression { field: TermDslExpression['field'] value: ValueType type?: TermDslExpression['type'] boost?: TermDslExpression['boost'] } interface QueryExpressionTerm { term: QueryExpressionTermParams } export const DSL_EXPRESSION_VALUE_TYPE_DATE_TIME = 'dateTime'; export const DSL_EXPRESSION_VALUE_TYPE_TIME = 'time'; export function term< ValueType >( field: string, value: ValueType, boost?: number, type?: DslQueryType, ): QueryExpressionTerm { const term: QueryExpressionTermParams = { field, value } if (boost) { term.boost = boost; } if ( type === DSL_EXPRESSION_VALUE_TYPE_TIME || type === DSL_EXPRESSION_VALUE_TYPE_DATE_TIME ) { term.type = type; } return { term }; }