@redis/search
Advanced tools
| import { CommandParser } from '@redis/client/dist/lib/client/parser'; | ||
| import { RedisArgument, ArrayReply, SetReply, BlobStringReply } from '@redis/client/dist/lib/RESP/types'; | ||
| declare const _default: { | ||
| readonly NOT_KEYED_COMMAND: true; | ||
| readonly IS_READ_ONLY: true; | ||
| readonly parseCommand: (this: void, parser: CommandParser, index: RedisArgument) => void; | ||
| readonly transformReply: { | ||
| readonly 2: () => ArrayReply<BlobStringReply>; | ||
| readonly 3: () => SetReply<BlobStringReply>; | ||
| }; | ||
| }; | ||
| export default _default; | ||
| //# sourceMappingURL=ALIASLIST.d.ts.map |
| {"version":3,"file":"ALIASLIST.d.ts","sourceRoot":"","sources":["../../../lib/commands/ALIASLIST.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAW,MAAM,mCAAmC,CAAC;;;;gDAK3F,aAAa,SAAS,aAAa;;0BAIrB,WAAW,eAAe,CAAC;0BAC3B,SAAS,eAAe,CAAC;;;AAR9D,wBAU6B"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.default = { | ||
| NOT_KEYED_COMMAND: true, | ||
| IS_READ_ONLY: true, | ||
| parseCommand(parser, index) { | ||
| parser.push('FT.ALIASLIST', index); | ||
| }, | ||
| transformReply: { | ||
| 2: undefined, | ||
| 3: undefined | ||
| } | ||
| }; | ||
| //# sourceMappingURL=ALIASLIST.js.map |
| {"version":3,"file":"ALIASLIST.js","sourceRoot":"","sources":["../../../lib/commands/ALIASLIST.ts"],"names":[],"mappings":";;AAGA,kBAAe;IACb,iBAAiB,EAAE,IAAI;IACvB,YAAY,EAAE,IAAI;IAClB,YAAY,CAAC,MAAqB,EAAE,KAAoB;QACtD,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IACD,cAAc,EAAE;QACd,CAAC,EAAE,SAAyD;QAC5D,CAAC,EAAE,SAAuD;KAC3D;CACyB,CAAC","sourcesContent":["import { CommandParser } from '@redis/client/dist/lib/client/parser';\nimport { RedisArgument, ArrayReply, SetReply, BlobStringReply, Command } from '@redis/client/dist/lib/RESP/types';\n\nexport default {\n NOT_KEYED_COMMAND: true,\n IS_READ_ONLY: true,\n parseCommand(parser: CommandParser, index: RedisArgument) {\n parser.push('FT.ALIASLIST', index);\n },\n transformReply: {\n 2: undefined as unknown as () => ArrayReply<BlobStringReply>,\n 3: undefined as unknown as () => SetReply<BlobStringReply>\n }\n} as const satisfies Command;\n"]} |
@@ -34,2 +34,3 @@ import { CommandParser } from '@redis/client/dist/lib/client/parser'; | ||
| readonly RANDOM_SAMPLE: "RANDOM_SAMPLE"; | ||
| readonly COLLECT: "COLLECT"; | ||
| }; | ||
@@ -66,3 +67,12 @@ type FT_AGGREGATE_GROUP_BY_REDUCERS = typeof FT_AGGREGATE_GROUP_BY_REDUCERS; | ||
| } | ||
| export type GroupByReducers = CountReducer | CountDistinctReducer | CountDistinctishReducer | SumReducer | MinReducer | MaxReducer | AvgReducer | StdDevReducer | QuantileReducer | ToListReducer | FirstValueReducer | RandomSampleReducer; | ||
| interface CollectReducer extends GroupByReducer<FT_AGGREGATE_GROUP_BY_REDUCERS['COLLECT']> { | ||
| FIELDS: '*' | RediSearchProperty | Array<RediSearchProperty>; | ||
| DISTINCT?: boolean; | ||
| SORTBY?: SortByProperty | Array<SortByProperty>; | ||
| LIMIT?: { | ||
| from: number; | ||
| size: number; | ||
| }; | ||
| } | ||
| export type GroupByReducers = CountReducer | CountDistinctReducer | CountDistinctishReducer | SumReducer | MinReducer | MaxReducer | AvgReducer | StdDevReducer | QuantileReducer | ToListReducer | FirstValueReducer | RandomSampleReducer | CollectReducer; | ||
| interface GroupByStep extends AggregateStep<FT_AGGREGATE_STEPS['GROUPBY']> { | ||
@@ -107,2 +117,8 @@ properties?: RediSearchProperty | Array<RediSearchProperty>; | ||
| results: Array<MapReply<BlobStringReply, BlobStringReply>>; | ||
| /** | ||
| * Warnings returned alongside partial results (e.g. on query timeout under a | ||
| * `return` / `return-strict` on-timeout policy). Only populated on RESP3; | ||
| * always empty on RESP2. | ||
| */ | ||
| warnings: Array<string>; | ||
| } | ||
@@ -109,0 +125,0 @@ declare function transformAggregateReplyResp2(rawReply: AggregateRawReply, preserve?: any, typeMapping?: TypeMapping): AggregateReply; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"AGGREGATE.d.ts","sourceRoot":"","sources":["../../../lib/commands/AGGREGATE.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"AGGREGATE.d.ts","sourceRoot":"","sources":["../../../lib/commands/AGGREGATE.ts"],"names":[],"mappings":"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"} |
@@ -28,3 +28,4 @@ "use strict"; | ||
| FIRST_VALUE: 'FIRST_VALUE', | ||
| RANDOM_SAMPLE: 'RANDOM_SAMPLE' | ||
| RANDOM_SAMPLE: 'RANDOM_SAMPLE', | ||
| COLLECT: 'COLLECT' | ||
| }; | ||
@@ -44,3 +45,5 @@ ; | ||
| total: Number(rawReply[0]), | ||
| results | ||
| results, | ||
| // FT.AGGREGATE only emits warnings on RESP3; RESP2 replies never carry them. | ||
| warnings: [] | ||
| }; | ||
@@ -74,3 +77,4 @@ } | ||
| total, | ||
| results | ||
| results, | ||
| warnings: (0, reply_transformers_1.parseWarnings)(reply) | ||
| }; | ||
@@ -225,2 +229,30 @@ } | ||
| break; | ||
| case exports.FT_AGGREGATE_GROUP_BY_REDUCERS.COLLECT: { | ||
| const args = ['FIELDS']; | ||
| // Wildcard is a bare token (`FIELDS *`); an explicit list is count-prefixed | ||
| // (`FIELDS <num> field ...`). | ||
| if (reducer.FIELDS === '*') { | ||
| args.push('*'); | ||
| } | ||
| else { | ||
| const fields = Array.isArray(reducer.FIELDS) ? reducer.FIELDS : [reducer.FIELDS]; | ||
| args.push(fields.length.toString(), ...fields); | ||
| } | ||
| if (reducer.DISTINCT) { | ||
| args.push('DISTINCT'); | ||
| } | ||
| if (reducer.SORTBY) { | ||
| const sortBys = Array.isArray(reducer.SORTBY) ? reducer.SORTBY : [reducer.SORTBY]; | ||
| const sortArgs = []; | ||
| for (const sortBy of sortBys) { | ||
| pushSortByProperty(sortArgs, sortBy); | ||
| } | ||
| args.push('SORTBY', sortArgs.length.toString(), ...sortArgs); | ||
| } | ||
| if (reducer.LIMIT) { | ||
| args.push('LIMIT', reducer.LIMIT.from.toString(), reducer.LIMIT.size.toString()); | ||
| } | ||
| parser.pushVariadicWithLength(args); | ||
| break; | ||
| } | ||
| } | ||
@@ -227,0 +259,0 @@ if (reducer.AS) { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"AGGREGATE.js","sourceRoot":"","sources":["../../../lib/commands/AGGREGATE.ts"],"names":[],"mappings":"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","sourcesContent":["import { CommandParser } from '@redis/client/dist/lib/client/parser';\nimport { ArrayReply, BlobStringReply, Command, MapReply, NumberReply, RedisArgument, ReplyUnion, TypeMapping, UnwrapReply } from '@redis/client/dist/lib/RESP/types';\nimport { RediSearchProperty } from './CREATE';\nimport { FtSearchParams, parseParamsArgument } from './SEARCH';\nimport { transformTuplesReply } from '@redis/client/dist/lib/commands/generic-transformers';\nimport { DEFAULT_DIALECT } from '../dialect/default';\nimport { getMapValue, mapLikeToFlatArray, mapLikeToObject, mapLikeValues, parseAggregateResultRow } from './reply-transformers';\nimport { RESP_TYPES } from '@redis/client/dist/lib/RESP/decoder';\n\ntype LoadField = RediSearchProperty | {\n identifier: RediSearchProperty;\n AS?: RedisArgument;\n}\n\nexport const FT_AGGREGATE_STEPS = {\n GROUPBY: 'GROUPBY',\n SORTBY: 'SORTBY',\n APPLY: 'APPLY',\n LIMIT: 'LIMIT',\n FILTER: 'FILTER'\n} as const;\n\ntype FT_AGGREGATE_STEPS = typeof FT_AGGREGATE_STEPS;\n\nexport type FtAggregateStep = FT_AGGREGATE_STEPS[keyof FT_AGGREGATE_STEPS];\n\ninterface AggregateStep<T extends FtAggregateStep> {\n type: T;\n}\n\nexport const FT_AGGREGATE_GROUP_BY_REDUCERS = {\n COUNT: 'COUNT',\n COUNT_DISTINCT: 'COUNT_DISTINCT',\n COUNT_DISTINCTISH: 'COUNT_DISTINCTISH',\n SUM: 'SUM',\n MIN: 'MIN',\n MAX: 'MAX',\n AVG: 'AVG',\n STDDEV: 'STDDEV',\n QUANTILE: 'QUANTILE',\n TOLIST: 'TOLIST',\n FIRST_VALUE: 'FIRST_VALUE',\n RANDOM_SAMPLE: 'RANDOM_SAMPLE'\n} as const;\n\ntype FT_AGGREGATE_GROUP_BY_REDUCERS = typeof FT_AGGREGATE_GROUP_BY_REDUCERS;\n\nexport type FtAggregateGroupByReducer = FT_AGGREGATE_GROUP_BY_REDUCERS[keyof FT_AGGREGATE_GROUP_BY_REDUCERS];\n\ninterface GroupByReducer<T extends FtAggregateGroupByReducer> {\n type: T;\n AS?: RedisArgument;\n}\n\ninterface GroupByReducerWithProperty<T extends FtAggregateGroupByReducer> extends GroupByReducer<T> {\n property: RediSearchProperty;\n}\n\ntype CountReducer = GroupByReducer<FT_AGGREGATE_GROUP_BY_REDUCERS['COUNT']>;\n\ntype CountDistinctReducer = GroupByReducerWithProperty<FT_AGGREGATE_GROUP_BY_REDUCERS['COUNT_DISTINCT']>;\n\ntype CountDistinctishReducer = GroupByReducerWithProperty<FT_AGGREGATE_GROUP_BY_REDUCERS['COUNT_DISTINCTISH']>;\n\ntype SumReducer = GroupByReducerWithProperty<FT_AGGREGATE_GROUP_BY_REDUCERS['SUM']>;\n\ntype MinReducer = GroupByReducerWithProperty<FT_AGGREGATE_GROUP_BY_REDUCERS['MIN']>;\n\ntype MaxReducer = GroupByReducerWithProperty<FT_AGGREGATE_GROUP_BY_REDUCERS['MAX']>;\n\ntype AvgReducer = GroupByReducerWithProperty<FT_AGGREGATE_GROUP_BY_REDUCERS['AVG']>;\n\ntype StdDevReducer = GroupByReducerWithProperty<FT_AGGREGATE_GROUP_BY_REDUCERS['STDDEV']>;\n\ninterface QuantileReducer extends GroupByReducerWithProperty<FT_AGGREGATE_GROUP_BY_REDUCERS['QUANTILE']> {\n quantile: number;\n}\n\ntype ToListReducer = GroupByReducerWithProperty<FT_AGGREGATE_GROUP_BY_REDUCERS['TOLIST']>;\n\ninterface FirstValueReducer extends GroupByReducerWithProperty<FT_AGGREGATE_GROUP_BY_REDUCERS['FIRST_VALUE']> {\n BY?: RediSearchProperty | {\n property: RediSearchProperty;\n direction?: 'ASC' | 'DESC';\n };\n}\n\ninterface RandomSampleReducer extends GroupByReducerWithProperty<FT_AGGREGATE_GROUP_BY_REDUCERS['RANDOM_SAMPLE']> {\n sampleSize: number;\n}\n\nexport type GroupByReducers = CountReducer | CountDistinctReducer | CountDistinctishReducer | SumReducer | MinReducer | MaxReducer | AvgReducer | StdDevReducer | QuantileReducer | ToListReducer | FirstValueReducer | RandomSampleReducer;\n\ninterface GroupByStep extends AggregateStep<FT_AGGREGATE_STEPS['GROUPBY']> {\n properties?: RediSearchProperty | Array<RediSearchProperty>;\n REDUCE: GroupByReducers | Array<GroupByReducers>;\n}\n\ntype SortByProperty = RedisArgument | {\n BY: RediSearchProperty;\n DIRECTION?: 'ASC' | 'DESC';\n};\n\ninterface SortStep extends AggregateStep<FT_AGGREGATE_STEPS['SORTBY']> {\n BY: SortByProperty | Array<SortByProperty>;\n MAX?: number;\n}\n\ninterface ApplyStep extends AggregateStep<FT_AGGREGATE_STEPS['APPLY']> {\n expression: RedisArgument;\n AS: RedisArgument;\n}\n\ninterface LimitStep extends AggregateStep<FT_AGGREGATE_STEPS['LIMIT']> {\n from: number;\n size: number;\n}\n\ninterface FilterStep extends AggregateStep<FT_AGGREGATE_STEPS['FILTER']> {\n expression: RedisArgument;\n}\n\nexport interface FtAggregateOptions {\n VERBATIM?: boolean;\n ADDSCORES?: boolean;\n LOAD?: '*' | LoadField | Array<LoadField>;\n TIMEOUT?: number;\n STEPS?: Array<GroupByStep | SortStep | ApplyStep | LimitStep | FilterStep>;\n PARAMS?: FtSearchParams;\n DIALECT?: number;\n}\n\nexport type AggregateRawReply = [\n total: UnwrapReply<NumberReply>,\n ...results: UnwrapReply<ArrayReply<ArrayReply<BlobStringReply>>>\n];\n\nexport interface AggregateReply {\n total: number;\n results: Array<MapReply<BlobStringReply, BlobStringReply>>;\n};\n\nfunction transformAggregateReplyResp2(\n rawReply: AggregateRawReply,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- matches TransformReply contract\n preserve?: any,\n typeMapping?: TypeMapping\n): AggregateReply {\n const results: Array<MapReply<BlobStringReply, BlobStringReply>> = [];\n for (let i = 1; i < rawReply.length; i++) {\n results.push(\n transformTuplesReply(rawReply[i] as ArrayReply<BlobStringReply>, preserve, typeMapping)\n );\n }\n\n return {\n // https://redis.io/docs/latest/commands/ft.aggregate/#return\n // FT.AGGREGATE returns an array reply where each row is an array reply and represents a single aggregate result.\n // The integer reply at position 1 does not represent a valid value.\n total: Number(rawReply[0]),\n results\n };\n}\n\nfunction transformAggregateReplyResp3(\n rawReply: ReplyUnion,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- matches TransformReply contract\n preserve?: any,\n typeMapping?: TypeMapping\n): AggregateReply {\n const reply = mapLikeToObject(rawReply);\n const total = Number(getMapValue(reply, ['total_results', 'total']) ?? 0);\n const rawResults = mapLikeValues(getMapValue(reply, ['results']) ?? []);\n\n const results: Array<MapReply<BlobStringReply, BlobStringReply>> = [];\n const mapType = typeMapping ? typeMapping[RESP_TYPES.MAP] : undefined;\n\n for (const rawResult of rawResults) {\n const normalized = parseAggregateResultRow(rawResult);\n\n switch (mapType) {\n case Array: {\n results.push(mapLikeToFlatArray(normalized) as unknown as MapReply<BlobStringReply, BlobStringReply>);\n break;\n }\n case Map: {\n results.push(new Map(Object.entries(normalized)) as unknown as MapReply<BlobStringReply, BlobStringReply>);\n break;\n }\n default: {\n results.push(normalized as unknown as MapReply<BlobStringReply, BlobStringReply>);\n }\n }\n }\n\n return {\n total,\n results\n };\n}\n\nexport default {\n NOT_KEYED_COMMAND: true,\n IS_READ_ONLY: false,\n parseCommand(parser: CommandParser, index: RedisArgument, query: RedisArgument, options?: FtAggregateOptions) {\n parser.push('FT.AGGREGATE', index, query);\n\n return parseAggregateOptions(parser, options);\n },\n transformReply: {\n 2: transformAggregateReplyResp2,\n 3: transformAggregateReplyResp3\n },\n} as const satisfies Command;\n\nexport function parseAggregateOptions(parser: CommandParser, options?: FtAggregateOptions) {\n if (options?.VERBATIM) {\n parser.push('VERBATIM');\n }\n\n if (options?.ADDSCORES) {\n parser.push('ADDSCORES');\n }\n\n if (options?.LOAD) {\n parser.push('LOAD');\n if (options.LOAD === '*') {\n parser.push('*');\n } else {\n const args: Array<RedisArgument> = [];\n\n if (Array.isArray(options?.LOAD)) {\n for (const load of options.LOAD) {\n pushLoadField(args, load);\n }\n } else {\n pushLoadField(args, options?.LOAD);\n }\n\n parser.pushVariadicWithLength(args);\n }\n } if (options?.TIMEOUT !== undefined) {\n parser.push('TIMEOUT', options.TIMEOUT.toString());\n }\n\n if (options?.STEPS) {\n for (const step of options.STEPS) {\n parser.push(step.type);\n switch (step.type) {\n case FT_AGGREGATE_STEPS.GROUPBY:\n if (!step.properties) {\n parser.push('0');\n } else {\n parser.pushVariadicWithLength(step.properties);\n }\n\n if (Array.isArray(step.REDUCE)) {\n for (const reducer of step.REDUCE) {\n parseGroupByReducer(parser, reducer);\n }\n } else {\n parseGroupByReducer(parser, step.REDUCE);\n }\n\n break;\n\n case FT_AGGREGATE_STEPS.SORTBY: {\n const args: Array<RedisArgument> = [];\n\n if (Array.isArray(step.BY)) {\n for (const by of step.BY) {\n pushSortByProperty(args, by);\n }\n } else {\n pushSortByProperty(args, step.BY);\n }\n\n if (step.MAX) {\n args.push('MAX', step.MAX.toString());\n }\n\n parser.pushVariadicWithLength(args);\n\n break;\n }\n\n case FT_AGGREGATE_STEPS.APPLY:\n parser.push(step.expression, 'AS', step.AS);\n break;\n\n case FT_AGGREGATE_STEPS.LIMIT:\n parser.push(step.from.toString(), step.size.toString());\n break;\n\n case FT_AGGREGATE_STEPS.FILTER:\n parser.push(step.expression);\n break;\n }\n }\n }\n\n parseParamsArgument(parser, options?.PARAMS);\n\n if (options?.DIALECT) {\n parser.push('DIALECT', options.DIALECT.toString());\n } else {\n parser.push('DIALECT', DEFAULT_DIALECT);\n }\n}\n\nfunction pushLoadField(args: Array<RedisArgument>, toLoad: LoadField) {\n if (typeof toLoad === 'string' || toLoad instanceof Buffer) {\n args.push(toLoad);\n } else {\n args.push(toLoad.identifier);\n\n if (toLoad.AS) {\n args.push('AS', toLoad.AS);\n }\n }\n}\n\nexport function parseGroupByReducer(parser: CommandParser, reducer: GroupByReducers) {\n parser.push('REDUCE', reducer.type);\n\n switch (reducer.type) {\n case FT_AGGREGATE_GROUP_BY_REDUCERS.COUNT:\n parser.push('0');\n break;\n\n case FT_AGGREGATE_GROUP_BY_REDUCERS.COUNT_DISTINCT:\n case FT_AGGREGATE_GROUP_BY_REDUCERS.COUNT_DISTINCTISH:\n case FT_AGGREGATE_GROUP_BY_REDUCERS.SUM:\n case FT_AGGREGATE_GROUP_BY_REDUCERS.MIN:\n case FT_AGGREGATE_GROUP_BY_REDUCERS.MAX:\n case FT_AGGREGATE_GROUP_BY_REDUCERS.AVG:\n case FT_AGGREGATE_GROUP_BY_REDUCERS.STDDEV:\n case FT_AGGREGATE_GROUP_BY_REDUCERS.TOLIST:\n parser.push('1', reducer.property);\n break;\n\n case FT_AGGREGATE_GROUP_BY_REDUCERS.QUANTILE:\n parser.push('2', reducer.property, reducer.quantile.toString());\n break;\n\n case FT_AGGREGATE_GROUP_BY_REDUCERS.FIRST_VALUE: {\n const args: Array<RedisArgument> = [reducer.property];\n\n if (reducer.BY) {\n args.push('BY');\n if (typeof reducer.BY === 'string' || reducer.BY instanceof Buffer) {\n args.push(reducer.BY);\n } else {\n args.push(reducer.BY.property);\n if (reducer.BY.direction) {\n args.push(reducer.BY.direction);\n }\n }\n }\n\n parser.pushVariadicWithLength(args);\n break;\n }\n\n case FT_AGGREGATE_GROUP_BY_REDUCERS.RANDOM_SAMPLE:\n parser.push('2', reducer.property, reducer.sampleSize.toString());\n break;\n }\n\n if (reducer.AS) {\n parser.push('AS', reducer.AS);\n }\n}\n\nfunction pushSortByProperty(args: Array<RedisArgument>, sortBy: SortByProperty) {\n if (typeof sortBy === 'string' || sortBy instanceof Buffer) {\n args.push(sortBy);\n } else {\n args.push(sortBy.BY);\n if (sortBy.DIRECTION) {\n args.push(sortBy.DIRECTION);\n }\n }\n}\n"]} | ||
| {"version":3,"file":"AGGREGATE.js","sourceRoot":"","sources":["../../../lib/commands/AGGREGATE.ts"],"names":[],"mappings":"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","sourcesContent":["import { CommandParser } from '@redis/client/dist/lib/client/parser';\nimport { ArrayReply, BlobStringReply, Command, MapReply, NumberReply, RedisArgument, ReplyUnion, TypeMapping, UnwrapReply } from '@redis/client/dist/lib/RESP/types';\nimport { RediSearchProperty } from './CREATE';\nimport { FtSearchParams, parseParamsArgument } from './SEARCH';\nimport { transformTuplesReply } from '@redis/client/dist/lib/commands/generic-transformers';\nimport { DEFAULT_DIALECT } from '../dialect/default';\nimport { getMapValue, mapLikeToFlatArray, mapLikeToObject, mapLikeValues, parseAggregateResultRow, parseWarnings } from './reply-transformers';\nimport { RESP_TYPES } from '@redis/client/dist/lib/RESP/decoder';\n\ntype LoadField = RediSearchProperty | {\n identifier: RediSearchProperty;\n AS?: RedisArgument;\n}\n\nexport const FT_AGGREGATE_STEPS = {\n GROUPBY: 'GROUPBY',\n SORTBY: 'SORTBY',\n APPLY: 'APPLY',\n LIMIT: 'LIMIT',\n FILTER: 'FILTER'\n} as const;\n\ntype FT_AGGREGATE_STEPS = typeof FT_AGGREGATE_STEPS;\n\nexport type FtAggregateStep = FT_AGGREGATE_STEPS[keyof FT_AGGREGATE_STEPS];\n\ninterface AggregateStep<T extends FtAggregateStep> {\n type: T;\n}\n\nexport const FT_AGGREGATE_GROUP_BY_REDUCERS = {\n COUNT: 'COUNT',\n COUNT_DISTINCT: 'COUNT_DISTINCT',\n COUNT_DISTINCTISH: 'COUNT_DISTINCTISH',\n SUM: 'SUM',\n MIN: 'MIN',\n MAX: 'MAX',\n AVG: 'AVG',\n STDDEV: 'STDDEV',\n QUANTILE: 'QUANTILE',\n TOLIST: 'TOLIST',\n FIRST_VALUE: 'FIRST_VALUE',\n RANDOM_SAMPLE: 'RANDOM_SAMPLE',\n COLLECT: 'COLLECT'\n} as const;\n\ntype FT_AGGREGATE_GROUP_BY_REDUCERS = typeof FT_AGGREGATE_GROUP_BY_REDUCERS;\n\nexport type FtAggregateGroupByReducer = FT_AGGREGATE_GROUP_BY_REDUCERS[keyof FT_AGGREGATE_GROUP_BY_REDUCERS];\n\ninterface GroupByReducer<T extends FtAggregateGroupByReducer> {\n type: T;\n AS?: RedisArgument;\n}\n\ninterface GroupByReducerWithProperty<T extends FtAggregateGroupByReducer> extends GroupByReducer<T> {\n property: RediSearchProperty;\n}\n\ntype CountReducer = GroupByReducer<FT_AGGREGATE_GROUP_BY_REDUCERS['COUNT']>;\n\ntype CountDistinctReducer = GroupByReducerWithProperty<FT_AGGREGATE_GROUP_BY_REDUCERS['COUNT_DISTINCT']>;\n\ntype CountDistinctishReducer = GroupByReducerWithProperty<FT_AGGREGATE_GROUP_BY_REDUCERS['COUNT_DISTINCTISH']>;\n\ntype SumReducer = GroupByReducerWithProperty<FT_AGGREGATE_GROUP_BY_REDUCERS['SUM']>;\n\ntype MinReducer = GroupByReducerWithProperty<FT_AGGREGATE_GROUP_BY_REDUCERS['MIN']>;\n\ntype MaxReducer = GroupByReducerWithProperty<FT_AGGREGATE_GROUP_BY_REDUCERS['MAX']>;\n\ntype AvgReducer = GroupByReducerWithProperty<FT_AGGREGATE_GROUP_BY_REDUCERS['AVG']>;\n\ntype StdDevReducer = GroupByReducerWithProperty<FT_AGGREGATE_GROUP_BY_REDUCERS['STDDEV']>;\n\ninterface QuantileReducer extends GroupByReducerWithProperty<FT_AGGREGATE_GROUP_BY_REDUCERS['QUANTILE']> {\n quantile: number;\n}\n\ntype ToListReducer = GroupByReducerWithProperty<FT_AGGREGATE_GROUP_BY_REDUCERS['TOLIST']>;\n\ninterface FirstValueReducer extends GroupByReducerWithProperty<FT_AGGREGATE_GROUP_BY_REDUCERS['FIRST_VALUE']> {\n BY?: RediSearchProperty | {\n property: RediSearchProperty;\n direction?: 'ASC' | 'DESC';\n };\n}\n\ninterface RandomSampleReducer extends GroupByReducerWithProperty<FT_AGGREGATE_GROUP_BY_REDUCERS['RANDOM_SAMPLE']> {\n sampleSize: number;\n}\n\ninterface CollectReducer extends GroupByReducer<FT_AGGREGATE_GROUP_BY_REDUCERS['COLLECT']> {\n FIELDS: '*' | RediSearchProperty | Array<RediSearchProperty>;\n DISTINCT?: boolean;\n SORTBY?: SortByProperty | Array<SortByProperty>;\n LIMIT?: {\n from: number;\n size: number;\n };\n}\n\nexport type GroupByReducers = CountReducer | CountDistinctReducer | CountDistinctishReducer | SumReducer | MinReducer | MaxReducer | AvgReducer | StdDevReducer | QuantileReducer | ToListReducer | FirstValueReducer | RandomSampleReducer | CollectReducer;\n\ninterface GroupByStep extends AggregateStep<FT_AGGREGATE_STEPS['GROUPBY']> {\n properties?: RediSearchProperty | Array<RediSearchProperty>;\n REDUCE: GroupByReducers | Array<GroupByReducers>;\n}\n\ntype SortByProperty = RedisArgument | {\n BY: RediSearchProperty;\n DIRECTION?: 'ASC' | 'DESC';\n};\n\ninterface SortStep extends AggregateStep<FT_AGGREGATE_STEPS['SORTBY']> {\n BY: SortByProperty | Array<SortByProperty>;\n MAX?: number;\n}\n\ninterface ApplyStep extends AggregateStep<FT_AGGREGATE_STEPS['APPLY']> {\n expression: RedisArgument;\n AS: RedisArgument;\n}\n\ninterface LimitStep extends AggregateStep<FT_AGGREGATE_STEPS['LIMIT']> {\n from: number;\n size: number;\n}\n\ninterface FilterStep extends AggregateStep<FT_AGGREGATE_STEPS['FILTER']> {\n expression: RedisArgument;\n}\n\nexport interface FtAggregateOptions {\n VERBATIM?: boolean;\n ADDSCORES?: boolean;\n LOAD?: '*' | LoadField | Array<LoadField>;\n TIMEOUT?: number;\n STEPS?: Array<GroupByStep | SortStep | ApplyStep | LimitStep | FilterStep>;\n PARAMS?: FtSearchParams;\n DIALECT?: number;\n}\n\nexport type AggregateRawReply = [\n total: UnwrapReply<NumberReply>,\n ...results: UnwrapReply<ArrayReply<ArrayReply<BlobStringReply>>>\n];\n\nexport interface AggregateReply {\n total: number;\n results: Array<MapReply<BlobStringReply, BlobStringReply>>;\n /**\n * Warnings returned alongside partial results (e.g. on query timeout under a\n * `return` / `return-strict` on-timeout policy). Only populated on RESP3;\n * always empty on RESP2.\n */\n warnings: Array<string>;\n};\n\nfunction transformAggregateReplyResp2(\n rawReply: AggregateRawReply,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- matches TransformReply contract\n preserve?: any,\n typeMapping?: TypeMapping\n): AggregateReply {\n const results: Array<MapReply<BlobStringReply, BlobStringReply>> = [];\n for (let i = 1; i < rawReply.length; i++) {\n results.push(\n transformTuplesReply(rawReply[i] as ArrayReply<BlobStringReply>, preserve, typeMapping)\n );\n }\n\n return {\n // https://redis.io/docs/latest/commands/ft.aggregate/#return\n // FT.AGGREGATE returns an array reply where each row is an array reply and represents a single aggregate result.\n // The integer reply at position 1 does not represent a valid value.\n total: Number(rawReply[0]),\n results,\n // FT.AGGREGATE only emits warnings on RESP3; RESP2 replies never carry them.\n warnings: []\n };\n}\n\nfunction transformAggregateReplyResp3(\n rawReply: ReplyUnion,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- matches TransformReply contract\n preserve?: any,\n typeMapping?: TypeMapping\n): AggregateReply {\n const reply = mapLikeToObject(rawReply);\n const total = Number(getMapValue(reply, ['total_results', 'total']) ?? 0);\n const rawResults = mapLikeValues(getMapValue(reply, ['results']) ?? []);\n\n const results: Array<MapReply<BlobStringReply, BlobStringReply>> = [];\n const mapType = typeMapping ? typeMapping[RESP_TYPES.MAP] : undefined;\n\n for (const rawResult of rawResults) {\n const normalized = parseAggregateResultRow(rawResult);\n\n switch (mapType) {\n case Array: {\n results.push(mapLikeToFlatArray(normalized) as unknown as MapReply<BlobStringReply, BlobStringReply>);\n break;\n }\n case Map: {\n results.push(new Map(Object.entries(normalized)) as unknown as MapReply<BlobStringReply, BlobStringReply>);\n break;\n }\n default: {\n results.push(normalized as unknown as MapReply<BlobStringReply, BlobStringReply>);\n }\n }\n }\n\n return {\n total,\n results,\n warnings: parseWarnings(reply)\n };\n}\n\nexport default {\n NOT_KEYED_COMMAND: true,\n IS_READ_ONLY: false,\n parseCommand(parser: CommandParser, index: RedisArgument, query: RedisArgument, options?: FtAggregateOptions) {\n parser.push('FT.AGGREGATE', index, query);\n\n return parseAggregateOptions(parser, options);\n },\n transformReply: {\n 2: transformAggregateReplyResp2,\n 3: transformAggregateReplyResp3\n },\n} as const satisfies Command;\n\nexport function parseAggregateOptions(parser: CommandParser, options?: FtAggregateOptions) {\n if (options?.VERBATIM) {\n parser.push('VERBATIM');\n }\n\n if (options?.ADDSCORES) {\n parser.push('ADDSCORES');\n }\n\n if (options?.LOAD) {\n parser.push('LOAD');\n if (options.LOAD === '*') {\n parser.push('*');\n } else {\n const args: Array<RedisArgument> = [];\n\n if (Array.isArray(options?.LOAD)) {\n for (const load of options.LOAD) {\n pushLoadField(args, load);\n }\n } else {\n pushLoadField(args, options?.LOAD);\n }\n\n parser.pushVariadicWithLength(args);\n }\n } if (options?.TIMEOUT !== undefined) {\n parser.push('TIMEOUT', options.TIMEOUT.toString());\n }\n\n if (options?.STEPS) {\n for (const step of options.STEPS) {\n parser.push(step.type);\n switch (step.type) {\n case FT_AGGREGATE_STEPS.GROUPBY:\n if (!step.properties) {\n parser.push('0');\n } else {\n parser.pushVariadicWithLength(step.properties);\n }\n\n if (Array.isArray(step.REDUCE)) {\n for (const reducer of step.REDUCE) {\n parseGroupByReducer(parser, reducer);\n }\n } else {\n parseGroupByReducer(parser, step.REDUCE);\n }\n\n break;\n\n case FT_AGGREGATE_STEPS.SORTBY: {\n const args: Array<RedisArgument> = [];\n\n if (Array.isArray(step.BY)) {\n for (const by of step.BY) {\n pushSortByProperty(args, by);\n }\n } else {\n pushSortByProperty(args, step.BY);\n }\n\n if (step.MAX) {\n args.push('MAX', step.MAX.toString());\n }\n\n parser.pushVariadicWithLength(args);\n\n break;\n }\n\n case FT_AGGREGATE_STEPS.APPLY:\n parser.push(step.expression, 'AS', step.AS);\n break;\n\n case FT_AGGREGATE_STEPS.LIMIT:\n parser.push(step.from.toString(), step.size.toString());\n break;\n\n case FT_AGGREGATE_STEPS.FILTER:\n parser.push(step.expression);\n break;\n }\n }\n }\n\n parseParamsArgument(parser, options?.PARAMS);\n\n if (options?.DIALECT) {\n parser.push('DIALECT', options.DIALECT.toString());\n } else {\n parser.push('DIALECT', DEFAULT_DIALECT);\n }\n}\n\nfunction pushLoadField(args: Array<RedisArgument>, toLoad: LoadField) {\n if (typeof toLoad === 'string' || toLoad instanceof Buffer) {\n args.push(toLoad);\n } else {\n args.push(toLoad.identifier);\n\n if (toLoad.AS) {\n args.push('AS', toLoad.AS);\n }\n }\n}\n\nexport function parseGroupByReducer(parser: CommandParser, reducer: GroupByReducers) {\n parser.push('REDUCE', reducer.type);\n\n switch (reducer.type) {\n case FT_AGGREGATE_GROUP_BY_REDUCERS.COUNT:\n parser.push('0');\n break;\n\n case FT_AGGREGATE_GROUP_BY_REDUCERS.COUNT_DISTINCT:\n case FT_AGGREGATE_GROUP_BY_REDUCERS.COUNT_DISTINCTISH:\n case FT_AGGREGATE_GROUP_BY_REDUCERS.SUM:\n case FT_AGGREGATE_GROUP_BY_REDUCERS.MIN:\n case FT_AGGREGATE_GROUP_BY_REDUCERS.MAX:\n case FT_AGGREGATE_GROUP_BY_REDUCERS.AVG:\n case FT_AGGREGATE_GROUP_BY_REDUCERS.STDDEV:\n case FT_AGGREGATE_GROUP_BY_REDUCERS.TOLIST:\n parser.push('1', reducer.property);\n break;\n\n case FT_AGGREGATE_GROUP_BY_REDUCERS.QUANTILE:\n parser.push('2', reducer.property, reducer.quantile.toString());\n break;\n\n case FT_AGGREGATE_GROUP_BY_REDUCERS.FIRST_VALUE: {\n const args: Array<RedisArgument> = [reducer.property];\n\n if (reducer.BY) {\n args.push('BY');\n if (typeof reducer.BY === 'string' || reducer.BY instanceof Buffer) {\n args.push(reducer.BY);\n } else {\n args.push(reducer.BY.property);\n if (reducer.BY.direction) {\n args.push(reducer.BY.direction);\n }\n }\n }\n\n parser.pushVariadicWithLength(args);\n break;\n }\n\n case FT_AGGREGATE_GROUP_BY_REDUCERS.RANDOM_SAMPLE:\n parser.push('2', reducer.property, reducer.sampleSize.toString());\n break;\n\n case FT_AGGREGATE_GROUP_BY_REDUCERS.COLLECT: {\n const args: Array<RedisArgument> = ['FIELDS'];\n\n // Wildcard is a bare token (`FIELDS *`); an explicit list is count-prefixed\n // (`FIELDS <num> field ...`).\n if (reducer.FIELDS === '*') {\n args.push('*');\n } else {\n const fields = Array.isArray(reducer.FIELDS) ? reducer.FIELDS : [reducer.FIELDS];\n args.push(fields.length.toString(), ...fields);\n }\n\n if (reducer.DISTINCT) {\n args.push('DISTINCT');\n }\n\n if (reducer.SORTBY) {\n const sortBys = Array.isArray(reducer.SORTBY) ? reducer.SORTBY : [reducer.SORTBY];\n const sortArgs: Array<RedisArgument> = [];\n for (const sortBy of sortBys) {\n pushSortByProperty(sortArgs, sortBy);\n }\n args.push('SORTBY', sortArgs.length.toString(), ...sortArgs);\n }\n\n if (reducer.LIMIT) {\n args.push('LIMIT', reducer.LIMIT.from.toString(), reducer.LIMIT.size.toString());\n }\n\n parser.pushVariadicWithLength(args);\n break;\n }\n }\n\n if (reducer.AS) {\n parser.push('AS', reducer.AS);\n }\n}\n\nfunction pushSortByProperty(args: Array<RedisArgument>, sortBy: SortByProperty) {\n if (typeof sortBy === 'string' || sortBy instanceof Buffer) {\n args.push(sortBy);\n } else {\n args.push(sortBy.BY);\n if (sortBy.DIRECTION) {\n args.push(sortBy.DIRECTION);\n }\n }\n}\n"]} |
@@ -69,2 +69,7 @@ import { CommandParser } from '@redis/client/dist/lib/client/parser'; | ||
| EF_RUNTIME?: number; | ||
| /** | ||
| * Enable reranking. Requires a disk-based vector index. | ||
| * available since 8.10 | ||
| */ | ||
| RERANK?: boolean; | ||
| } | ||
@@ -132,2 +137,3 @@ export declare const VAMANA_COMPRESSION_ALGORITHM: { | ||
| readonly ARABIC: "Arabic"; | ||
| readonly ARMENIAN: "Armenian"; | ||
| readonly BASQUE: "Basque"; | ||
@@ -142,2 +148,3 @@ readonly CATALANA: "Catalan"; | ||
| readonly GREEK: "Greek"; | ||
| readonly HINDI: "Hindi"; | ||
| readonly HUNGARIAN: "Hungarian"; | ||
@@ -148,2 +155,3 @@ readonly INDONESAIN: "Indonesian"; | ||
| readonly LITHUANIAN: "Lithuanian"; | ||
| readonly MALAY: "Malay"; | ||
| readonly NEPALI: "Nepali"; | ||
@@ -154,6 +162,9 @@ readonly NORWEIGAN: "Norwegian"; | ||
| readonly RUSSIAN: "Russian"; | ||
| readonly SERBIAN: "Serbian"; | ||
| readonly SPANISH: "Spanish"; | ||
| readonly SWEDISH: "Swedish"; | ||
| readonly TAGALOG: "Tagalog"; | ||
| readonly TAMIL: "Tamil"; | ||
| readonly TURKISH: "Turkish"; | ||
| readonly YIDDISH: "Yiddish"; | ||
| readonly CHINESE: "Chinese"; | ||
@@ -163,2 +174,8 @@ }; | ||
| export type RediSearchProperty = `${'@' | '$.'}${string}`; | ||
| /** | ||
| * A document attribute: an `@`-prefixed or JSONPath property, or a plain | ||
| * hash field name (e.g. `__lang`). `(string & {})` keeps autocomplete for | ||
| * the prefixed forms while still accepting any field name. | ||
| */ | ||
| export type RediSearchAttribute = RediSearchProperty | (string & {}); | ||
| export interface CreateOptions { | ||
@@ -169,5 +186,5 @@ ON?: 'HASH' | 'JSON'; | ||
| LANGUAGE?: RediSearchLanguage; | ||
| LANGUAGE_FIELD?: RediSearchProperty; | ||
| LANGUAGE_FIELD?: RediSearchAttribute; | ||
| SCORE?: number; | ||
| SCORE_FIELD?: RediSearchProperty; | ||
| SCORE_FIELD?: RediSearchAttribute; | ||
| MAXTEXTFIELDS?: boolean; | ||
@@ -174,0 +191,0 @@ TEMPORARY?: number; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"CREATE.d.ts","sourceRoot":"","sources":["../../../lib/commands/CREATE.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"CREATE.d.ts","sourceRoot":"","sources":["../../../lib/commands/CREATE.ts"],"names":[],"mappings":"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"} |
@@ -136,2 +136,5 @@ "use strict"; | ||
| } | ||
| if (fieldOptions.RERANK !== undefined) { | ||
| args.push('RERANK', fieldOptions.RERANK ? 'TRUE' : 'FALSE'); | ||
| } | ||
| break; | ||
@@ -183,2 +186,3 @@ case exports.SCHEMA_VECTOR_FIELD_ALGORITHM['VAMANA']: | ||
| ARABIC: 'Arabic', | ||
| ARMENIAN: 'Armenian', | ||
| BASQUE: 'Basque', | ||
@@ -193,2 +197,3 @@ CATALANA: 'Catalan', | ||
| GREEK: 'Greek', | ||
| HINDI: 'Hindi', | ||
| HUNGARIAN: 'Hungarian', | ||
@@ -199,2 +204,3 @@ INDONESAIN: 'Indonesian', | ||
| LITHUANIAN: 'Lithuanian', | ||
| MALAY: 'Malay', | ||
| NEPALI: 'Nepali', | ||
@@ -205,6 +211,9 @@ NORWEIGAN: 'Norwegian', | ||
| RUSSIAN: 'Russian', | ||
| SERBIAN: 'Serbian', | ||
| SPANISH: 'Spanish', | ||
| SWEDISH: 'Swedish', | ||
| TAGALOG: 'Tagalog', | ||
| TAMIL: 'Tamil', | ||
| TURKISH: 'Turkish', | ||
| YIDDISH: 'Yiddish', | ||
| CHINESE: 'Chinese' | ||
@@ -230,3 +239,3 @@ }; | ||
| } | ||
| if (options?.SCORE) { | ||
| if (options?.SCORE !== undefined) { | ||
| parser.push('SCORE', options.SCORE.toString()); | ||
@@ -233,0 +242,0 @@ } |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"CREATE.js","sourceRoot":"","sources":["../../../lib/commands/CREATE.ts"],"names":[],"mappings":"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","sourcesContent":["import { CommandParser } from '@redis/client/dist/lib/client/parser';\nimport { RedisArgument, SimpleStringReply, Command } from '@redis/client/dist/lib/RESP/types';\nimport { RedisVariadicArgument, parseOptionalVariadicArgument } from '@redis/client/dist/lib/commands/generic-transformers';\n\nexport const SCHEMA_FIELD_TYPE = {\n TEXT: 'TEXT',\n NUMERIC: 'NUMERIC',\n GEO: 'GEO',\n TAG: 'TAG',\n VECTOR: 'VECTOR',\n GEOSHAPE: 'GEOSHAPE'\n} as const;\n\nexport type SchemaFieldType = typeof SCHEMA_FIELD_TYPE[keyof typeof SCHEMA_FIELD_TYPE];\n\ninterface SchemaField<T extends SchemaFieldType = SchemaFieldType> {\n type: T;\n AS?: RedisArgument;\n INDEXMISSING?: boolean;\n}\n\ninterface SchemaCommonField<T extends SchemaFieldType = SchemaFieldType> extends SchemaField<T> {\n SORTABLE?: boolean | 'UNF'\n NOINDEX?: boolean;\n}\n\nexport const SCHEMA_TEXT_FIELD_PHONETIC = {\n DM_EN: 'dm:en',\n DM_FR: 'dm:fr',\n DM_PT: 'dm:pt',\n DM_ES: 'dm:es'\n} as const;\n\nexport type SchemaTextFieldPhonetic = typeof SCHEMA_TEXT_FIELD_PHONETIC[keyof typeof SCHEMA_TEXT_FIELD_PHONETIC];\n\ninterface SchemaTextField extends SchemaCommonField<typeof SCHEMA_FIELD_TYPE['TEXT']> {\n NOSTEM?: boolean;\n WEIGHT?: number;\n PHONETIC?: SchemaTextFieldPhonetic;\n WITHSUFFIXTRIE?: boolean;\n INDEXEMPTY?: boolean;\n}\n\ntype SchemaNumericField = SchemaCommonField<typeof SCHEMA_FIELD_TYPE['NUMERIC']>;\n\ntype SchemaGeoField = SchemaCommonField<typeof SCHEMA_FIELD_TYPE['GEO']>;\n\ninterface SchemaTagField extends SchemaCommonField<typeof SCHEMA_FIELD_TYPE['TAG']> {\n SEPARATOR?: RedisArgument;\n CASESENSITIVE?: boolean;\n WITHSUFFIXTRIE?: boolean;\n INDEXEMPTY?: boolean;\n}\n\nexport const SCHEMA_VECTOR_FIELD_ALGORITHM = {\n FLAT: 'FLAT',\n HNSW: 'HNSW',\n /**\n * available since 8.2\n */\n VAMANA: 'SVS-VAMANA'\n} as const;\n\nexport type SchemaVectorFieldAlgorithm = typeof SCHEMA_VECTOR_FIELD_ALGORITHM[keyof typeof SCHEMA_VECTOR_FIELD_ALGORITHM];\n\ninterface SchemaVectorField extends SchemaField<typeof SCHEMA_FIELD_TYPE['VECTOR']> {\n ALGORITHM: SchemaVectorFieldAlgorithm;\n TYPE: 'FLOAT32' | 'FLOAT64' | 'BFLOAT16' | 'FLOAT16' | 'INT8' | 'UINT8';\n DIM: number;\n DISTANCE_METRIC: 'L2' | 'IP' | 'COSINE';\n INITIAL_CAP?: number;\n}\n\ninterface SchemaFlatVectorField extends SchemaVectorField {\n ALGORITHM: typeof SCHEMA_VECTOR_FIELD_ALGORITHM['FLAT'];\n BLOCK_SIZE?: number;\n}\n\ninterface SchemaHNSWVectorField extends SchemaVectorField {\n ALGORITHM: typeof SCHEMA_VECTOR_FIELD_ALGORITHM['HNSW'];\n M?: number;\n EF_CONSTRUCTION?: number;\n EF_RUNTIME?: number;\n}\n\nexport const VAMANA_COMPRESSION_ALGORITHM = {\n LVQ4: 'LVQ4',\n LVQ8: 'LVQ8',\n LVQ4x4: 'LVQ4x4',\n LVQ4x8: 'LVQ4x8',\n LeanVec4x8: 'LeanVec4x8',\n LeanVec8x8: 'LeanVec8x8'\n} as const;\n\nexport type VamanaCompressionAlgorithm =\n typeof VAMANA_COMPRESSION_ALGORITHM[keyof typeof VAMANA_COMPRESSION_ALGORITHM];\n\ninterface SchemaVAMANAVectorField extends SchemaVectorField {\n ALGORITHM: typeof SCHEMA_VECTOR_FIELD_ALGORITHM['VAMANA'];\n TYPE: 'FLOAT16' | 'FLOAT32';\n // VAMANA-specific parameters\n COMPRESSION?: VamanaCompressionAlgorithm;\n CONSTRUCTION_WINDOW_SIZE?: number;\n GRAPH_MAX_DEGREE?: number;\n SEARCH_WINDOW_SIZE?: number;\n EPSILON?: number;\n /**\n * applicable only with COMPRESSION\n */\n TRAINING_THRESHOLD?: number;\n /**\n * applicable only with LeanVec COMPRESSION\n */\n REDUCE?: number;\n}\n\nexport const SCHEMA_GEO_SHAPE_COORD_SYSTEM = {\n SPHERICAL: 'SPHERICAL',\n FLAT: 'FLAT'\n} as const;\n\nexport type SchemaGeoShapeFieldCoordSystem = typeof SCHEMA_GEO_SHAPE_COORD_SYSTEM[keyof typeof SCHEMA_GEO_SHAPE_COORD_SYSTEM];\n\ninterface SchemaGeoShapeField extends SchemaField<typeof SCHEMA_FIELD_TYPE['GEOSHAPE']> {\n COORD_SYSTEM?: SchemaGeoShapeFieldCoordSystem;\n}\n\n/**\n * Union type representing all possible field definition types for a RediSearch schema.\n */\nexport type SchemaFieldDefinition =\n | SchemaTextField\n | SchemaNumericField\n | SchemaGeoField\n | SchemaTagField\n | SchemaFlatVectorField\n | SchemaHNSWVectorField\n | SchemaVAMANAVectorField\n | SchemaGeoShapeField\n | SchemaFieldType;\n\n/**\n * Schema definition for a RediSearch index.\n *\n * Each field can be either a single field definition or an array of definitions.\n * Use an array to index the same field multiple times with different types or aliases.\n *\n * @example\n * // Single field definitions\n * { name: SCHEMA_FIELD_TYPE.TEXT, age: SCHEMA_FIELD_TYPE.NUMERIC }\n *\n * @example\n * // Same field indexed as both TEXT and TAG with different aliases\n * { sku: [\n * { type: SCHEMA_FIELD_TYPE.TEXT, AS: 'sku_text' },\n * { type: SCHEMA_FIELD_TYPE.TAG, AS: 'sku_tag', SORTABLE: true }\n * ]}\n */\nexport interface RediSearchSchema {\n [field: string]: SchemaFieldDefinition | SchemaFieldDefinition[];\n}\n\nfunction parseCommonSchemaFieldOptions(parser: CommandParser, fieldOptions: SchemaCommonField) {\n if (fieldOptions.SORTABLE) {\n parser.push('SORTABLE');\n\n if (fieldOptions.SORTABLE === 'UNF') {\n parser.push('UNF');\n }\n }\n\n if (fieldOptions.NOINDEX) {\n parser.push('NOINDEX');\n }\n}\n\nexport function parseSchema(parser: CommandParser, schema: RediSearchSchema) {\n for (const [field, fieldOptionsOrArray] of Object.entries(schema)) {\n // Normalize to array for uniform processing\n const fieldOptionsList = Array.isArray(fieldOptionsOrArray)\n ? fieldOptionsOrArray\n : [fieldOptionsOrArray];\n\n for (const fieldOptions of fieldOptionsList) {\n parser.push(field);\n\n if (typeof fieldOptions === 'string') {\n parser.push(fieldOptions);\n continue;\n }\n\n if (fieldOptions.AS) {\n parser.push('AS', fieldOptions.AS);\n }\n\n parser.push(fieldOptions.type);\n\n switch (fieldOptions.type) {\n case SCHEMA_FIELD_TYPE.TEXT:\n if (fieldOptions.INDEXMISSING) {\n parser.push('INDEXMISSING');\n }\n\n if (fieldOptions.NOSTEM) {\n parser.push('NOSTEM');\n }\n\n if (fieldOptions.WEIGHT !== undefined) {\n parser.push('WEIGHT', fieldOptions.WEIGHT.toString());\n }\n\n if (fieldOptions.PHONETIC) {\n parser.push('PHONETIC', fieldOptions.PHONETIC);\n }\n\n if (fieldOptions.WITHSUFFIXTRIE) {\n parser.push('WITHSUFFIXTRIE');\n }\n\n if (fieldOptions.INDEXEMPTY) {\n parser.push('INDEXEMPTY');\n }\n\n parseCommonSchemaFieldOptions(parser, fieldOptions)\n break;\n\n case SCHEMA_FIELD_TYPE.NUMERIC:\n case SCHEMA_FIELD_TYPE.GEO:\n if (fieldOptions.INDEXMISSING) {\n parser.push('INDEXMISSING');\n }\n\n parseCommonSchemaFieldOptions(parser, fieldOptions)\n break;\n\n case SCHEMA_FIELD_TYPE.TAG:\n if (fieldOptions.INDEXMISSING) {\n parser.push('INDEXMISSING');\n }\n\n if (fieldOptions.SEPARATOR) {\n parser.push('SEPARATOR', fieldOptions.SEPARATOR);\n }\n\n if (fieldOptions.CASESENSITIVE) {\n parser.push('CASESENSITIVE');\n }\n\n if (fieldOptions.WITHSUFFIXTRIE) {\n parser.push('WITHSUFFIXTRIE');\n }\n\n if (fieldOptions.INDEXEMPTY) {\n parser.push('INDEXEMPTY');\n }\n\n parseCommonSchemaFieldOptions(parser, fieldOptions)\n break;\n\n case SCHEMA_FIELD_TYPE.VECTOR: {\n parser.push(fieldOptions.ALGORITHM);\n\n const args: Array<RedisArgument> = [];\n\n args.push(\n 'TYPE', fieldOptions.TYPE,\n 'DIM', fieldOptions.DIM.toString(),\n 'DISTANCE_METRIC', fieldOptions.DISTANCE_METRIC\n );\n\n if (fieldOptions.INITIAL_CAP !== undefined) {\n args.push('INITIAL_CAP', fieldOptions.INITIAL_CAP.toString());\n }\n\n switch (fieldOptions.ALGORITHM) {\n case SCHEMA_VECTOR_FIELD_ALGORITHM.FLAT:\n if (fieldOptions.BLOCK_SIZE !== undefined) {\n args.push('BLOCK_SIZE', fieldOptions.BLOCK_SIZE.toString());\n }\n\n break;\n\n case SCHEMA_VECTOR_FIELD_ALGORITHM.HNSW:\n if (fieldOptions.M !== undefined) {\n args.push('M', fieldOptions.M.toString());\n }\n\n if (fieldOptions.EF_CONSTRUCTION !== undefined) {\n args.push('EF_CONSTRUCTION', fieldOptions.EF_CONSTRUCTION.toString());\n }\n\n if (fieldOptions.EF_RUNTIME !== undefined) {\n args.push('EF_RUNTIME', fieldOptions.EF_RUNTIME.toString());\n }\n\n break;\n\n case SCHEMA_VECTOR_FIELD_ALGORITHM['VAMANA']:\n if (fieldOptions.COMPRESSION) {\n args.push('COMPRESSION', fieldOptions.COMPRESSION);\n }\n\n if (fieldOptions.CONSTRUCTION_WINDOW_SIZE !== undefined) {\n args.push('CONSTRUCTION_WINDOW_SIZE', fieldOptions.CONSTRUCTION_WINDOW_SIZE.toString());\n }\n\n if (fieldOptions.GRAPH_MAX_DEGREE !== undefined) {\n args.push('GRAPH_MAX_DEGREE', fieldOptions.GRAPH_MAX_DEGREE.toString());\n }\n\n if (fieldOptions.SEARCH_WINDOW_SIZE !== undefined) {\n args.push('SEARCH_WINDOW_SIZE', fieldOptions.SEARCH_WINDOW_SIZE.toString());\n }\n\n if (fieldOptions.EPSILON !== undefined) {\n args.push('EPSILON', fieldOptions.EPSILON.toString());\n }\n\n if (fieldOptions.TRAINING_THRESHOLD !== undefined) {\n args.push('TRAINING_THRESHOLD', fieldOptions.TRAINING_THRESHOLD.toString());\n }\n\n if (fieldOptions.REDUCE !== undefined) {\n args.push('REDUCE', fieldOptions.REDUCE.toString());\n }\n\n break;\n }\n parser.pushVariadicWithLength(args);\n\n if (fieldOptions.INDEXMISSING) {\n parser.push('INDEXMISSING');\n }\n\n break;\n }\n\n case SCHEMA_FIELD_TYPE.GEOSHAPE:\n if (fieldOptions.COORD_SYSTEM !== undefined) {\n parser.push('COORD_SYSTEM', fieldOptions.COORD_SYSTEM);\n }\n\n if (fieldOptions.INDEXMISSING) {\n parser.push('INDEXMISSING');\n }\n\n break;\n }\n }\n }\n}\n\nexport const REDISEARCH_LANGUAGE = {\n ARABIC: 'Arabic',\n BASQUE: 'Basque',\n CATALANA: 'Catalan',\n DANISH: 'Danish',\n DUTCH: 'Dutch',\n ENGLISH: 'English',\n FINNISH: 'Finnish',\n FRENCH: 'French',\n GERMAN: 'German',\n GREEK: 'Greek',\n HUNGARIAN: 'Hungarian',\n INDONESAIN: 'Indonesian',\n IRISH: 'Irish',\n ITALIAN: 'Italian',\n LITHUANIAN: 'Lithuanian',\n NEPALI: 'Nepali',\n NORWEIGAN: 'Norwegian',\n PORTUGUESE: 'Portuguese',\n ROMANIAN: 'Romanian',\n RUSSIAN: 'Russian',\n SPANISH: 'Spanish',\n SWEDISH: 'Swedish',\n TAMIL: 'Tamil',\n TURKISH: 'Turkish',\n CHINESE: 'Chinese'\n} as const;\n\nexport type RediSearchLanguage = typeof REDISEARCH_LANGUAGE[keyof typeof REDISEARCH_LANGUAGE];\n\nexport type RediSearchProperty = `${'@' | '$.'}${string}`;\n\nexport interface CreateOptions {\n ON?: 'HASH' | 'JSON';\n PREFIX?: RedisVariadicArgument;\n FILTER?: RedisArgument;\n LANGUAGE?: RediSearchLanguage;\n LANGUAGE_FIELD?: RediSearchProperty;\n SCORE?: number;\n SCORE_FIELD?: RediSearchProperty;\n // PAYLOAD_FIELD?: string;\n MAXTEXTFIELDS?: boolean;\n TEMPORARY?: number;\n NOOFFSETS?: boolean;\n NOHL?: boolean;\n NOFIELDS?: boolean;\n NOFREQS?: boolean;\n SKIPINITIALSCAN?: boolean;\n STOPWORDS?: RedisVariadicArgument;\n}\n\nexport default {\n NOT_KEYED_COMMAND: true,\n IS_READ_ONLY: true,\n parseCommand(parser: CommandParser, index: RedisArgument, schema: RediSearchSchema, options?: CreateOptions) {\n parser.push('FT.CREATE', index);\n\n if (options?.ON) {\n parser.push('ON', options.ON);\n }\n\n parseOptionalVariadicArgument(parser, 'PREFIX', options?.PREFIX);\n\n if (options?.FILTER) {\n parser.push('FILTER', options.FILTER);\n }\n\n if (options?.LANGUAGE) {\n parser.push('LANGUAGE', options.LANGUAGE);\n }\n\n if (options?.LANGUAGE_FIELD) {\n parser.push('LANGUAGE_FIELD', options.LANGUAGE_FIELD);\n }\n\n if (options?.SCORE) {\n parser.push('SCORE', options.SCORE.toString());\n }\n\n if (options?.SCORE_FIELD) {\n parser.push('SCORE_FIELD', options.SCORE_FIELD);\n }\n\n // if (options?.PAYLOAD_FIELD) {\n // parser.push('PAYLOAD_FIELD', options.PAYLOAD_FIELD);\n // }\n\n if (options?.MAXTEXTFIELDS) {\n parser.push('MAXTEXTFIELDS');\n }\n\n if (options?.TEMPORARY) {\n parser.push('TEMPORARY', options.TEMPORARY.toString());\n }\n\n if (options?.NOOFFSETS) {\n parser.push('NOOFFSETS');\n }\n\n if (options?.NOHL) {\n parser.push('NOHL');\n }\n\n if (options?.NOFIELDS) {\n parser.push('NOFIELDS');\n }\n\n if (options?.NOFREQS) {\n parser.push('NOFREQS');\n }\n\n if (options?.SKIPINITIALSCAN) {\n parser.push('SKIPINITIALSCAN');\n }\n\n parseOptionalVariadicArgument(parser, 'STOPWORDS', options?.STOPWORDS);\n parser.push('SCHEMA');\n parseSchema(parser, schema);\n },\n transformReply: undefined as unknown as () => SimpleStringReply<'OK'>\n} as const satisfies Command;\n"]} | ||
| {"version":3,"file":"CREATE.js","sourceRoot":"","sources":["../../../lib/commands/CREATE.ts"],"names":[],"mappings":"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","sourcesContent":["import { CommandParser } from '@redis/client/dist/lib/client/parser';\nimport { RedisArgument, SimpleStringReply, Command } from '@redis/client/dist/lib/RESP/types';\nimport { RedisVariadicArgument, parseOptionalVariadicArgument } from '@redis/client/dist/lib/commands/generic-transformers';\n\nexport const SCHEMA_FIELD_TYPE = {\n TEXT: 'TEXT',\n NUMERIC: 'NUMERIC',\n GEO: 'GEO',\n TAG: 'TAG',\n VECTOR: 'VECTOR',\n GEOSHAPE: 'GEOSHAPE'\n} as const;\n\nexport type SchemaFieldType = typeof SCHEMA_FIELD_TYPE[keyof typeof SCHEMA_FIELD_TYPE];\n\ninterface SchemaField<T extends SchemaFieldType = SchemaFieldType> {\n type: T;\n AS?: RedisArgument;\n INDEXMISSING?: boolean;\n}\n\ninterface SchemaCommonField<T extends SchemaFieldType = SchemaFieldType> extends SchemaField<T> {\n SORTABLE?: boolean | 'UNF'\n NOINDEX?: boolean;\n}\n\nexport const SCHEMA_TEXT_FIELD_PHONETIC = {\n DM_EN: 'dm:en',\n DM_FR: 'dm:fr',\n DM_PT: 'dm:pt',\n DM_ES: 'dm:es'\n} as const;\n\nexport type SchemaTextFieldPhonetic = typeof SCHEMA_TEXT_FIELD_PHONETIC[keyof typeof SCHEMA_TEXT_FIELD_PHONETIC];\n\ninterface SchemaTextField extends SchemaCommonField<typeof SCHEMA_FIELD_TYPE['TEXT']> {\n NOSTEM?: boolean;\n WEIGHT?: number;\n PHONETIC?: SchemaTextFieldPhonetic;\n WITHSUFFIXTRIE?: boolean;\n INDEXEMPTY?: boolean;\n}\n\ntype SchemaNumericField = SchemaCommonField<typeof SCHEMA_FIELD_TYPE['NUMERIC']>;\n\ntype SchemaGeoField = SchemaCommonField<typeof SCHEMA_FIELD_TYPE['GEO']>;\n\ninterface SchemaTagField extends SchemaCommonField<typeof SCHEMA_FIELD_TYPE['TAG']> {\n SEPARATOR?: RedisArgument;\n CASESENSITIVE?: boolean;\n WITHSUFFIXTRIE?: boolean;\n INDEXEMPTY?: boolean;\n}\n\nexport const SCHEMA_VECTOR_FIELD_ALGORITHM = {\n FLAT: 'FLAT',\n HNSW: 'HNSW',\n /**\n * available since 8.2\n */\n VAMANA: 'SVS-VAMANA'\n} as const;\n\nexport type SchemaVectorFieldAlgorithm = typeof SCHEMA_VECTOR_FIELD_ALGORITHM[keyof typeof SCHEMA_VECTOR_FIELD_ALGORITHM];\n\ninterface SchemaVectorField extends SchemaField<typeof SCHEMA_FIELD_TYPE['VECTOR']> {\n ALGORITHM: SchemaVectorFieldAlgorithm;\n TYPE: 'FLOAT32' | 'FLOAT64' | 'BFLOAT16' | 'FLOAT16' | 'INT8' | 'UINT8';\n DIM: number;\n DISTANCE_METRIC: 'L2' | 'IP' | 'COSINE';\n INITIAL_CAP?: number;\n}\n\ninterface SchemaFlatVectorField extends SchemaVectorField {\n ALGORITHM: typeof SCHEMA_VECTOR_FIELD_ALGORITHM['FLAT'];\n BLOCK_SIZE?: number;\n}\n\ninterface SchemaHNSWVectorField extends SchemaVectorField {\n ALGORITHM: typeof SCHEMA_VECTOR_FIELD_ALGORITHM['HNSW'];\n M?: number;\n EF_CONSTRUCTION?: number;\n EF_RUNTIME?: number;\n /**\n * Enable reranking. Requires a disk-based vector index.\n * available since 8.10\n */\n RERANK?: boolean;\n}\n\nexport const VAMANA_COMPRESSION_ALGORITHM = {\n LVQ4: 'LVQ4',\n LVQ8: 'LVQ8',\n LVQ4x4: 'LVQ4x4',\n LVQ4x8: 'LVQ4x8',\n LeanVec4x8: 'LeanVec4x8',\n LeanVec8x8: 'LeanVec8x8'\n} as const;\n\nexport type VamanaCompressionAlgorithm =\n typeof VAMANA_COMPRESSION_ALGORITHM[keyof typeof VAMANA_COMPRESSION_ALGORITHM];\n\ninterface SchemaVAMANAVectorField extends SchemaVectorField {\n ALGORITHM: typeof SCHEMA_VECTOR_FIELD_ALGORITHM['VAMANA'];\n TYPE: 'FLOAT16' | 'FLOAT32';\n // VAMANA-specific parameters\n COMPRESSION?: VamanaCompressionAlgorithm;\n CONSTRUCTION_WINDOW_SIZE?: number;\n GRAPH_MAX_DEGREE?: number;\n SEARCH_WINDOW_SIZE?: number;\n EPSILON?: number;\n /**\n * applicable only with COMPRESSION\n */\n TRAINING_THRESHOLD?: number;\n /**\n * applicable only with LeanVec COMPRESSION\n */\n REDUCE?: number;\n}\n\nexport const SCHEMA_GEO_SHAPE_COORD_SYSTEM = {\n SPHERICAL: 'SPHERICAL',\n FLAT: 'FLAT'\n} as const;\n\nexport type SchemaGeoShapeFieldCoordSystem = typeof SCHEMA_GEO_SHAPE_COORD_SYSTEM[keyof typeof SCHEMA_GEO_SHAPE_COORD_SYSTEM];\n\ninterface SchemaGeoShapeField extends SchemaField<typeof SCHEMA_FIELD_TYPE['GEOSHAPE']> {\n COORD_SYSTEM?: SchemaGeoShapeFieldCoordSystem;\n}\n\n/**\n * Union type representing all possible field definition types for a RediSearch schema.\n */\nexport type SchemaFieldDefinition =\n | SchemaTextField\n | SchemaNumericField\n | SchemaGeoField\n | SchemaTagField\n | SchemaFlatVectorField\n | SchemaHNSWVectorField\n | SchemaVAMANAVectorField\n | SchemaGeoShapeField\n | SchemaFieldType;\n\n/**\n * Schema definition for a RediSearch index.\n *\n * Each field can be either a single field definition or an array of definitions.\n * Use an array to index the same field multiple times with different types or aliases.\n *\n * @example\n * // Single field definitions\n * { name: SCHEMA_FIELD_TYPE.TEXT, age: SCHEMA_FIELD_TYPE.NUMERIC }\n *\n * @example\n * // Same field indexed as both TEXT and TAG with different aliases\n * { sku: [\n * { type: SCHEMA_FIELD_TYPE.TEXT, AS: 'sku_text' },\n * { type: SCHEMA_FIELD_TYPE.TAG, AS: 'sku_tag', SORTABLE: true }\n * ]}\n */\nexport interface RediSearchSchema {\n [field: string]: SchemaFieldDefinition | SchemaFieldDefinition[];\n}\n\nfunction parseCommonSchemaFieldOptions(parser: CommandParser, fieldOptions: SchemaCommonField) {\n if (fieldOptions.SORTABLE) {\n parser.push('SORTABLE');\n\n if (fieldOptions.SORTABLE === 'UNF') {\n parser.push('UNF');\n }\n }\n\n if (fieldOptions.NOINDEX) {\n parser.push('NOINDEX');\n }\n}\n\nexport function parseSchema(parser: CommandParser, schema: RediSearchSchema) {\n for (const [field, fieldOptionsOrArray] of Object.entries(schema)) {\n // Normalize to array for uniform processing\n const fieldOptionsList = Array.isArray(fieldOptionsOrArray)\n ? fieldOptionsOrArray\n : [fieldOptionsOrArray];\n\n for (const fieldOptions of fieldOptionsList) {\n parser.push(field);\n\n if (typeof fieldOptions === 'string') {\n parser.push(fieldOptions);\n continue;\n }\n\n if (fieldOptions.AS) {\n parser.push('AS', fieldOptions.AS);\n }\n\n parser.push(fieldOptions.type);\n\n switch (fieldOptions.type) {\n case SCHEMA_FIELD_TYPE.TEXT:\n if (fieldOptions.INDEXMISSING) {\n parser.push('INDEXMISSING');\n }\n\n if (fieldOptions.NOSTEM) {\n parser.push('NOSTEM');\n }\n\n if (fieldOptions.WEIGHT !== undefined) {\n parser.push('WEIGHT', fieldOptions.WEIGHT.toString());\n }\n\n if (fieldOptions.PHONETIC) {\n parser.push('PHONETIC', fieldOptions.PHONETIC);\n }\n\n if (fieldOptions.WITHSUFFIXTRIE) {\n parser.push('WITHSUFFIXTRIE');\n }\n\n if (fieldOptions.INDEXEMPTY) {\n parser.push('INDEXEMPTY');\n }\n\n parseCommonSchemaFieldOptions(parser, fieldOptions)\n break;\n\n case SCHEMA_FIELD_TYPE.NUMERIC:\n case SCHEMA_FIELD_TYPE.GEO:\n if (fieldOptions.INDEXMISSING) {\n parser.push('INDEXMISSING');\n }\n\n parseCommonSchemaFieldOptions(parser, fieldOptions)\n break;\n\n case SCHEMA_FIELD_TYPE.TAG:\n if (fieldOptions.INDEXMISSING) {\n parser.push('INDEXMISSING');\n }\n\n if (fieldOptions.SEPARATOR) {\n parser.push('SEPARATOR', fieldOptions.SEPARATOR);\n }\n\n if (fieldOptions.CASESENSITIVE) {\n parser.push('CASESENSITIVE');\n }\n\n if (fieldOptions.WITHSUFFIXTRIE) {\n parser.push('WITHSUFFIXTRIE');\n }\n\n if (fieldOptions.INDEXEMPTY) {\n parser.push('INDEXEMPTY');\n }\n\n parseCommonSchemaFieldOptions(parser, fieldOptions)\n break;\n\n case SCHEMA_FIELD_TYPE.VECTOR: {\n parser.push(fieldOptions.ALGORITHM);\n\n const args: Array<RedisArgument> = [];\n\n args.push(\n 'TYPE', fieldOptions.TYPE,\n 'DIM', fieldOptions.DIM.toString(),\n 'DISTANCE_METRIC', fieldOptions.DISTANCE_METRIC\n );\n\n if (fieldOptions.INITIAL_CAP !== undefined) {\n args.push('INITIAL_CAP', fieldOptions.INITIAL_CAP.toString());\n }\n\n switch (fieldOptions.ALGORITHM) {\n case SCHEMA_VECTOR_FIELD_ALGORITHM.FLAT:\n if (fieldOptions.BLOCK_SIZE !== undefined) {\n args.push('BLOCK_SIZE', fieldOptions.BLOCK_SIZE.toString());\n }\n\n break;\n\n case SCHEMA_VECTOR_FIELD_ALGORITHM.HNSW:\n if (fieldOptions.M !== undefined) {\n args.push('M', fieldOptions.M.toString());\n }\n\n if (fieldOptions.EF_CONSTRUCTION !== undefined) {\n args.push('EF_CONSTRUCTION', fieldOptions.EF_CONSTRUCTION.toString());\n }\n\n if (fieldOptions.EF_RUNTIME !== undefined) {\n args.push('EF_RUNTIME', fieldOptions.EF_RUNTIME.toString());\n }\n\n if (fieldOptions.RERANK !== undefined) {\n args.push('RERANK', fieldOptions.RERANK ? 'TRUE' : 'FALSE');\n }\n\n break;\n\n case SCHEMA_VECTOR_FIELD_ALGORITHM['VAMANA']:\n if (fieldOptions.COMPRESSION) {\n args.push('COMPRESSION', fieldOptions.COMPRESSION);\n }\n\n if (fieldOptions.CONSTRUCTION_WINDOW_SIZE !== undefined) {\n args.push('CONSTRUCTION_WINDOW_SIZE', fieldOptions.CONSTRUCTION_WINDOW_SIZE.toString());\n }\n\n if (fieldOptions.GRAPH_MAX_DEGREE !== undefined) {\n args.push('GRAPH_MAX_DEGREE', fieldOptions.GRAPH_MAX_DEGREE.toString());\n }\n\n if (fieldOptions.SEARCH_WINDOW_SIZE !== undefined) {\n args.push('SEARCH_WINDOW_SIZE', fieldOptions.SEARCH_WINDOW_SIZE.toString());\n }\n\n if (fieldOptions.EPSILON !== undefined) {\n args.push('EPSILON', fieldOptions.EPSILON.toString());\n }\n\n if (fieldOptions.TRAINING_THRESHOLD !== undefined) {\n args.push('TRAINING_THRESHOLD', fieldOptions.TRAINING_THRESHOLD.toString());\n }\n\n if (fieldOptions.REDUCE !== undefined) {\n args.push('REDUCE', fieldOptions.REDUCE.toString());\n }\n\n break;\n }\n parser.pushVariadicWithLength(args);\n\n if (fieldOptions.INDEXMISSING) {\n parser.push('INDEXMISSING');\n }\n\n break;\n }\n\n case SCHEMA_FIELD_TYPE.GEOSHAPE:\n if (fieldOptions.COORD_SYSTEM !== undefined) {\n parser.push('COORD_SYSTEM', fieldOptions.COORD_SYSTEM);\n }\n\n if (fieldOptions.INDEXMISSING) {\n parser.push('INDEXMISSING');\n }\n\n break;\n }\n }\n }\n}\n\nexport const REDISEARCH_LANGUAGE = {\n ARABIC: 'Arabic',\n ARMENIAN: 'Armenian',\n BASQUE: 'Basque',\n CATALANA: 'Catalan',\n DANISH: 'Danish',\n DUTCH: 'Dutch',\n ENGLISH: 'English',\n FINNISH: 'Finnish',\n FRENCH: 'French',\n GERMAN: 'German',\n GREEK: 'Greek',\n HINDI: 'Hindi',\n HUNGARIAN: 'Hungarian',\n INDONESAIN: 'Indonesian',\n IRISH: 'Irish',\n ITALIAN: 'Italian',\n LITHUANIAN: 'Lithuanian',\n MALAY: 'Malay',\n NEPALI: 'Nepali',\n NORWEIGAN: 'Norwegian',\n PORTUGUESE: 'Portuguese',\n ROMANIAN: 'Romanian',\n RUSSIAN: 'Russian',\n SERBIAN: 'Serbian',\n SPANISH: 'Spanish',\n SWEDISH: 'Swedish',\n TAGALOG: 'Tagalog',\n TAMIL: 'Tamil',\n TURKISH: 'Turkish',\n YIDDISH: 'Yiddish',\n CHINESE: 'Chinese'\n} as const;\n\nexport type RediSearchLanguage = typeof REDISEARCH_LANGUAGE[keyof typeof REDISEARCH_LANGUAGE];\n\nexport type RediSearchProperty = `${'@' | '$.'}${string}`;\n\n/**\n * A document attribute: an `@`-prefixed or JSONPath property, or a plain\n * hash field name (e.g. `__lang`). `(string & {})` keeps autocomplete for\n * the prefixed forms while still accepting any field name.\n */\nexport type RediSearchAttribute = RediSearchProperty | (string & {});\n\nexport interface CreateOptions {\n ON?: 'HASH' | 'JSON';\n PREFIX?: RedisVariadicArgument;\n FILTER?: RedisArgument;\n LANGUAGE?: RediSearchLanguage;\n LANGUAGE_FIELD?: RediSearchAttribute;\n SCORE?: number;\n SCORE_FIELD?: RediSearchAttribute;\n // PAYLOAD_FIELD?: string;\n MAXTEXTFIELDS?: boolean;\n TEMPORARY?: number;\n NOOFFSETS?: boolean;\n NOHL?: boolean;\n NOFIELDS?: boolean;\n NOFREQS?: boolean;\n SKIPINITIALSCAN?: boolean;\n STOPWORDS?: RedisVariadicArgument;\n}\n\nexport default {\n NOT_KEYED_COMMAND: true,\n IS_READ_ONLY: true,\n parseCommand(parser: CommandParser, index: RedisArgument, schema: RediSearchSchema, options?: CreateOptions) {\n parser.push('FT.CREATE', index);\n\n if (options?.ON) {\n parser.push('ON', options.ON);\n }\n\n parseOptionalVariadicArgument(parser, 'PREFIX', options?.PREFIX);\n\n if (options?.FILTER) {\n parser.push('FILTER', options.FILTER);\n }\n\n if (options?.LANGUAGE) {\n parser.push('LANGUAGE', options.LANGUAGE);\n }\n\n if (options?.LANGUAGE_FIELD) {\n parser.push('LANGUAGE_FIELD', options.LANGUAGE_FIELD);\n }\n\n if (options?.SCORE !== undefined) {\n parser.push('SCORE', options.SCORE.toString());\n }\n\n if (options?.SCORE_FIELD) {\n parser.push('SCORE_FIELD', options.SCORE_FIELD);\n }\n\n // if (options?.PAYLOAD_FIELD) {\n // parser.push('PAYLOAD_FIELD', options.PAYLOAD_FIELD);\n // }\n\n if (options?.MAXTEXTFIELDS) {\n parser.push('MAXTEXTFIELDS');\n }\n\n if (options?.TEMPORARY) {\n parser.push('TEMPORARY', options.TEMPORARY.toString());\n }\n\n if (options?.NOOFFSETS) {\n parser.push('NOOFFSETS');\n }\n\n if (options?.NOHL) {\n parser.push('NOHL');\n }\n\n if (options?.NOFIELDS) {\n parser.push('NOFIELDS');\n }\n\n if (options?.NOFREQS) {\n parser.push('NOFREQS');\n }\n\n if (options?.SKIPINITIALSCAN) {\n parser.push('SKIPINITIALSCAN');\n }\n\n parseOptionalVariadicArgument(parser, 'STOPWORDS', options?.STOPWORDS);\n parser.push('SCHEMA');\n parseSchema(parser, schema);\n },\n transformReply: undefined as unknown as () => SimpleStringReply<'OK'>\n} as const satisfies Command;\n"]} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"HYBRID.d.ts","sourceRoot":"","sources":["../../../lib/commands/HYBRID.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"HYBRID.d.ts","sourceRoot":"","sources":["../../../lib/commands/HYBRID.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EACL,aAAa,EAEb,WAAW,EACZ,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,qBAAqB,EAEtB,MAAM,sDAAsD,CAAC;AAE9D,OAAO,EAAE,eAAe,EAAuB,MAAM,aAAa,CAAC;AASnE;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,8DAA8D;IAC9D,KAAK,EAAE,aAAa,CAAC;IACrB,sCAAsC;IACtC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,iDAAiD;IACjD,cAAc,CAAC,EAAE,aAAa,CAAC;CAChC;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB;IAClC,+CAA+C;;IAE/C,8CAA8C;;CAEtC,CAAC;AAEX,gCAAgC;AAChC,MAAM,MAAM,wBAAwB,GAClC,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,OAAO,uBAAuB,CAAC,CAAC;AAEzE,UAAU,uBAAuB;IAC/B,IAAI,EAAE,CAAC,OAAO,uBAAuB,CAAC,CAAC,KAAK,CAAC,CAAC;IAC9C,0CAA0C;IAC1C,CAAC,EAAE,MAAM,CAAC;IACV,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,yBAAyB;IACjC,IAAI,EAAE,CAAC,OAAO,uBAAuB,CAAC,CAAC,OAAO,CAAC,CAAC;IAChD,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,6CAA6C;IAC7C,KAAK,EAAE,aAAa,CAAC;IACrB,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,MAAM,CAAC,EAAE,uBAAuB,GAAG,yBAAyB,CAAC;IAC7D,8EAA8E;IAC9E,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,4CAA4C;IAC5C,cAAc,CAAC,EAAE,aAAa,CAAC;CAChC;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB;IACnC,6BAA6B;;IAE7B,qDAAqD;;CAE7C,CAAC;AAEX,0BAA0B;AAC1B,MAAM,MAAM,yBAAyB,GACnC,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,OAAO,wBAAwB,CAAC,CAAC;AAE3E,UAAU,wBAAwB;IAChC,IAAI,EAAE,CAAC,OAAO,wBAAwB,CAAC,CAAC,KAAK,CAAC,CAAC;IAC/C,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,2BAA2B;IACnC,IAAI,EAAE,CAAC,OAAO,wBAAwB,CAAC,CAAC,QAAQ,CAAC,CAAC;IAClD,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,UAAU,EAAE,aAAa,CAAC;IAC1B,6CAA6C;IAC7C,EAAE,CAAC,EAAE,aAAa,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,2CAA2C;IAC3C,MAAM,EAAE,wBAAwB,CAAC;IACjC,wDAAwD;IACxD,IAAI,EAAE,wBAAwB,CAAC;IAC/B,uEAAuE;IACvE,OAAO,CAAC,EAAE;QACR,mCAAmC;QACnC,MAAM,EAAE,wBAAwB,GAAG,2BAA2B,CAAC;QAC/D,8CAA8C;QAC9C,cAAc,CAAC,EAAE,aAAa,CAAC;KAChC,CAAC;IACF;;;;OAIG;IACH,IAAI,CAAC,EAAE,qBAAqB,CAAC;IAC7B,6CAA6C;IAC7C,OAAO,CAAC,EAAE;QACR,yBAAyB;QACzB,MAAM,EAAE,qBAAqB,CAAC;QAC9B,wCAAwC;QACxC,MAAM,CAAC,EAAE,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC;KACnD,CAAC;IACF,oDAAoD;IACpD,KAAK,CAAC,EAAE,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;IAC7C,qCAAqC;IACrC,MAAM,CAAC,EAAE;QACP,gDAAgD;QAChD,MAAM,EAAE,KAAK,CAAC;YACZ,4BAA4B;YAC5B,KAAK,EAAE,aAAa,CAAC;YACrB,+DAA+D;YAC/D,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;SAC5B,CAAC,CAAC;KACJ,CAAC;IACF,2DAA2D;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mDAAmD;IACnD,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,+BAA+B;IAC/B,KAAK,CAAC,EAAE;QACN,gCAAgC;QAChC,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;QAC/B,kCAAkC;QAClC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC;KAC/B,CAAC;IACF,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;IAClD,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;;;;gDAmOW,aAAa,SACd,aAAa,WACX,eAAe;;4BAQf,OAAO,cAEF,GAAG,iBACA,WAAW,KACzB,kBAAkB;4BAIZ,OAAO,cAEF,GAAG,iBACA,WAAW,KACzB,kBAAkB;;;AA1BzB,wBA8B6B;AAE7B,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;CAChC"} |
@@ -213,3 +213,2 @@ "use strict"; | ||
| const rawResults = (0, reply_transformers_1.mapLikeValues)((0, reply_transformers_1.getMapValue)(replyMap, ["results"]) ?? []); | ||
| const warnings = (0, reply_transformers_1.mapLikeValues)((0, reply_transformers_1.getMapValue)(replyMap, ["warnings", "warning"]) ?? []); | ||
| const executionTimeValue = (0, reply_transformers_1.getMapValue)(replyMap, [ | ||
@@ -246,3 +245,3 @@ "execution_time", | ||
| executionTime, | ||
| warnings: warnings.map(toWarningString), | ||
| warnings: (0, reply_transformers_1.parseWarnings)(replyMap), | ||
| results, | ||
@@ -254,18 +253,2 @@ }; | ||
| } | ||
| function toWarningString(warning) { | ||
| if (typeof warning === 'string') | ||
| return warning; | ||
| if (warning instanceof Buffer) | ||
| return warning.toString(); | ||
| if (warning === null || warning === undefined) | ||
| return ''; | ||
| // Anything else (Map/Array/plain object) would collapse to "[object Object]" | ||
| // under a naive toString — JSON-serialize instead so the caller can read it. | ||
| try { | ||
| return JSON.stringify(warning); | ||
| } | ||
| catch { | ||
| return String(warning); | ||
| } | ||
| } | ||
| //# sourceMappingURL=HYBRID.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"HYBRID.js","sourceRoot":"","sources":["../../../lib/commands/HYBRID.ts"],"names":[],"mappings":"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","sourcesContent":["import { CommandParser } from \"@redis/client/dist/lib/client/parser\";\nimport {\n RedisArgument,\n Command,\n TypeMapping,\n} from \"@redis/client/dist/lib/RESP/types\";\nimport {\n RedisVariadicArgument,\n parseOptionalVariadicArgument,\n} from \"@redis/client/dist/lib/commands/generic-transformers\";\nimport { parseParamsArgument } from \"./SEARCH\";\nimport { GroupByReducers, parseGroupByReducer } from \"./AGGREGATE\";\nimport {\n getMapValue,\n mapLikeToObject,\n mapLikeValues,\n parseDocumentValue,\n} from \"./reply-transformers\";\n\n/**\n * Text search expression configuration for hybrid search.\n */\nexport interface FtHybridSearchExpression {\n /** Search query string or parameter reference (e.g., \"$q\") */\n query: RedisArgument;\n /** Scoring algorithm configuration */\n SCORER?: RedisArgument;\n /** Alias for the text search score in results */\n YIELD_SCORE_AS?: RedisArgument;\n}\n\n/**\n * Vector search method configuration - either KNN or RANGE.\n */\nexport const FT_HYBRID_VECTOR_METHOD = {\n /** K-Nearest Neighbors search configuration */\n KNN: \"KNN\",\n /** Range-based vector search configuration */\n RANGE: \"RANGE\",\n} as const;\n\n/** Vector search method type */\nexport type FtHybridVectorMethodType =\n (typeof FT_HYBRID_VECTOR_METHOD)[keyof typeof FT_HYBRID_VECTOR_METHOD];\n\ninterface FtHybridVectorMethodKNN {\n type: (typeof FT_HYBRID_VECTOR_METHOD)[\"KNN\"];\n /** Number of nearest neighbors to find */\n K: number;\n /** Controls the search accuracy vs. speed tradeoff */\n EF_RUNTIME?: number;\n}\n\ninterface FtHybridVectorMethodRange {\n type: (typeof FT_HYBRID_VECTOR_METHOD)[\"RANGE\"];\n /** Maximum distance for matches */\n RADIUS: number;\n /** Provides additional precision control */\n EPSILON?: number;\n}\n\n/**\n * Vector similarity search expression configuration.\n */\nexport interface FtHybridVectorExpression {\n /** Vector field name (e.g., \"@embedding\") */\n field: RedisArgument;\n /** Vector parameter reference (e.g., \"$v\") */\n vector: string;\n /** Search method configuration - KNN or RANGE */\n method?: FtHybridVectorMethodKNN | FtHybridVectorMethodRange;\n /** Pre-filter expression applied before vector search (e.g., \"@tag:{foo}\") */\n FILTER?: RedisArgument;\n /** Alias for the vector score in results */\n YIELD_SCORE_AS?: RedisArgument;\n}\n\n/**\n * Score fusion method type constants for combining search results.\n */\nexport const FT_HYBRID_COMBINE_METHOD = {\n /** Reciprocal Rank Fusion */\n RRF: \"RRF\",\n /** Linear combination with ALPHA and BETA weights */\n LINEAR: \"LINEAR\",\n} as const;\n\n/** Combine method type */\nexport type FtHybridCombineMethodType =\n (typeof FT_HYBRID_COMBINE_METHOD)[keyof typeof FT_HYBRID_COMBINE_METHOD];\n\ninterface FtHybridCombineMethodRRF {\n type: (typeof FT_HYBRID_COMBINE_METHOD)[\"RRF\"];\n /** RRF constant for score calculation */\n CONSTANT?: number;\n /** Window size for score normalization */\n WINDOW?: number;\n}\n\ninterface FtHybridCombineMethodLinear {\n type: (typeof FT_HYBRID_COMBINE_METHOD)[\"LINEAR\"];\n /** Weight for text search score */\n ALPHA?: number;\n /** Weight for vector search score */\n BETA?: number;\n /** Window size for score normalization */\n WINDOW?: number;\n}\n\n/**\n * Apply expression for result transformation.\n */\nexport interface FtHybridApply {\n /** Transformation expression to apply */\n expression: RedisArgument;\n /** Alias for the computed value in output */\n AS?: RedisArgument;\n}\n\n/**\n * Options for the FT.HYBRID command.\n */\nexport interface FtHybridOptions {\n /** Text search expression configuration */\n SEARCH: FtHybridSearchExpression;\n /** Vector similarity search expression configuration */\n VSIM: FtHybridVectorExpression;\n /** Score fusion configuration for combining SEARCH and VSIM results */\n COMBINE?: {\n /** Fusion method: RRF or LINEAR */\n method: FtHybridCombineMethodRRF | FtHybridCombineMethodLinear;\n /** Alias for the combined score in results */\n YIELD_SCORE_AS?: RedisArgument;\n };\n /**\n * Fields to load and return in results (LOAD clause).\n * - Use `\"*\"` to load all fields from documents\n * - Use a field name or array of field names to load specific fields\n */\n LOAD?: RedisVariadicArgument;\n /** Group by configuration for aggregation */\n GROUPBY?: {\n /** Fields to group by */\n fields: RedisVariadicArgument;\n /** Reducer(s) to apply to each group */\n REDUCE?: GroupByReducers | Array<GroupByReducers>;\n };\n /** Apply expression(s) for result transformation */\n APPLY?: FtHybridApply | Array<FtHybridApply>;\n /** Sort configuration for results */\n SORTBY?: {\n /** Fields to sort by with optional direction */\n fields: Array<{\n /** Field name to sort by */\n field: RedisArgument;\n /** Sort direction: \"ASC\" (ascending) or \"DESC\" (descending) */\n direction?: \"ASC\" | \"DESC\";\n }>;\n };\n /** Disable sorting - returns results in arbitrary order */\n NOSORT?: boolean;\n /** Post-filter expression applied after scoring */\n FILTER?: RedisArgument;\n /** Pagination configuration */\n LIMIT?: {\n /** Number of results to skip */\n offset: number | RedisArgument;\n /** Number of results to return */\n count: number | RedisArgument;\n };\n /** Query parameters for parameterized queries */\n PARAMS?: Record<string, string | number | Buffer>;\n /** Query timeout in milliseconds */\n TIMEOUT?: number;\n}\n\nfunction parseSearchExpression(\n parser: CommandParser,\n search: FtHybridSearchExpression,\n) {\n parser.push(\"SEARCH\", search.query);\n\n if (search.SCORER) {\n parser.push(\"SCORER\", search.SCORER);\n }\n\n if (search.YIELD_SCORE_AS) {\n parser.push(\"YIELD_SCORE_AS\", search.YIELD_SCORE_AS);\n }\n}\n\nfunction parseVectorExpression(\n parser: CommandParser,\n vsim: FtHybridVectorExpression,\n) {\n parser.push(\"VSIM\", vsim.field, vsim.vector);\n\n if (vsim.method) {\n if (vsim.method.type === FT_HYBRID_VECTOR_METHOD.KNN) {\n let argsCount = 2;\n if (vsim.method.EF_RUNTIME !== undefined) {\n argsCount += 2;\n }\n\n parser.push(\"KNN\", argsCount.toString(), \"K\", vsim.method.K.toString());\n\n if (vsim.method.EF_RUNTIME !== undefined) {\n parser.push(\"EF_RUNTIME\", vsim.method.EF_RUNTIME.toString());\n }\n }\n\n if (vsim.method.type === FT_HYBRID_VECTOR_METHOD.RANGE) {\n let argsCount = 2;\n if (vsim.method.EPSILON !== undefined) {\n argsCount += 2;\n }\n\n parser.push(\n \"RANGE\",\n argsCount.toString(),\n \"RADIUS\",\n vsim.method.RADIUS.toString(),\n );\n\n if (vsim.method.EPSILON !== undefined) {\n parser.push(\"EPSILON\", vsim.method.EPSILON.toString());\n }\n }\n }\n\n if (vsim.FILTER) {\n parser.push(\"FILTER\", vsim.FILTER);\n }\n\n if (vsim.YIELD_SCORE_AS) {\n parser.push(\"YIELD_SCORE_AS\", vsim.YIELD_SCORE_AS);\n }\n}\n\nfunction parseCombineMethod(\n parser: CommandParser,\n combine: FtHybridOptions[\"COMBINE\"],\n) {\n if (!combine) return;\n\n parser.push(\"COMBINE\");\n\n if (combine.method.type === FT_HYBRID_COMBINE_METHOD.RRF) {\n // Calculate argsCount: 2 per optional (WINDOW, CONSTANT, YIELD_SCORE_AS)\n let argsCount = 0;\n if (combine.method.WINDOW !== undefined) {\n argsCount += 2;\n }\n if (combine.method.CONSTANT !== undefined) {\n argsCount += 2;\n }\n if (combine.YIELD_SCORE_AS) {\n argsCount += 2;\n }\n\n parser.push(\"RRF\", argsCount.toString());\n\n if (combine.method.WINDOW !== undefined) {\n parser.push(\"WINDOW\", combine.method.WINDOW.toString());\n }\n\n if (combine.method.CONSTANT !== undefined) {\n parser.push(\"CONSTANT\", combine.method.CONSTANT.toString());\n }\n }\n\n if (combine.method.type === FT_HYBRID_COMBINE_METHOD.LINEAR) {\n // Calculate argsCount: 2 per optional (ALPHA, BETA, WINDOW, YIELD_SCORE_AS)\n let argsCount = 0;\n if (combine.method.ALPHA !== undefined) {\n argsCount += 2;\n }\n if (combine.method.BETA !== undefined) {\n argsCount += 2;\n }\n if (combine.method.WINDOW !== undefined) {\n argsCount += 2;\n }\n if (combine.YIELD_SCORE_AS) {\n argsCount += 2;\n }\n\n parser.push(\"LINEAR\", argsCount.toString());\n\n if (combine.method.ALPHA !== undefined) {\n parser.push(\"ALPHA\", combine.method.ALPHA.toString());\n }\n\n if (combine.method.BETA !== undefined) {\n parser.push(\"BETA\", combine.method.BETA.toString());\n }\n\n if (combine.method.WINDOW !== undefined) {\n parser.push(\"WINDOW\", combine.method.WINDOW.toString());\n }\n }\n\n if (combine.YIELD_SCORE_AS) {\n parser.push(\"YIELD_SCORE_AS\", combine.YIELD_SCORE_AS);\n }\n}\n\nfunction parseApply(parser: CommandParser, apply: FtHybridApply) {\n parser.push(\"APPLY\", apply.expression);\n if (apply.AS) {\n parser.push(\"AS\", apply.AS);\n }\n}\n\nfunction parseHybridOptions(parser: CommandParser, options: FtHybridOptions) {\n parseSearchExpression(parser, options.SEARCH);\n parseVectorExpression(parser, options.VSIM);\n\n if (options.COMBINE) {\n parseCombineMethod(parser, options.COMBINE);\n }\n\n if (options.LOAD) {\n if (options.LOAD === \"*\") {\n parser.push(\"LOAD\", \"*\");\n } else {\n parseOptionalVariadicArgument(parser, \"LOAD\", options.LOAD);\n }\n }\n\n\n if (options.GROUPBY) {\n parseOptionalVariadicArgument(parser, \"GROUPBY\", options.GROUPBY.fields);\n\n if (options.GROUPBY.REDUCE) {\n const reducers = Array.isArray(options.GROUPBY.REDUCE)\n ? options.GROUPBY.REDUCE\n : [options.GROUPBY.REDUCE];\n\n for (const reducer of reducers) {\n parseGroupByReducer(parser, reducer);\n }\n }\n }\n\n if (options.APPLY) {\n const applies = Array.isArray(options.APPLY)\n ? options.APPLY\n : [options.APPLY];\n\n for (const apply of applies) {\n parseApply(parser, apply);\n }\n }\n\n if (options.SORTBY) {\n const sortByArgsCount = options.SORTBY.fields.reduce((acc, field) => {\n if (field.direction) {\n return acc + 2;\n }\n return acc + 1;\n }, 0);\n\n parser.push(\"SORTBY\", sortByArgsCount.toString());\n for (const sortField of options.SORTBY.fields) {\n parser.push(sortField.field);\n if (sortField.direction) {\n parser.push(sortField.direction);\n }\n }\n }\n\n if (options.NOSORT) {\n parser.push(\"NOSORT\");\n }\n\n if (options.FILTER) {\n parser.push(\"FILTER\", options.FILTER);\n }\n\n if (options.LIMIT) {\n parser.push(\n \"LIMIT\",\n options.LIMIT.offset.toString(),\n options.LIMIT.count.toString(),\n );\n }\n\n const hasParams = options.PARAMS && Object.keys(options.PARAMS).length > 0;\n\n parseParamsArgument(parser, hasParams ? options.PARAMS : undefined);\n\n if (options.TIMEOUT !== undefined) {\n parser.push(\"TIMEOUT\", options.TIMEOUT.toString());\n }\n}\n\nexport default {\n NOT_KEYED_COMMAND: true,\n IS_READ_ONLY: true,\n parseCommand(\n parser: CommandParser,\n index: RedisArgument,\n options: FtHybridOptions,\n ) {\n parser.push(\"FT.HYBRID\", index);\n\n parseHybridOptions(parser, options);\n },\n transformReply: {\n 2: (\n reply: unknown,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- matches TransformReply contract\n _preserve?: any,\n _typeMapping?: TypeMapping\n ): HybridSearchResult => {\n return transformHybridSearchResults(reply);\n },\n 3: (\n reply: unknown,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- matches TransformReply contract\n _preserve?: any,\n _typeMapping?: TypeMapping\n ): HybridSearchResult => {\n return transformHybridSearchResults(reply);\n },\n },\n} as const satisfies Command;\n\nexport interface HybridSearchResult {\n totalResults: number;\n executionTime: number;\n warnings: string[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n results: Record<string, any>[];\n}\n\nfunction transformHybridSearchResults(reply: unknown): HybridSearchResult {\n const replyMap = parseReplyMap(reply);\n\n const totalResults = Number(\n getMapValue(replyMap, [\"total_results\", \"totalResults\"]) ?? 0,\n );\n\n const rawResults = mapLikeValues(getMapValue(replyMap, [\"results\"]) ?? []);\n const warnings = mapLikeValues(\n getMapValue(replyMap, [\"warnings\", \"warning\"]) ?? [],\n );\n\n const executionTimeValue = getMapValue(replyMap, [\n \"execution_time\",\n \"executionTime\",\n ]);\n const executionTime =\n executionTimeValue === undefined ? 0 : Number(executionTimeValue);\n\n const results: HybridSearchResult['results'] = [];\n for (const result of rawResults) {\n const resultMap = parseReplyMap(result);\n const doc: Record<string, unknown> = {};\n const id = getMapValue(resultMap, [\"id\"]);\n\n if (id != null) {\n doc.id = (id as { toString(): string }).toString();\n }\n\n Object.assign(doc, parseDocumentValue(getMapValue(resultMap, [\"values\"])));\n Object.assign(\n doc,\n parseDocumentValue(\n getMapValue(resultMap, [\"extra_attributes\", \"extraAttributes\"]),\n ),\n );\n\n for (const [key, value] of Object.entries(resultMap)) {\n if (\n key === \"id\" ||\n key === \"values\" ||\n key.toLowerCase() === \"extra_attributes\" ||\n key === \"extraAttributes\"\n ) {\n continue;\n }\n\n if (!Object.hasOwn(doc, key)) {\n doc[key] = value;\n }\n }\n\n results.push(doc);\n }\n\n return {\n totalResults,\n executionTime,\n warnings: warnings.map(toWarningString),\n results,\n };\n}\n\nfunction parseReplyMap(reply: unknown): Record<string, unknown> {\n return mapLikeToObject(reply);\n}\n\nfunction toWarningString(warning: unknown): string {\n if (typeof warning === 'string') return warning;\n if (warning instanceof Buffer) return warning.toString();\n if (warning === null || warning === undefined) return '';\n // Anything else (Map/Array/plain object) would collapse to \"[object Object]\"\n // under a naive toString — JSON-serialize instead so the caller can read it.\n try {\n return JSON.stringify(warning);\n } catch {\n return String(warning);\n }\n}\n"]} | ||
| {"version":3,"file":"HYBRID.js","sourceRoot":"","sources":["../../../lib/commands/HYBRID.ts"],"names":[],"mappings":"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","sourcesContent":["import { CommandParser } from \"@redis/client/dist/lib/client/parser\";\nimport {\n RedisArgument,\n Command,\n TypeMapping,\n} from \"@redis/client/dist/lib/RESP/types\";\nimport {\n RedisVariadicArgument,\n parseOptionalVariadicArgument,\n} from \"@redis/client/dist/lib/commands/generic-transformers\";\nimport { parseParamsArgument } from \"./SEARCH\";\nimport { GroupByReducers, parseGroupByReducer } from \"./AGGREGATE\";\nimport {\n getMapValue,\n mapLikeToObject,\n mapLikeValues,\n parseDocumentValue,\n parseWarnings,\n} from \"./reply-transformers\";\n\n/**\n * Text search expression configuration for hybrid search.\n */\nexport interface FtHybridSearchExpression {\n /** Search query string or parameter reference (e.g., \"$q\") */\n query: RedisArgument;\n /** Scoring algorithm configuration */\n SCORER?: RedisArgument;\n /** Alias for the text search score in results */\n YIELD_SCORE_AS?: RedisArgument;\n}\n\n/**\n * Vector search method configuration - either KNN or RANGE.\n */\nexport const FT_HYBRID_VECTOR_METHOD = {\n /** K-Nearest Neighbors search configuration */\n KNN: \"KNN\",\n /** Range-based vector search configuration */\n RANGE: \"RANGE\",\n} as const;\n\n/** Vector search method type */\nexport type FtHybridVectorMethodType =\n (typeof FT_HYBRID_VECTOR_METHOD)[keyof typeof FT_HYBRID_VECTOR_METHOD];\n\ninterface FtHybridVectorMethodKNN {\n type: (typeof FT_HYBRID_VECTOR_METHOD)[\"KNN\"];\n /** Number of nearest neighbors to find */\n K: number;\n /** Controls the search accuracy vs. speed tradeoff */\n EF_RUNTIME?: number;\n}\n\ninterface FtHybridVectorMethodRange {\n type: (typeof FT_HYBRID_VECTOR_METHOD)[\"RANGE\"];\n /** Maximum distance for matches */\n RADIUS: number;\n /** Provides additional precision control */\n EPSILON?: number;\n}\n\n/**\n * Vector similarity search expression configuration.\n */\nexport interface FtHybridVectorExpression {\n /** Vector field name (e.g., \"@embedding\") */\n field: RedisArgument;\n /** Vector parameter reference (e.g., \"$v\") */\n vector: string;\n /** Search method configuration - KNN or RANGE */\n method?: FtHybridVectorMethodKNN | FtHybridVectorMethodRange;\n /** Pre-filter expression applied before vector search (e.g., \"@tag:{foo}\") */\n FILTER?: RedisArgument;\n /** Alias for the vector score in results */\n YIELD_SCORE_AS?: RedisArgument;\n}\n\n/**\n * Score fusion method type constants for combining search results.\n */\nexport const FT_HYBRID_COMBINE_METHOD = {\n /** Reciprocal Rank Fusion */\n RRF: \"RRF\",\n /** Linear combination with ALPHA and BETA weights */\n LINEAR: \"LINEAR\",\n} as const;\n\n/** Combine method type */\nexport type FtHybridCombineMethodType =\n (typeof FT_HYBRID_COMBINE_METHOD)[keyof typeof FT_HYBRID_COMBINE_METHOD];\n\ninterface FtHybridCombineMethodRRF {\n type: (typeof FT_HYBRID_COMBINE_METHOD)[\"RRF\"];\n /** RRF constant for score calculation */\n CONSTANT?: number;\n /** Window size for score normalization */\n WINDOW?: number;\n}\n\ninterface FtHybridCombineMethodLinear {\n type: (typeof FT_HYBRID_COMBINE_METHOD)[\"LINEAR\"];\n /** Weight for text search score */\n ALPHA?: number;\n /** Weight for vector search score */\n BETA?: number;\n /** Window size for score normalization */\n WINDOW?: number;\n}\n\n/**\n * Apply expression for result transformation.\n */\nexport interface FtHybridApply {\n /** Transformation expression to apply */\n expression: RedisArgument;\n /** Alias for the computed value in output */\n AS?: RedisArgument;\n}\n\n/**\n * Options for the FT.HYBRID command.\n */\nexport interface FtHybridOptions {\n /** Text search expression configuration */\n SEARCH: FtHybridSearchExpression;\n /** Vector similarity search expression configuration */\n VSIM: FtHybridVectorExpression;\n /** Score fusion configuration for combining SEARCH and VSIM results */\n COMBINE?: {\n /** Fusion method: RRF or LINEAR */\n method: FtHybridCombineMethodRRF | FtHybridCombineMethodLinear;\n /** Alias for the combined score in results */\n YIELD_SCORE_AS?: RedisArgument;\n };\n /**\n * Fields to load and return in results (LOAD clause).\n * - Use `\"*\"` to load all fields from documents\n * - Use a field name or array of field names to load specific fields\n */\n LOAD?: RedisVariadicArgument;\n /** Group by configuration for aggregation */\n GROUPBY?: {\n /** Fields to group by */\n fields: RedisVariadicArgument;\n /** Reducer(s) to apply to each group */\n REDUCE?: GroupByReducers | Array<GroupByReducers>;\n };\n /** Apply expression(s) for result transformation */\n APPLY?: FtHybridApply | Array<FtHybridApply>;\n /** Sort configuration for results */\n SORTBY?: {\n /** Fields to sort by with optional direction */\n fields: Array<{\n /** Field name to sort by */\n field: RedisArgument;\n /** Sort direction: \"ASC\" (ascending) or \"DESC\" (descending) */\n direction?: \"ASC\" | \"DESC\";\n }>;\n };\n /** Disable sorting - returns results in arbitrary order */\n NOSORT?: boolean;\n /** Post-filter expression applied after scoring */\n FILTER?: RedisArgument;\n /** Pagination configuration */\n LIMIT?: {\n /** Number of results to skip */\n offset: number | RedisArgument;\n /** Number of results to return */\n count: number | RedisArgument;\n };\n /** Query parameters for parameterized queries */\n PARAMS?: Record<string, string | number | Buffer>;\n /** Query timeout in milliseconds */\n TIMEOUT?: number;\n}\n\nfunction parseSearchExpression(\n parser: CommandParser,\n search: FtHybridSearchExpression,\n) {\n parser.push(\"SEARCH\", search.query);\n\n if (search.SCORER) {\n parser.push(\"SCORER\", search.SCORER);\n }\n\n if (search.YIELD_SCORE_AS) {\n parser.push(\"YIELD_SCORE_AS\", search.YIELD_SCORE_AS);\n }\n}\n\nfunction parseVectorExpression(\n parser: CommandParser,\n vsim: FtHybridVectorExpression,\n) {\n parser.push(\"VSIM\", vsim.field, vsim.vector);\n\n if (vsim.method) {\n if (vsim.method.type === FT_HYBRID_VECTOR_METHOD.KNN) {\n let argsCount = 2;\n if (vsim.method.EF_RUNTIME !== undefined) {\n argsCount += 2;\n }\n\n parser.push(\"KNN\", argsCount.toString(), \"K\", vsim.method.K.toString());\n\n if (vsim.method.EF_RUNTIME !== undefined) {\n parser.push(\"EF_RUNTIME\", vsim.method.EF_RUNTIME.toString());\n }\n }\n\n if (vsim.method.type === FT_HYBRID_VECTOR_METHOD.RANGE) {\n let argsCount = 2;\n if (vsim.method.EPSILON !== undefined) {\n argsCount += 2;\n }\n\n parser.push(\n \"RANGE\",\n argsCount.toString(),\n \"RADIUS\",\n vsim.method.RADIUS.toString(),\n );\n\n if (vsim.method.EPSILON !== undefined) {\n parser.push(\"EPSILON\", vsim.method.EPSILON.toString());\n }\n }\n }\n\n if (vsim.FILTER) {\n parser.push(\"FILTER\", vsim.FILTER);\n }\n\n if (vsim.YIELD_SCORE_AS) {\n parser.push(\"YIELD_SCORE_AS\", vsim.YIELD_SCORE_AS);\n }\n}\n\nfunction parseCombineMethod(\n parser: CommandParser,\n combine: FtHybridOptions[\"COMBINE\"],\n) {\n if (!combine) return;\n\n parser.push(\"COMBINE\");\n\n if (combine.method.type === FT_HYBRID_COMBINE_METHOD.RRF) {\n // Calculate argsCount: 2 per optional (WINDOW, CONSTANT, YIELD_SCORE_AS)\n let argsCount = 0;\n if (combine.method.WINDOW !== undefined) {\n argsCount += 2;\n }\n if (combine.method.CONSTANT !== undefined) {\n argsCount += 2;\n }\n if (combine.YIELD_SCORE_AS) {\n argsCount += 2;\n }\n\n parser.push(\"RRF\", argsCount.toString());\n\n if (combine.method.WINDOW !== undefined) {\n parser.push(\"WINDOW\", combine.method.WINDOW.toString());\n }\n\n if (combine.method.CONSTANT !== undefined) {\n parser.push(\"CONSTANT\", combine.method.CONSTANT.toString());\n }\n }\n\n if (combine.method.type === FT_HYBRID_COMBINE_METHOD.LINEAR) {\n // Calculate argsCount: 2 per optional (ALPHA, BETA, WINDOW, YIELD_SCORE_AS)\n let argsCount = 0;\n if (combine.method.ALPHA !== undefined) {\n argsCount += 2;\n }\n if (combine.method.BETA !== undefined) {\n argsCount += 2;\n }\n if (combine.method.WINDOW !== undefined) {\n argsCount += 2;\n }\n if (combine.YIELD_SCORE_AS) {\n argsCount += 2;\n }\n\n parser.push(\"LINEAR\", argsCount.toString());\n\n if (combine.method.ALPHA !== undefined) {\n parser.push(\"ALPHA\", combine.method.ALPHA.toString());\n }\n\n if (combine.method.BETA !== undefined) {\n parser.push(\"BETA\", combine.method.BETA.toString());\n }\n\n if (combine.method.WINDOW !== undefined) {\n parser.push(\"WINDOW\", combine.method.WINDOW.toString());\n }\n }\n\n if (combine.YIELD_SCORE_AS) {\n parser.push(\"YIELD_SCORE_AS\", combine.YIELD_SCORE_AS);\n }\n}\n\nfunction parseApply(parser: CommandParser, apply: FtHybridApply) {\n parser.push(\"APPLY\", apply.expression);\n if (apply.AS) {\n parser.push(\"AS\", apply.AS);\n }\n}\n\nfunction parseHybridOptions(parser: CommandParser, options: FtHybridOptions) {\n parseSearchExpression(parser, options.SEARCH);\n parseVectorExpression(parser, options.VSIM);\n\n if (options.COMBINE) {\n parseCombineMethod(parser, options.COMBINE);\n }\n\n if (options.LOAD) {\n if (options.LOAD === \"*\") {\n parser.push(\"LOAD\", \"*\");\n } else {\n parseOptionalVariadicArgument(parser, \"LOAD\", options.LOAD);\n }\n }\n\n\n if (options.GROUPBY) {\n parseOptionalVariadicArgument(parser, \"GROUPBY\", options.GROUPBY.fields);\n\n if (options.GROUPBY.REDUCE) {\n const reducers = Array.isArray(options.GROUPBY.REDUCE)\n ? options.GROUPBY.REDUCE\n : [options.GROUPBY.REDUCE];\n\n for (const reducer of reducers) {\n parseGroupByReducer(parser, reducer);\n }\n }\n }\n\n if (options.APPLY) {\n const applies = Array.isArray(options.APPLY)\n ? options.APPLY\n : [options.APPLY];\n\n for (const apply of applies) {\n parseApply(parser, apply);\n }\n }\n\n if (options.SORTBY) {\n const sortByArgsCount = options.SORTBY.fields.reduce((acc, field) => {\n if (field.direction) {\n return acc + 2;\n }\n return acc + 1;\n }, 0);\n\n parser.push(\"SORTBY\", sortByArgsCount.toString());\n for (const sortField of options.SORTBY.fields) {\n parser.push(sortField.field);\n if (sortField.direction) {\n parser.push(sortField.direction);\n }\n }\n }\n\n if (options.NOSORT) {\n parser.push(\"NOSORT\");\n }\n\n if (options.FILTER) {\n parser.push(\"FILTER\", options.FILTER);\n }\n\n if (options.LIMIT) {\n parser.push(\n \"LIMIT\",\n options.LIMIT.offset.toString(),\n options.LIMIT.count.toString(),\n );\n }\n\n const hasParams = options.PARAMS && Object.keys(options.PARAMS).length > 0;\n\n parseParamsArgument(parser, hasParams ? options.PARAMS : undefined);\n\n if (options.TIMEOUT !== undefined) {\n parser.push(\"TIMEOUT\", options.TIMEOUT.toString());\n }\n}\n\nexport default {\n NOT_KEYED_COMMAND: true,\n IS_READ_ONLY: true,\n parseCommand(\n parser: CommandParser,\n index: RedisArgument,\n options: FtHybridOptions,\n ) {\n parser.push(\"FT.HYBRID\", index);\n\n parseHybridOptions(parser, options);\n },\n transformReply: {\n 2: (\n reply: unknown,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- matches TransformReply contract\n _preserve?: any,\n _typeMapping?: TypeMapping\n ): HybridSearchResult => {\n return transformHybridSearchResults(reply);\n },\n 3: (\n reply: unknown,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- matches TransformReply contract\n _preserve?: any,\n _typeMapping?: TypeMapping\n ): HybridSearchResult => {\n return transformHybridSearchResults(reply);\n },\n },\n} as const satisfies Command;\n\nexport interface HybridSearchResult {\n totalResults: number;\n executionTime: number;\n warnings: string[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n results: Record<string, any>[];\n}\n\nfunction transformHybridSearchResults(reply: unknown): HybridSearchResult {\n const replyMap = parseReplyMap(reply);\n\n const totalResults = Number(\n getMapValue(replyMap, [\"total_results\", \"totalResults\"]) ?? 0,\n );\n\n const rawResults = mapLikeValues(getMapValue(replyMap, [\"results\"]) ?? []);\n\n const executionTimeValue = getMapValue(replyMap, [\n \"execution_time\",\n \"executionTime\",\n ]);\n const executionTime =\n executionTimeValue === undefined ? 0 : Number(executionTimeValue);\n\n const results: HybridSearchResult['results'] = [];\n for (const result of rawResults) {\n const resultMap = parseReplyMap(result);\n const doc: Record<string, unknown> = {};\n const id = getMapValue(resultMap, [\"id\"]);\n\n if (id != null) {\n doc.id = (id as { toString(): string }).toString();\n }\n\n Object.assign(doc, parseDocumentValue(getMapValue(resultMap, [\"values\"])));\n Object.assign(\n doc,\n parseDocumentValue(\n getMapValue(resultMap, [\"extra_attributes\", \"extraAttributes\"]),\n ),\n );\n\n for (const [key, value] of Object.entries(resultMap)) {\n if (\n key === \"id\" ||\n key === \"values\" ||\n key.toLowerCase() === \"extra_attributes\" ||\n key === \"extraAttributes\"\n ) {\n continue;\n }\n\n if (!Object.hasOwn(doc, key)) {\n doc[key] = value;\n }\n }\n\n results.push(doc);\n }\n\n return {\n totalResults,\n executionTime,\n warnings: parseWarnings(replyMap),\n results,\n };\n}\n\nfunction parseReplyMap(reply: unknown): Record<string, unknown> {\n return mapLikeToObject(reply);\n}\n"]} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/commands/index.ts"],"names":[],"mappings":";;IAqCE;;OAEG;;;;;;;;;;IAEH;;OAEG;;;;;;;;;;IAEH;;;;OAIG;;;;;;;IAEH;;;;OAIG;;;;;;;IAEH;;;;;;;;OAQG;;;;;;;;;IAEH;;;;;;;;OAQG;;;;;;;;;IAEH;;;;;;;;;;OAUG;;;;;;;;;;IAEH;;;;;;;;;;OAUG;;;;;;;;;;IAEH;;;;OAIG;;;;;;;IAEH;;;;OAIG;;;;;;;IAEH;;;OAGG;;;;;;;IAEH;;;OAGG;;;;;;;IAEH;;;;OAIG;;;;;;;IAEH;;;;OAIG;;;;;;;IAEH;;;OAGG;;;;;;;IAEH;;;OAGG;;;;;;;IAEH;;;;OAIG;;;;;;;IAEH;;;;OAIG;;;;;;;IAEH;;;;;;;;;;;;;;;OAeG;;;;;;;IAEH;;;;;;;;;;;;;;;OAeG;;;;;;;IAEH;;;;OAIG;;;;;;;IAEH;;;;OAIG;;;;;;;IAEH;;;;;;OAMG;;;;;;;;;;IAEH;;;;;;OAMG;;;;;;;;;;IAEH;;;;OAIG;;;;;;;IAEH;;;;OAIG;;;;;;;IAEH;;;;OAIG;;;;;;;IAEH;;;;OAIG;;;;;;;IAEH;;;OAGG;;;;;;;;;;IAEH;;;OAGG;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;IAEH;;;;;;;OAOG;;;;;;;IAEH;;;;;;OAMG;;;;;;;IAEH;;;;;;OAMG;;;;;;;IAEH;;;;;;;;;;;;;;;OAeG;;;;;;;;;;IAEH;;;;;;;;;;;;;;;OAeG;;;;;;;;;;IAEH;;;OAGG;;;;;;;;;;IAEH;;;OAGG;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;;;;IAEH;;;;;;;;;;;;;OAaG;;;;;;;;;;IAEH;;;;;;;;;;;;;OAaG;;;;;;;;;;IAEH;;;;;;;;OAQG;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;;;OAQG;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;;;OAQG;;;;;;IAEH;;;;;;;;OAQG;;;;;;IAEH;;;;OAIG;;;;;;IAEH;;;;OAIG;;;;;;IAEH;;;;;;;OAOG;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;IAEH;;;;;;;OAOG;;;;;;IAEH;;;OAGG;;;;;;IAEH;;;OAGG;;;;;;IAEH;;;OAGG;;;;;;;;;;IAEH;;;OAGG;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;IAEH;;;;;;;OAOG;;;;;;;IAEH;;;;OAIG;;;;;;;;;;IAEH;;;;OAIG;;;;;;;;;;;AArjBL,wBAujBE"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/commands/index.ts"],"names":[],"mappings":";;IAsCE;;OAEG;;;;;;;;;;IAEH;;OAEG;;;;;;;;;;IAEH;;;;OAIG;;;;;;;IAEH;;;;OAIG;;;;;;;IAEH;;;;;;;;OAQG;;;;;;;;;IAEH;;;;;;;;OAQG;;;;;;;;;IAEH;;;;;;;;;;OAUG;;;;;;;;;;IAEH;;;;;;;;;;OAUG;;;;;;;;;;IAEH;;;;OAIG;;;;;;;IAEH;;;;OAIG;;;;;;;IAEH;;;OAGG;;;;;;;IAEH;;;OAGG;;;;;;;IAEH;;;OAGG;;;;;;;;;;IAEH;;;OAGG;;;;;;;;;;IAEH;;;;OAIG;;;;;;;IAEH;;;;OAIG;;;;;;;IAEH;;;OAGG;;;;;;;IAEH;;;OAGG;;;;;;;IAEH;;;;OAIG;;;;;;;IAEH;;;;OAIG;;;;;;;IAEH;;;;;;;;;;;;;;;OAeG;;;;;;;IAEH;;;;;;;;;;;;;;;OAeG;;;;;;;IAEH;;;;OAIG;;;;;;;IAEH;;;;OAIG;;;;;;;IAEH;;;;;;OAMG;;;;;;;;;;IAEH;;;;;;OAMG;;;;;;;;;;IAEH;;;;OAIG;;;;;;;IAEH;;;;OAIG;;;;;;;IAEH;;;;OAIG;;;;;;;IAEH;;;;OAIG;;;;;;;IAEH;;;OAGG;;;;;;;;;;IAEH;;;OAGG;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;IAEH;;;;;;;OAOG;;;;;;;IAEH;;;;;;OAMG;;;;;;;IAEH;;;;;;OAMG;;;;;;;IAEH;;;;;;;;;;;;;;;OAeG;;;;;;;;;;IAEH;;;;;;;;;;;;;;;OAeG;;;;;;;;;;IAEH;;;OAGG;;;;;;;;;;IAEH;;;OAGG;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;qTArQH;;;;eAIG;;;;IAmQH;;;;;;;OAOG;;;;;;qTA9QH;;;;eAIG;;;;IA4QH;;;;;;;OAOG;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;;;;IAEH;;;;;;;;;;;;;OAaG;;;;;;;;;;IAEH;;;;;;;;;;;;;OAaG;;;;;;;;;;IAEH;;;;;;;;OAQG;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;;;OAQG;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;;;OAQG;;;;;;IAEH;;;;;;;;OAQG;;;;;;IAEH;;;;OAIG;;;;;;IAEH;;;;OAIG;;;;;;IAEH;;;;;;;OAOG;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;IAEH;;;;;;;OAOG;;;;;;IAEH;;;OAGG;;;;;;IAEH;;;OAGG;;;;;;IAEH;;;OAGG;;;;;;;;;;IAEH;;;OAGG;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;IAEH;;;;;;;OAOG;;;;;;;IAEH;;;;OAIG;;;;;;;;;;IAEH;;;;OAIG;;;;;;;;;;;AA/jBL,wBAikBE"} |
@@ -12,2 +12,3 @@ "use strict"; | ||
| const ALIASDEL_1 = __importDefault(require("./ALIASDEL")); | ||
| const ALIASLIST_1 = __importDefault(require("./ALIASLIST")); | ||
| const ALIASUPDATE_1 = __importDefault(require("./ALIASUPDATE")); | ||
@@ -130,2 +131,12 @@ const CONFIG_GET_1 = __importDefault(require("./CONFIG_GET")); | ||
| /** | ||
| * Lists all aliases associated with the given index. | ||
| * @param index - The index name whose aliases to list | ||
| */ | ||
| ALIASLIST: ALIASLIST_1.default, | ||
| /** | ||
| * Lists all aliases associated with the given index. | ||
| * @param index - The index name whose aliases to list | ||
| */ | ||
| aliasList: ALIASLIST_1.default, | ||
| /** | ||
| * Updates the index pointed to by an existing alias. | ||
@@ -132,0 +143,0 @@ * @param alias - The existing alias to update |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/commands/index.ts"],"names":[],"mappings":"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","sourcesContent":["import _LIST from './_LIST';\nimport ALTER from './ALTER';\nimport AGGREGATE_WITHCURSOR from './AGGREGATE_WITHCURSOR';\nimport AGGREGATE from './AGGREGATE';\nimport ALIASADD from './ALIASADD';\nimport ALIASDEL from './ALIASDEL';\nimport ALIASUPDATE from './ALIASUPDATE';\nimport CONFIG_GET from './CONFIG_GET';\nimport CONFIG_SET from './CONFIG_SET';\nimport CREATE from './CREATE';\nimport CURSOR_DEL from './CURSOR_DEL';\nimport CURSOR_READ from './CURSOR_READ';\nimport DICTADD from './DICTADD';\nimport DICTDEL from './DICTDEL';\nimport DICTDUMP from './DICTDUMP';\nimport DROPINDEX from './DROPINDEX';\nimport EXPLAIN from './EXPLAIN';\nimport EXPLAINCLI from './EXPLAINCLI';\nimport HYBRID from './HYBRID';\nimport INFO from './INFO';\nimport PROFILESEARCH from './PROFILE_SEARCH';\nimport PROFILEAGGREGATE from './PROFILE_AGGREGATE';\nimport SEARCH_NOCONTENT from './SEARCH_NOCONTENT';\nimport SEARCH from './SEARCH';\nimport SPELLCHECK from './SPELLCHECK';\nimport SUGADD from './SUGADD';\nimport SUGDEL from './SUGDEL';\nimport SUGGET_WITHPAYLOADS from './SUGGET_WITHPAYLOADS';\nimport SUGGET_WITHSCORES_WITHPAYLOADS from './SUGGET_WITHSCORES_WITHPAYLOADS';\nimport SUGGET_WITHSCORES from './SUGGET_WITHSCORES';\nimport SUGGET from './SUGGET';\nimport SUGLEN from './SUGLEN';\nimport SYNDUMP from './SYNDUMP';\nimport SYNUPDATE from './SYNUPDATE';\nimport TAGVALS from './TAGVALS';\n\nexport default {\n /**\n * Lists all existing indexes in the database.\n */\n _LIST,\n /**\n * Lists all existing indexes in the database.\n */\n _list: _LIST,\n /**\n * Alters an existing RediSearch index schema by adding new fields.\n * @param index - The index to alter\n * @param schema - The schema definition containing new fields to add\n */\n ALTER,\n /**\n * Alters an existing RediSearch index schema by adding new fields.\n * @param index - The index to alter\n * @param schema - The schema definition containing new fields to add\n */\n alter: ALTER,\n /**\n * Performs an aggregation with a cursor for retrieving large result sets.\n * @param index - Name of the index to query\n * @param query - The aggregation query\n * @param options - Optional parameters:\n * - All options supported by FT.AGGREGATE\n * - COUNT: Number of results to return per cursor fetch\n * - MAXIDLE: Maximum idle time for cursor in milliseconds\n */\n AGGREGATE_WITHCURSOR,\n /**\n * Performs an aggregation with a cursor for retrieving large result sets.\n * @param index - Name of the index to query\n * @param query - The aggregation query\n * @param options - Optional parameters:\n * - All options supported by FT.AGGREGATE\n * - COUNT: Number of results to return per cursor fetch\n * - MAXIDLE: Maximum idle time for cursor in milliseconds\n */\n aggregateWithCursor: AGGREGATE_WITHCURSOR,\n /**\n * Performs an aggregation query on a RediSearch index.\n * @param index - The index name to query\n * @param query - The text query to use as filter, use * to indicate no filtering\n * @param options - Optional parameters for aggregation:\n * - VERBATIM: disable stemming in query evaluation\n * - LOAD: specify fields to load from documents\n * - STEPS: sequence of aggregation steps (GROUPBY, SORTBY, APPLY, LIMIT, FILTER)\n * - PARAMS: bind parameters for query evaluation\n * - TIMEOUT: maximum time to run the query\n */\n AGGREGATE,\n /**\n * Performs an aggregation query on a RediSearch index.\n * @param index - The index name to query\n * @param query - The text query to use as filter, use * to indicate no filtering\n * @param options - Optional parameters for aggregation:\n * - VERBATIM: disable stemming in query evaluation\n * - LOAD: specify fields to load from documents\n * - STEPS: sequence of aggregation steps (GROUPBY, SORTBY, APPLY, LIMIT, FILTER)\n * - PARAMS: bind parameters for query evaluation\n * - TIMEOUT: maximum time to run the query\n */\n aggregate: AGGREGATE,\n /**\n * Adds an alias to a RediSearch index.\n * @param alias - The alias to add\n * @param index - The index name to alias\n */\n ALIASADD,\n /**\n * Adds an alias to a RediSearch index.\n * @param alias - The alias to add\n * @param index - The index name to alias\n */\n aliasAdd: ALIASADD,\n /**\n * Removes an existing alias from a RediSearch index.\n * @param alias - The alias to remove\n */\n ALIASDEL,\n /**\n * Removes an existing alias from a RediSearch index.\n * @param alias - The alias to remove\n */\n aliasDel: ALIASDEL,\n /**\n * Updates the index pointed to by an existing alias.\n * @param alias - The existing alias to update\n * @param index - The new index name that the alias should point to\n */\n ALIASUPDATE,\n /**\n * Updates the index pointed to by an existing alias.\n * @param alias - The existing alias to update\n * @param index - The new index name that the alias should point to\n */\n aliasUpdate: ALIASUPDATE,\n /**\n * Gets a RediSearch configuration option value.\n * @param option - The name of the configuration option to retrieve\n */\n CONFIG_GET,\n /**\n * Gets a RediSearch configuration option value.\n * @param option - The name of the configuration option to retrieve\n */\n configGet: CONFIG_GET,\n /**\n * Sets a RediSearch configuration option value.\n * @param property - The name of the configuration option to set\n * @param value - The value to set for the configuration option\n */\n CONFIG_SET,\n /**\n * Sets a RediSearch configuration option value.\n * @param property - The name of the configuration option to set\n * @param value - The value to set for the configuration option\n */\n configSet: CONFIG_SET,\n /**\n * Creates a new search index with the given schema and options.\n * @param index - Name of the index to create\n * @param schema - Index schema defining field names and types (TEXT, NUMERIC, GEO, TAG, VECTOR, GEOSHAPE).\n * Each field can be a single definition or an array to index the same field multiple times with different configurations.\n * @param options - Optional parameters:\n * - ON: Type of container to index (HASH or JSON)\n * - PREFIX: Prefixes for document keys to index\n * - FILTER: Expression that filters indexed documents\n * - LANGUAGE/LANGUAGE_FIELD: Default language for indexing\n * - SCORE/SCORE_FIELD: Document ranking parameters\n * - MAXTEXTFIELDS: Index all text fields without specifying them\n * - TEMPORARY: Create a temporary index\n * - NOOFFSETS/NOHL/NOFIELDS/NOFREQS: Index optimization flags\n * - STOPWORDS: Custom stopword list\n */\n CREATE,\n /**\n * Creates a new search index with the given schema and options.\n * @param index - Name of the index to create\n * @param schema - Index schema defining field names and types (TEXT, NUMERIC, GEO, TAG, VECTOR, GEOSHAPE).\n * Each field can be a single definition or an array to index the same field multiple times with different configurations.\n * @param options - Optional parameters:\n * - ON: Type of container to index (HASH or JSON)\n * - PREFIX: Prefixes for document keys to index\n * - FILTER: Expression that filters indexed documents\n * - LANGUAGE/LANGUAGE_FIELD: Default language for indexing\n * - SCORE/SCORE_FIELD: Document ranking parameters\n * - MAXTEXTFIELDS: Index all text fields without specifying them\n * - TEMPORARY: Create a temporary index\n * - NOOFFSETS/NOHL/NOFIELDS/NOFREQS: Index optimization flags\n * - STOPWORDS: Custom stopword list\n */\n create: CREATE,\n /**\n * Deletes a cursor from an index.\n * @param index - The index name that contains the cursor\n * @param cursorId - The cursor ID to delete\n */\n CURSOR_DEL,\n /**\n * Deletes a cursor from an index.\n * @param index - The index name that contains the cursor\n * @param cursorId - The cursor ID to delete\n */\n cursorDel: CURSOR_DEL,\n /**\n * Reads from an existing cursor to get more results from an index.\n * @param index - The index name that contains the cursor\n * @param cursor - The cursor ID to read from\n * @param options - Optional parameters:\n * - COUNT: Maximum number of results to return\n */\n CURSOR_READ,\n /**\n * Reads from an existing cursor to get more results from an index.\n * @param index - The index name that contains the cursor\n * @param cursor - The cursor ID to read from\n * @param options - Optional parameters:\n * - COUNT: Maximum number of results to return\n */\n cursorRead: CURSOR_READ,\n /**\n * Adds terms to a dictionary.\n * @param dictionary - Name of the dictionary to add terms to\n * @param term - One or more terms to add to the dictionary\n */\n DICTADD,\n /**\n * Adds terms to a dictionary.\n * @param dictionary - Name of the dictionary to add terms to\n * @param term - One or more terms to add to the dictionary\n */\n dictAdd: DICTADD,\n /**\n * Deletes terms from a dictionary.\n * @param dictionary - Name of the dictionary to remove terms from\n * @param term - One or more terms to delete from the dictionary\n */\n DICTDEL,\n /**\n * Deletes terms from a dictionary.\n * @param dictionary - Name of the dictionary to remove terms from\n * @param term - One or more terms to delete from the dictionary\n */\n dictDel: DICTDEL,\n /**\n * Returns all terms in a dictionary.\n * @param dictionary - Name of the dictionary to dump\n */\n DICTDUMP,\n /**\n * Returns all terms in a dictionary.\n * @param dictionary - Name of the dictionary to dump\n */\n dictDump: DICTDUMP,\n /**\n * Deletes an index and all associated documents.\n * @param index - Name of the index to delete\n * @param options - Optional parameters:\n * - DD: Also delete the indexed documents themselves\n */\n DROPINDEX,\n /**\n * Deletes an index and all associated documents.\n * @param index - Name of the index to delete\n * @param options - Optional parameters:\n * - DD: Also delete the indexed documents themselves\n */\n dropIndex: DROPINDEX,\n /**\n * Returns the execution plan for a complex query.\n * @param index - Name of the index to explain query against\n * @param query - The query string to explain\n * @param options - Optional parameters:\n * - PARAMS: Named parameters to use in the query\n * - DIALECT: Version of query dialect to use (defaults to 1)\n */\n EXPLAIN,\n /**\n * Returns the execution plan for a complex query.\n * @param index - Name of the index to explain query against\n * @param query - The query string to explain\n * @param options - Optional parameters:\n * - PARAMS: Named parameters to use in the query\n * - DIALECT: Version of query dialect to use (defaults to 1)\n */\n explain: EXPLAIN,\n /**\n * Returns the execution plan for a complex query in a more verbose format than FT.EXPLAIN.\n * @param index - Name of the index to explain query against\n * @param query - The query string to explain\n * @param options - Optional parameters:\n * - DIALECT: Version of query dialect to use (defaults to 1)\n */\n EXPLAINCLI,\n /**\n * Returns the execution plan for a complex query in a more verbose format than FT.EXPLAIN.\n * @param index - Name of the index to explain query against\n * @param query - The query string to explain\n * @param options - Optional parameters:\n * - DIALECT: Version of query dialect to use (defaults to 1)\n */\n explainCli: EXPLAINCLI,\n /**\n * Performs a hybrid search combining multiple search expressions.\n * Supports multiple SEARCH and VECTOR expressions with various fusion methods.\n *\n * @experimental\n * NOTE: FT.Hybrid is still in experimental state\n * It's behaviour and function signature may change\n *\n * @param index - The index name to search\n * @param options - Hybrid search options including:\n * - SEARCH: Text search expression with optional scoring\n * - VSIM: Vector similarity expression with KNN/RANGE methods\n * - COMBINE: Fusion method (RRF, LINEAR)\n * - Post-processing operations: LOAD, GROUPBY, APPLY, SORTBY, FILTER\n * - Tunable options: LIMIT, PARAMS, TIMEOUT\n */\n HYBRID,\n /**\n * Performs a hybrid search combining multiple search expressions.\n * Supports multiple SEARCH and VECTOR expressions with various fusion methods.\n *\n * @experimental\n * NOTE: FT.Hybrid is still in experimental state\n * It's behaviour and function signature may change\n *\n * @param index - The index name to search\n * @param options - Hybrid search options including:\n * - SEARCH: Text search expression with optional scoring\n * - VSIM: Vector similarity expression with KNN/RANGE methods\n * - COMBINE: Fusion method (RRF, LINEAR)\n * - Post-processing operations: LOAD, GROUPBY, APPLY, SORTBY, FILTER\n * - Tunable options: LIMIT, PARAMS, TIMEOUT\n */\n hybrid: HYBRID,\n /**\n * Returns information and statistics about an index.\n * @param index - Name of the index to get information about\n */\n INFO,\n /**\n * Returns information and statistics about an index.\n * @param index - Name of the index to get information about\n */\n info: INFO,\n /**\n * Profiles the execution of a search query for performance analysis.\n * @param index - Name of the index to profile query against\n * @param query - The search query to profile\n * @param options - Optional parameters:\n * - LIMITED: Collect limited timing information only\n * - All options supported by FT.SEARCH command\n */\n PROFILESEARCH,\n /**\n * Profiles the execution of a search query for performance analysis.\n * @param index - Name of the index to profile query against\n * @param query - The search query to profile\n * @param options - Optional parameters:\n * - LIMITED: Collect limited timing information only\n * - All options supported by FT.SEARCH command\n */\n profileSearch: PROFILESEARCH,\n /**\n * Profiles the execution of an aggregation query for performance analysis.\n * @param index - Name of the index to profile query against\n * @param query - The aggregation query to profile\n * @param options - Optional parameters:\n * - LIMITED: Collect limited timing information only\n * - All options supported by FT.AGGREGATE command\n */\n PROFILEAGGREGATE,\n /**\n * Profiles the execution of an aggregation query for performance analysis.\n * @param index - Name of the index to profile query against\n * @param query - The aggregation query to profile\n * @param options - Optional parameters:\n * - LIMITED: Collect limited timing information only\n * - All options supported by FT.AGGREGATE command\n */\n profileAggregate: PROFILEAGGREGATE,\n /**\n * Performs a search query but returns only document ids without their contents.\n * @param args - Same parameters as FT.SEARCH:\n * - parser: The command parser\n * - index: Name of the index to search\n * - query: The text query to search\n * - options: Optional search parameters\n */\n SEARCH_NOCONTENT,\n /**\n * Performs a search query but returns only document ids without their contents.\n * @param args - Same parameters as FT.SEARCH:\n * - parser: The command parser\n * - index: Name of the index to search\n * - query: The text query to search\n * - options: Optional search parameters\n */\n searchNoContent: SEARCH_NOCONTENT,\n /**\n * Searches a RediSearch index with the given query.\n * @param index - The index name to search\n * @param query - The text query to search. For syntax, see https://redis.io/docs/stack/search/reference/query_syntax\n * @param options - Optional search parameters including:\n * - VERBATIM: do not try to use stemming for query expansion\n * - NOSTOPWORDS: do not filter stopwords from the query\n * - INKEYS/INFIELDS: restrict the search to specific keys/fields\n * - RETURN: limit which fields are returned\n * - SUMMARIZE/HIGHLIGHT: create search result highlights\n * - LIMIT: pagination control\n * - SORTBY: sort results by a specific field\n * - PARAMS: bind parameters to the query\n */\n SEARCH,\n /**\n * Searches a RediSearch index with the given query.\n * @param index - The index name to search\n * @param query - The text query to search. For syntax, see https://redis.io/docs/stack/search/reference/query_syntax\n * @param options - Optional search parameters including:\n * - VERBATIM: do not try to use stemming for query expansion\n * - NOSTOPWORDS: do not filter stopwords from the query\n * - INKEYS/INFIELDS: restrict the search to specific keys/fields\n * - RETURN: limit which fields are returned\n * - SUMMARIZE/HIGHLIGHT: create search result highlights\n * - LIMIT: pagination control\n * - SORTBY: sort results by a specific field\n * - PARAMS: bind parameters to the query\n */\n search: SEARCH,\n /**\n * Performs spelling correction on a search query.\n * @param index - Name of the index to use for spelling corrections\n * @param query - The search query to check for spelling\n * @param options - Optional parameters:\n * - DISTANCE: Maximum Levenshtein distance for spelling suggestions\n * - TERMS: Custom dictionary terms to include/exclude\n * - DIALECT: Version of query dialect to use (defaults to 1)\n */\n SPELLCHECK,\n /**\n * Performs spelling correction on a search query.\n * @param index - Name of the index to use for spelling corrections\n * @param query - The search query to check for spelling\n * @param options - Optional parameters:\n * - DISTANCE: Maximum Levenshtein distance for spelling suggestions\n * - TERMS: Custom dictionary terms to include/exclude\n * - DIALECT: Version of query dialect to use (defaults to 1)\n */\n spellCheck: SPELLCHECK,\n /**\n * Adds a suggestion string to an auto-complete suggestion dictionary.\n * @param key - The suggestion dictionary key\n * @param string - The suggestion string to add\n * @param score - The suggestion score used for sorting\n * @param options - Optional parameters:\n * - INCR: If true, increment the existing entry's score\n * - PAYLOAD: Optional payload to associate with the suggestion\n */\n SUGADD,\n /**\n * Adds a suggestion string to an auto-complete suggestion dictionary.\n * @param key - The suggestion dictionary key\n * @param string - The suggestion string to add\n * @param score - The suggestion score used for sorting\n * @param options - Optional parameters:\n * - INCR: If true, increment the existing entry's score\n * - PAYLOAD: Optional payload to associate with the suggestion\n */\n sugAdd: SUGADD,\n /**\n * Deletes a string from a suggestion dictionary.\n * @param key - The suggestion dictionary key\n * @param string - The suggestion string to delete\n */\n SUGDEL,\n /**\n * Deletes a string from a suggestion dictionary.\n * @param key - The suggestion dictionary key\n * @param string - The suggestion string to delete\n */\n sugDel: SUGDEL,\n /**\n * Gets completion suggestions with their payloads from a suggestion dictionary.\n * @param args - Same parameters as FT.SUGGET:\n * - parser: The command parser\n * - key: The suggestion dictionary key\n * - prefix: The prefix to get completion suggestions for\n * - options: Optional parameters for fuzzy matching and max results\n */\n SUGGET_WITHPAYLOADS,\n /**\n * Gets completion suggestions with their payloads from a suggestion dictionary.\n * @param args - Same parameters as FT.SUGGET:\n * - parser: The command parser\n * - key: The suggestion dictionary key\n * - prefix: The prefix to get completion suggestions for\n * - options: Optional parameters for fuzzy matching and max results\n */\n sugGetWithPayloads: SUGGET_WITHPAYLOADS,\n /**\n * Gets completion suggestions with their scores and payloads from a suggestion dictionary.\n * @param args - Same parameters as FT.SUGGET:\n * - parser: The command parser\n * - key: The suggestion dictionary key\n * - prefix: The prefix to get completion suggestions for\n * - options: Optional parameters for fuzzy matching and max results\n */\n SUGGET_WITHSCORES_WITHPAYLOADS,\n /**\n * Gets completion suggestions with their scores and payloads from a suggestion dictionary.\n * @param args - Same parameters as FT.SUGGET:\n * - parser: The command parser\n * - key: The suggestion dictionary key\n * - prefix: The prefix to get completion suggestions for\n * - options: Optional parameters for fuzzy matching and max results\n */\n sugGetWithScoresWithPayloads: SUGGET_WITHSCORES_WITHPAYLOADS,\n /**\n * Gets completion suggestions with their scores from a suggestion dictionary.\n * @param args - Same parameters as FT.SUGGET:\n * - parser: The command parser\n * - key: The suggestion dictionary key\n * - prefix: The prefix to get completion suggestions for\n * - options: Optional parameters for fuzzy matching and max results\n */\n SUGGET_WITHSCORES,\n /**\n * Gets completion suggestions with their scores from a suggestion dictionary.\n * @param args - Same parameters as FT.SUGGET:\n * - parser: The command parser\n * - key: The suggestion dictionary key\n * - prefix: The prefix to get completion suggestions for\n * - options: Optional parameters for fuzzy matching and max results\n */\n sugGetWithScores: SUGGET_WITHSCORES,\n /**\n * Gets completion suggestions for a prefix from a suggestion dictionary.\n * @param key - The suggestion dictionary key\n * @param prefix - The prefix to get completion suggestions for\n * @param options - Optional parameters:\n * - FUZZY: Enable fuzzy prefix matching\n * - MAX: Maximum number of results to return\n */\n SUGGET,\n /**\n * Gets completion suggestions for a prefix from a suggestion dictionary.\n * @param key - The suggestion dictionary key\n * @param prefix - The prefix to get completion suggestions for\n * @param options - Optional parameters:\n * - FUZZY: Enable fuzzy prefix matching\n * - MAX: Maximum number of results to return\n */\n sugGet: SUGGET,\n /**\n * Gets the size of a suggestion dictionary.\n * @param key - The suggestion dictionary key\n */\n SUGLEN,\n /**\n * Gets the size of a suggestion dictionary.\n * @param key - The suggestion dictionary key\n */\n sugLen: SUGLEN,\n /**\n * Dumps the contents of a synonym group.\n * @param index - Name of the index that contains the synonym group\n */\n SYNDUMP,\n /**\n * Dumps the contents of a synonym group.\n * @param index - Name of the index that contains the synonym group\n */\n synDump: SYNDUMP,\n /**\n * Updates a synonym group with new terms.\n * @param index - Name of the index that contains the synonym group\n * @param groupId - ID of the synonym group to update\n * @param terms - One or more synonym terms to add to the group\n * @param options - Optional parameters:\n * - SKIPINITIALSCAN: Skip the initial scan for existing documents\n */\n SYNUPDATE,\n /**\n * Updates a synonym group with new terms.\n * @param index - Name of the index that contains the synonym group\n * @param groupId - ID of the synonym group to update\n * @param terms - One or more synonym terms to add to the group\n * @param options - Optional parameters:\n * - SKIPINITIALSCAN: Skip the initial scan for existing documents\n */\n synUpdate: SYNUPDATE,\n /**\n * Returns the distinct values in a TAG field.\n * @param index - Name of the index\n * @param fieldName - Name of the TAG field to get values from\n */\n TAGVALS,\n /**\n * Returns the distinct values in a TAG field.\n * @param index - Name of the index\n * @param fieldName - Name of the TAG field to get values from\n */\n tagVals: TAGVALS\n};\n"]} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/commands/index.ts"],"names":[],"mappings":"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","sourcesContent":["import _LIST from './_LIST';\nimport ALTER from './ALTER';\nimport AGGREGATE_WITHCURSOR from './AGGREGATE_WITHCURSOR';\nimport AGGREGATE from './AGGREGATE';\nimport ALIASADD from './ALIASADD';\nimport ALIASDEL from './ALIASDEL';\nimport ALIASLIST from './ALIASLIST';\nimport ALIASUPDATE from './ALIASUPDATE';\nimport CONFIG_GET from './CONFIG_GET';\nimport CONFIG_SET from './CONFIG_SET';\nimport CREATE from './CREATE';\nimport CURSOR_DEL from './CURSOR_DEL';\nimport CURSOR_READ from './CURSOR_READ';\nimport DICTADD from './DICTADD';\nimport DICTDEL from './DICTDEL';\nimport DICTDUMP from './DICTDUMP';\nimport DROPINDEX from './DROPINDEX';\nimport EXPLAIN from './EXPLAIN';\nimport EXPLAINCLI from './EXPLAINCLI';\nimport HYBRID from './HYBRID';\nimport INFO from './INFO';\nimport PROFILESEARCH from './PROFILE_SEARCH';\nimport PROFILEAGGREGATE from './PROFILE_AGGREGATE';\nimport SEARCH_NOCONTENT from './SEARCH_NOCONTENT';\nimport SEARCH from './SEARCH';\nimport SPELLCHECK from './SPELLCHECK';\nimport SUGADD from './SUGADD';\nimport SUGDEL from './SUGDEL';\nimport SUGGET_WITHPAYLOADS from './SUGGET_WITHPAYLOADS';\nimport SUGGET_WITHSCORES_WITHPAYLOADS from './SUGGET_WITHSCORES_WITHPAYLOADS';\nimport SUGGET_WITHSCORES from './SUGGET_WITHSCORES';\nimport SUGGET from './SUGGET';\nimport SUGLEN from './SUGLEN';\nimport SYNDUMP from './SYNDUMP';\nimport SYNUPDATE from './SYNUPDATE';\nimport TAGVALS from './TAGVALS';\n\nexport default {\n /**\n * Lists all existing indexes in the database.\n */\n _LIST,\n /**\n * Lists all existing indexes in the database.\n */\n _list: _LIST,\n /**\n * Alters an existing RediSearch index schema by adding new fields.\n * @param index - The index to alter\n * @param schema - The schema definition containing new fields to add\n */\n ALTER,\n /**\n * Alters an existing RediSearch index schema by adding new fields.\n * @param index - The index to alter\n * @param schema - The schema definition containing new fields to add\n */\n alter: ALTER,\n /**\n * Performs an aggregation with a cursor for retrieving large result sets.\n * @param index - Name of the index to query\n * @param query - The aggregation query\n * @param options - Optional parameters:\n * - All options supported by FT.AGGREGATE\n * - COUNT: Number of results to return per cursor fetch\n * - MAXIDLE: Maximum idle time for cursor in milliseconds\n */\n AGGREGATE_WITHCURSOR,\n /**\n * Performs an aggregation with a cursor for retrieving large result sets.\n * @param index - Name of the index to query\n * @param query - The aggregation query\n * @param options - Optional parameters:\n * - All options supported by FT.AGGREGATE\n * - COUNT: Number of results to return per cursor fetch\n * - MAXIDLE: Maximum idle time for cursor in milliseconds\n */\n aggregateWithCursor: AGGREGATE_WITHCURSOR,\n /**\n * Performs an aggregation query on a RediSearch index.\n * @param index - The index name to query\n * @param query - The text query to use as filter, use * to indicate no filtering\n * @param options - Optional parameters for aggregation:\n * - VERBATIM: disable stemming in query evaluation\n * - LOAD: specify fields to load from documents\n * - STEPS: sequence of aggregation steps (GROUPBY, SORTBY, APPLY, LIMIT, FILTER)\n * - PARAMS: bind parameters for query evaluation\n * - TIMEOUT: maximum time to run the query\n */\n AGGREGATE,\n /**\n * Performs an aggregation query on a RediSearch index.\n * @param index - The index name to query\n * @param query - The text query to use as filter, use * to indicate no filtering\n * @param options - Optional parameters for aggregation:\n * - VERBATIM: disable stemming in query evaluation\n * - LOAD: specify fields to load from documents\n * - STEPS: sequence of aggregation steps (GROUPBY, SORTBY, APPLY, LIMIT, FILTER)\n * - PARAMS: bind parameters for query evaluation\n * - TIMEOUT: maximum time to run the query\n */\n aggregate: AGGREGATE,\n /**\n * Adds an alias to a RediSearch index.\n * @param alias - The alias to add\n * @param index - The index name to alias\n */\n ALIASADD,\n /**\n * Adds an alias to a RediSearch index.\n * @param alias - The alias to add\n * @param index - The index name to alias\n */\n aliasAdd: ALIASADD,\n /**\n * Removes an existing alias from a RediSearch index.\n * @param alias - The alias to remove\n */\n ALIASDEL,\n /**\n * Removes an existing alias from a RediSearch index.\n * @param alias - The alias to remove\n */\n aliasDel: ALIASDEL,\n /**\n * Lists all aliases associated with the given index.\n * @param index - The index name whose aliases to list\n */\n ALIASLIST,\n /**\n * Lists all aliases associated with the given index.\n * @param index - The index name whose aliases to list\n */\n aliasList: ALIASLIST,\n /**\n * Updates the index pointed to by an existing alias.\n * @param alias - The existing alias to update\n * @param index - The new index name that the alias should point to\n */\n ALIASUPDATE,\n /**\n * Updates the index pointed to by an existing alias.\n * @param alias - The existing alias to update\n * @param index - The new index name that the alias should point to\n */\n aliasUpdate: ALIASUPDATE,\n /**\n * Gets a RediSearch configuration option value.\n * @param option - The name of the configuration option to retrieve\n */\n CONFIG_GET,\n /**\n * Gets a RediSearch configuration option value.\n * @param option - The name of the configuration option to retrieve\n */\n configGet: CONFIG_GET,\n /**\n * Sets a RediSearch configuration option value.\n * @param property - The name of the configuration option to set\n * @param value - The value to set for the configuration option\n */\n CONFIG_SET,\n /**\n * Sets a RediSearch configuration option value.\n * @param property - The name of the configuration option to set\n * @param value - The value to set for the configuration option\n */\n configSet: CONFIG_SET,\n /**\n * Creates a new search index with the given schema and options.\n * @param index - Name of the index to create\n * @param schema - Index schema defining field names and types (TEXT, NUMERIC, GEO, TAG, VECTOR, GEOSHAPE).\n * Each field can be a single definition or an array to index the same field multiple times with different configurations.\n * @param options - Optional parameters:\n * - ON: Type of container to index (HASH or JSON)\n * - PREFIX: Prefixes for document keys to index\n * - FILTER: Expression that filters indexed documents\n * - LANGUAGE/LANGUAGE_FIELD: Default language for indexing\n * - SCORE/SCORE_FIELD: Document ranking parameters\n * - MAXTEXTFIELDS: Index all text fields without specifying them\n * - TEMPORARY: Create a temporary index\n * - NOOFFSETS/NOHL/NOFIELDS/NOFREQS: Index optimization flags\n * - STOPWORDS: Custom stopword list\n */\n CREATE,\n /**\n * Creates a new search index with the given schema and options.\n * @param index - Name of the index to create\n * @param schema - Index schema defining field names and types (TEXT, NUMERIC, GEO, TAG, VECTOR, GEOSHAPE).\n * Each field can be a single definition or an array to index the same field multiple times with different configurations.\n * @param options - Optional parameters:\n * - ON: Type of container to index (HASH or JSON)\n * - PREFIX: Prefixes for document keys to index\n * - FILTER: Expression that filters indexed documents\n * - LANGUAGE/LANGUAGE_FIELD: Default language for indexing\n * - SCORE/SCORE_FIELD: Document ranking parameters\n * - MAXTEXTFIELDS: Index all text fields without specifying them\n * - TEMPORARY: Create a temporary index\n * - NOOFFSETS/NOHL/NOFIELDS/NOFREQS: Index optimization flags\n * - STOPWORDS: Custom stopword list\n */\n create: CREATE,\n /**\n * Deletes a cursor from an index.\n * @param index - The index name that contains the cursor\n * @param cursorId - The cursor ID to delete\n */\n CURSOR_DEL,\n /**\n * Deletes a cursor from an index.\n * @param index - The index name that contains the cursor\n * @param cursorId - The cursor ID to delete\n */\n cursorDel: CURSOR_DEL,\n /**\n * Reads from an existing cursor to get more results from an index.\n * @param index - The index name that contains the cursor\n * @param cursor - The cursor ID to read from\n * @param options - Optional parameters:\n * - COUNT: Maximum number of results to return\n */\n CURSOR_READ,\n /**\n * Reads from an existing cursor to get more results from an index.\n * @param index - The index name that contains the cursor\n * @param cursor - The cursor ID to read from\n * @param options - Optional parameters:\n * - COUNT: Maximum number of results to return\n */\n cursorRead: CURSOR_READ,\n /**\n * Adds terms to a dictionary.\n * @param dictionary - Name of the dictionary to add terms to\n * @param term - One or more terms to add to the dictionary\n */\n DICTADD,\n /**\n * Adds terms to a dictionary.\n * @param dictionary - Name of the dictionary to add terms to\n * @param term - One or more terms to add to the dictionary\n */\n dictAdd: DICTADD,\n /**\n * Deletes terms from a dictionary.\n * @param dictionary - Name of the dictionary to remove terms from\n * @param term - One or more terms to delete from the dictionary\n */\n DICTDEL,\n /**\n * Deletes terms from a dictionary.\n * @param dictionary - Name of the dictionary to remove terms from\n * @param term - One or more terms to delete from the dictionary\n */\n dictDel: DICTDEL,\n /**\n * Returns all terms in a dictionary.\n * @param dictionary - Name of the dictionary to dump\n */\n DICTDUMP,\n /**\n * Returns all terms in a dictionary.\n * @param dictionary - Name of the dictionary to dump\n */\n dictDump: DICTDUMP,\n /**\n * Deletes an index and all associated documents.\n * @param index - Name of the index to delete\n * @param options - Optional parameters:\n * - DD: Also delete the indexed documents themselves\n */\n DROPINDEX,\n /**\n * Deletes an index and all associated documents.\n * @param index - Name of the index to delete\n * @param options - Optional parameters:\n * - DD: Also delete the indexed documents themselves\n */\n dropIndex: DROPINDEX,\n /**\n * Returns the execution plan for a complex query.\n * @param index - Name of the index to explain query against\n * @param query - The query string to explain\n * @param options - Optional parameters:\n * - PARAMS: Named parameters to use in the query\n * - DIALECT: Version of query dialect to use (defaults to 1)\n */\n EXPLAIN,\n /**\n * Returns the execution plan for a complex query.\n * @param index - Name of the index to explain query against\n * @param query - The query string to explain\n * @param options - Optional parameters:\n * - PARAMS: Named parameters to use in the query\n * - DIALECT: Version of query dialect to use (defaults to 1)\n */\n explain: EXPLAIN,\n /**\n * Returns the execution plan for a complex query in a more verbose format than FT.EXPLAIN.\n * @param index - Name of the index to explain query against\n * @param query - The query string to explain\n * @param options - Optional parameters:\n * - DIALECT: Version of query dialect to use (defaults to 1)\n */\n EXPLAINCLI,\n /**\n * Returns the execution plan for a complex query in a more verbose format than FT.EXPLAIN.\n * @param index - Name of the index to explain query against\n * @param query - The query string to explain\n * @param options - Optional parameters:\n * - DIALECT: Version of query dialect to use (defaults to 1)\n */\n explainCli: EXPLAINCLI,\n /**\n * Performs a hybrid search combining multiple search expressions.\n * Supports multiple SEARCH and VECTOR expressions with various fusion methods.\n *\n * @experimental\n * NOTE: FT.Hybrid is still in experimental state\n * It's behaviour and function signature may change\n *\n * @param index - The index name to search\n * @param options - Hybrid search options including:\n * - SEARCH: Text search expression with optional scoring\n * - VSIM: Vector similarity expression with KNN/RANGE methods\n * - COMBINE: Fusion method (RRF, LINEAR)\n * - Post-processing operations: LOAD, GROUPBY, APPLY, SORTBY, FILTER\n * - Tunable options: LIMIT, PARAMS, TIMEOUT\n */\n HYBRID,\n /**\n * Performs a hybrid search combining multiple search expressions.\n * Supports multiple SEARCH and VECTOR expressions with various fusion methods.\n *\n * @experimental\n * NOTE: FT.Hybrid is still in experimental state\n * It's behaviour and function signature may change\n *\n * @param index - The index name to search\n * @param options - Hybrid search options including:\n * - SEARCH: Text search expression with optional scoring\n * - VSIM: Vector similarity expression with KNN/RANGE methods\n * - COMBINE: Fusion method (RRF, LINEAR)\n * - Post-processing operations: LOAD, GROUPBY, APPLY, SORTBY, FILTER\n * - Tunable options: LIMIT, PARAMS, TIMEOUT\n */\n hybrid: HYBRID,\n /**\n * Returns information and statistics about an index.\n * @param index - Name of the index to get information about\n */\n INFO,\n /**\n * Returns information and statistics about an index.\n * @param index - Name of the index to get information about\n */\n info: INFO,\n /**\n * Profiles the execution of a search query for performance analysis.\n * @param index - Name of the index to profile query against\n * @param query - The search query to profile\n * @param options - Optional parameters:\n * - LIMITED: Collect limited timing information only\n * - All options supported by FT.SEARCH command\n */\n PROFILESEARCH,\n /**\n * Profiles the execution of a search query for performance analysis.\n * @param index - Name of the index to profile query against\n * @param query - The search query to profile\n * @param options - Optional parameters:\n * - LIMITED: Collect limited timing information only\n * - All options supported by FT.SEARCH command\n */\n profileSearch: PROFILESEARCH,\n /**\n * Profiles the execution of an aggregation query for performance analysis.\n * @param index - Name of the index to profile query against\n * @param query - The aggregation query to profile\n * @param options - Optional parameters:\n * - LIMITED: Collect limited timing information only\n * - All options supported by FT.AGGREGATE command\n */\n PROFILEAGGREGATE,\n /**\n * Profiles the execution of an aggregation query for performance analysis.\n * @param index - Name of the index to profile query against\n * @param query - The aggregation query to profile\n * @param options - Optional parameters:\n * - LIMITED: Collect limited timing information only\n * - All options supported by FT.AGGREGATE command\n */\n profileAggregate: PROFILEAGGREGATE,\n /**\n * Performs a search query but returns only document ids without their contents.\n * @param args - Same parameters as FT.SEARCH:\n * - parser: The command parser\n * - index: Name of the index to search\n * - query: The text query to search\n * - options: Optional search parameters\n */\n SEARCH_NOCONTENT,\n /**\n * Performs a search query but returns only document ids without their contents.\n * @param args - Same parameters as FT.SEARCH:\n * - parser: The command parser\n * - index: Name of the index to search\n * - query: The text query to search\n * - options: Optional search parameters\n */\n searchNoContent: SEARCH_NOCONTENT,\n /**\n * Searches a RediSearch index with the given query.\n * @param index - The index name to search\n * @param query - The text query to search. For syntax, see https://redis.io/docs/stack/search/reference/query_syntax\n * @param options - Optional search parameters including:\n * - VERBATIM: do not try to use stemming for query expansion\n * - NOSTOPWORDS: do not filter stopwords from the query\n * - INKEYS/INFIELDS: restrict the search to specific keys/fields\n * - RETURN: limit which fields are returned\n * - SUMMARIZE/HIGHLIGHT: create search result highlights\n * - LIMIT: pagination control\n * - SORTBY: sort results by a specific field\n * - PARAMS: bind parameters to the query\n */\n SEARCH,\n /**\n * Searches a RediSearch index with the given query.\n * @param index - The index name to search\n * @param query - The text query to search. For syntax, see https://redis.io/docs/stack/search/reference/query_syntax\n * @param options - Optional search parameters including:\n * - VERBATIM: do not try to use stemming for query expansion\n * - NOSTOPWORDS: do not filter stopwords from the query\n * - INKEYS/INFIELDS: restrict the search to specific keys/fields\n * - RETURN: limit which fields are returned\n * - SUMMARIZE/HIGHLIGHT: create search result highlights\n * - LIMIT: pagination control\n * - SORTBY: sort results by a specific field\n * - PARAMS: bind parameters to the query\n */\n search: SEARCH,\n /**\n * Performs spelling correction on a search query.\n * @param index - Name of the index to use for spelling corrections\n * @param query - The search query to check for spelling\n * @param options - Optional parameters:\n * - DISTANCE: Maximum Levenshtein distance for spelling suggestions\n * - TERMS: Custom dictionary terms to include/exclude\n * - DIALECT: Version of query dialect to use (defaults to 1)\n */\n SPELLCHECK,\n /**\n * Performs spelling correction on a search query.\n * @param index - Name of the index to use for spelling corrections\n * @param query - The search query to check for spelling\n * @param options - Optional parameters:\n * - DISTANCE: Maximum Levenshtein distance for spelling suggestions\n * - TERMS: Custom dictionary terms to include/exclude\n * - DIALECT: Version of query dialect to use (defaults to 1)\n */\n spellCheck: SPELLCHECK,\n /**\n * Adds a suggestion string to an auto-complete suggestion dictionary.\n * @param key - The suggestion dictionary key\n * @param string - The suggestion string to add\n * @param score - The suggestion score used for sorting\n * @param options - Optional parameters:\n * - INCR: If true, increment the existing entry's score\n * - PAYLOAD: Optional payload to associate with the suggestion\n */\n SUGADD,\n /**\n * Adds a suggestion string to an auto-complete suggestion dictionary.\n * @param key - The suggestion dictionary key\n * @param string - The suggestion string to add\n * @param score - The suggestion score used for sorting\n * @param options - Optional parameters:\n * - INCR: If true, increment the existing entry's score\n * - PAYLOAD: Optional payload to associate with the suggestion\n */\n sugAdd: SUGADD,\n /**\n * Deletes a string from a suggestion dictionary.\n * @param key - The suggestion dictionary key\n * @param string - The suggestion string to delete\n */\n SUGDEL,\n /**\n * Deletes a string from a suggestion dictionary.\n * @param key - The suggestion dictionary key\n * @param string - The suggestion string to delete\n */\n sugDel: SUGDEL,\n /**\n * Gets completion suggestions with their payloads from a suggestion dictionary.\n * @param args - Same parameters as FT.SUGGET:\n * - parser: The command parser\n * - key: The suggestion dictionary key\n * - prefix: The prefix to get completion suggestions for\n * - options: Optional parameters for fuzzy matching and max results\n */\n SUGGET_WITHPAYLOADS,\n /**\n * Gets completion suggestions with their payloads from a suggestion dictionary.\n * @param args - Same parameters as FT.SUGGET:\n * - parser: The command parser\n * - key: The suggestion dictionary key\n * - prefix: The prefix to get completion suggestions for\n * - options: Optional parameters for fuzzy matching and max results\n */\n sugGetWithPayloads: SUGGET_WITHPAYLOADS,\n /**\n * Gets completion suggestions with their scores and payloads from a suggestion dictionary.\n * @param args - Same parameters as FT.SUGGET:\n * - parser: The command parser\n * - key: The suggestion dictionary key\n * - prefix: The prefix to get completion suggestions for\n * - options: Optional parameters for fuzzy matching and max results\n */\n SUGGET_WITHSCORES_WITHPAYLOADS,\n /**\n * Gets completion suggestions with their scores and payloads from a suggestion dictionary.\n * @param args - Same parameters as FT.SUGGET:\n * - parser: The command parser\n * - key: The suggestion dictionary key\n * - prefix: The prefix to get completion suggestions for\n * - options: Optional parameters for fuzzy matching and max results\n */\n sugGetWithScoresWithPayloads: SUGGET_WITHSCORES_WITHPAYLOADS,\n /**\n * Gets completion suggestions with their scores from a suggestion dictionary.\n * @param args - Same parameters as FT.SUGGET:\n * - parser: The command parser\n * - key: The suggestion dictionary key\n * - prefix: The prefix to get completion suggestions for\n * - options: Optional parameters for fuzzy matching and max results\n */\n SUGGET_WITHSCORES,\n /**\n * Gets completion suggestions with their scores from a suggestion dictionary.\n * @param args - Same parameters as FT.SUGGET:\n * - parser: The command parser\n * - key: The suggestion dictionary key\n * - prefix: The prefix to get completion suggestions for\n * - options: Optional parameters for fuzzy matching and max results\n */\n sugGetWithScores: SUGGET_WITHSCORES,\n /**\n * Gets completion suggestions for a prefix from a suggestion dictionary.\n * @param key - The suggestion dictionary key\n * @param prefix - The prefix to get completion suggestions for\n * @param options - Optional parameters:\n * - FUZZY: Enable fuzzy prefix matching\n * - MAX: Maximum number of results to return\n */\n SUGGET,\n /**\n * Gets completion suggestions for a prefix from a suggestion dictionary.\n * @param key - The suggestion dictionary key\n * @param prefix - The prefix to get completion suggestions for\n * @param options - Optional parameters:\n * - FUZZY: Enable fuzzy prefix matching\n * - MAX: Maximum number of results to return\n */\n sugGet: SUGGET,\n /**\n * Gets the size of a suggestion dictionary.\n * @param key - The suggestion dictionary key\n */\n SUGLEN,\n /**\n * Gets the size of a suggestion dictionary.\n * @param key - The suggestion dictionary key\n */\n sugLen: SUGLEN,\n /**\n * Dumps the contents of a synonym group.\n * @param index - Name of the index that contains the synonym group\n */\n SYNDUMP,\n /**\n * Dumps the contents of a synonym group.\n * @param index - Name of the index that contains the synonym group\n */\n synDump: SYNDUMP,\n /**\n * Updates a synonym group with new terms.\n * @param index - Name of the index that contains the synonym group\n * @param groupId - ID of the synonym group to update\n * @param terms - One or more synonym terms to add to the group\n * @param options - Optional parameters:\n * - SKIPINITIALSCAN: Skip the initial scan for existing documents\n */\n SYNUPDATE,\n /**\n * Updates a synonym group with new terms.\n * @param index - Name of the index that contains the synonym group\n * @param groupId - ID of the synonym group to update\n * @param terms - One or more synonym terms to add to the group\n * @param options - Optional parameters:\n * - SKIPINITIALSCAN: Skip the initial scan for existing documents\n */\n synUpdate: SYNUPDATE,\n /**\n * Returns the distinct values in a TAG field.\n * @param index - Name of the index\n * @param fieldName - Name of the TAG field to get values from\n */\n TAGVALS,\n /**\n * Returns the distinct values in a TAG field.\n * @param index - Name of the index\n * @param fieldName - Name of the TAG field to get values from\n */\n tagVals: TAGVALS\n};\n"]} |
@@ -5,2 +5,9 @@ import { isPlainObject, mapLikeEntries, mapLikeValues, mapLikeToObject, mapLikeToFlatArray, getMapValue } from '@redis/client/dist/lib/commands/reply-utils'; | ||
| export declare function parseDocumentValue(value: unknown): Record<string, unknown>; | ||
| /** | ||
| * Extracts the `warning` field emitted by FT.SEARCH / FT.AGGREGATE / FT.HYBRID | ||
| * alongside partial results when a query hits its timeout under a `return` / | ||
| * `return-strict` on-timeout policy. Returns an empty array when absent (e.g. | ||
| * RESP2 replies for FT.SEARCH / FT.AGGREGATE, which never carry warnings). | ||
| */ | ||
| export declare function parseWarnings(replyMap: Record<string, unknown>): Array<string>; | ||
| export declare function normalizeProfileReply(profile: unknown): unknown; | ||
@@ -7,0 +14,0 @@ export declare function parseSearchResultRow(rawRow: unknown): { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"reply-transformers.d.ts","sourceRoot":"","sources":["../../../lib/commands/reply-transformers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,cAAc,EACd,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,WAAW,EACZ,MAAM,6CAA6C,CAAC;AAErD,OAAO,EACL,aAAa,EACb,cAAc,EACd,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,WAAW,EACZ,CAAC;AAEF,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAatF;AAkBD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQ1E;AAkBD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAE/D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG;IACrD,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,CAWA;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAuBhF"} | ||
| {"version":3,"file":"reply-transformers.d.ts","sourceRoot":"","sources":["../../../lib/commands/reply-transformers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,cAAc,EACd,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,WAAW,EACZ,MAAM,6CAA6C,CAAC;AAErD,OAAO,EACL,aAAa,EACb,cAAc,EACd,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,WAAW,EACZ,CAAC;AAEF,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAatF;AAkBD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQ1E;AAeD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAG9E;AAkBD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAE/D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG;IACrD,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,CAWA;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAuBhF"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.parseAggregateResultRow = exports.parseSearchResultRow = exports.normalizeProfileReply = exports.parseDocumentValue = exports.toCompatObject = exports.getMapValue = exports.mapLikeToFlatArray = exports.mapLikeToObject = exports.mapLikeValues = exports.mapLikeEntries = exports.isPlainObject = void 0; | ||
| exports.parseAggregateResultRow = exports.parseSearchResultRow = exports.normalizeProfileReply = exports.parseWarnings = exports.parseDocumentValue = exports.toCompatObject = exports.getMapValue = exports.mapLikeToFlatArray = exports.mapLikeToObject = exports.mapLikeValues = exports.mapLikeEntries = exports.isPlainObject = void 0; | ||
| const reply_utils_1 = require("@redis/client/dist/lib/commands/reply-utils"); | ||
@@ -47,2 +47,29 @@ Object.defineProperty(exports, "isPlainObject", { enumerable: true, get: function () { return reply_utils_1.isPlainObject; } }); | ||
| exports.parseDocumentValue = parseDocumentValue; | ||
| function toWarningString(warning) { | ||
| if (typeof warning === 'string') | ||
| return warning; | ||
| if (warning instanceof Buffer) | ||
| return warning.toString(); | ||
| if (warning === null || warning === undefined) | ||
| return ''; | ||
| // Anything else (Map/Array/plain object) would collapse to "[object Object]" | ||
| // under a naive toString — JSON-serialize instead so the caller can read it. | ||
| try { | ||
| return JSON.stringify(warning); | ||
| } | ||
| catch { | ||
| return String(warning); | ||
| } | ||
| } | ||
| /** | ||
| * Extracts the `warning` field emitted by FT.SEARCH / FT.AGGREGATE / FT.HYBRID | ||
| * alongside partial results when a query hits its timeout under a `return` / | ||
| * `return-strict` on-timeout policy. Returns an empty array when absent (e.g. | ||
| * RESP2 replies for FT.SEARCH / FT.AGGREGATE, which never carry warnings). | ||
| */ | ||
| function parseWarnings(replyMap) { | ||
| const warnings = (0, reply_utils_1.mapLikeValues)((0, reply_utils_1.getMapValue)(replyMap, ['warning', 'warnings']) ?? []); | ||
| return warnings.map(toWarningString); | ||
| } | ||
| exports.parseWarnings = parseWarnings; | ||
| function normalizeProfileValue(value) { | ||
@@ -49,0 +76,0 @@ if (Array.isArray(value)) { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"reply-transformers.js","sourceRoot":"","sources":["../../../lib/commands/reply-transformers.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n isPlainObject,\n mapLikeEntries,\n mapLikeValues,\n mapLikeToObject,\n mapLikeToFlatArray,\n getMapValue\n} from '@redis/client/dist/lib/commands/reply-utils';\n\nexport {\n isPlainObject,\n mapLikeEntries,\n mapLikeValues,\n mapLikeToObject,\n mapLikeToFlatArray,\n getMapValue\n};\n\nexport function toCompatObject(value: Record<string, unknown>): Record<string, unknown> {\n const descriptors: PropertyDescriptorMap = {};\n\n for (const [key, entryValue] of Object.entries(value)) {\n descriptors[key] = {\n value: entryValue,\n configurable: true,\n enumerable: true,\n writable: true\n };\n }\n\n return Object.defineProperties({}, descriptors);\n}\n\nfunction assignDocumentField(target: Record<string, unknown>, key: string, value: unknown): void {\n if (key === '$') {\n const json = (value as { toString?: () => string })?.toString?.() ?? value;\n if (typeof json === 'string') {\n try {\n Object.assign(target, JSON.parse(json));\n return;\n } catch {\n // Fallback to setting the raw value below.\n }\n }\n }\n\n target[key] = value;\n}\n\nexport function parseDocumentValue(value: unknown): Record<string, unknown> {\n const document: Record<string, unknown> = {};\n\n for (const [key, entryValue] of mapLikeEntries(value)) {\n assignDocumentField(document, key, entryValue);\n }\n\n return document;\n}\n\nfunction normalizeProfileValue(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map(normalizeProfileValue);\n }\n\n if (value instanceof Map || isPlainObject(value)) {\n const normalized: Array<unknown> = [];\n for (const [key, entryValue] of mapLikeEntries(value)) {\n normalized.push(key, normalizeProfileValue(entryValue));\n }\n return normalized;\n }\n\n return value;\n}\n\nexport function normalizeProfileReply(profile: unknown): unknown {\n return normalizeProfileValue(profile);\n}\n\nexport function parseSearchResultRow(rawRow: unknown): {\n id: unknown;\n value: Record<string, unknown>;\n} {\n const row = mapLikeToObject(rawRow);\n\n const value: Record<string, unknown> = {};\n Object.assign(value, parseDocumentValue(getMapValue(row, ['values'])));\n Object.assign(value, parseDocumentValue(getMapValue(row, ['extra_attributes', 'extraAttributes'])));\n\n return {\n id: getMapValue(row, ['id', 'doc_id']),\n value: toCompatObject(value)\n };\n}\n\nexport function parseAggregateResultRow(rawRow: unknown): Record<string, unknown> {\n const row = mapLikeToObject(rawRow);\n\n const result: Record<string, unknown> = {};\n Object.assign(result, parseDocumentValue(getMapValue(row, ['values'])));\n Object.assign(result, parseDocumentValue(getMapValue(row, ['extra_attributes', 'extraAttributes'])));\n\n for (const [key, value] of Object.entries(row)) {\n if (\n key === 'id' ||\n key === 'values' ||\n key.toLowerCase() === 'extra_attributes' ||\n key === 'extraAttributes'\n ) {\n continue;\n }\n\n if (!Object.hasOwn(result, key)) {\n result[key] = value;\n }\n }\n\n return toCompatObject(result);\n}\n"]} | ||
| {"version":3,"file":"reply-transformers.js","sourceRoot":"","sources":["../../../lib/commands/reply-transformers.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n isPlainObject,\n mapLikeEntries,\n mapLikeValues,\n mapLikeToObject,\n mapLikeToFlatArray,\n getMapValue\n} from '@redis/client/dist/lib/commands/reply-utils';\n\nexport {\n isPlainObject,\n mapLikeEntries,\n mapLikeValues,\n mapLikeToObject,\n mapLikeToFlatArray,\n getMapValue\n};\n\nexport function toCompatObject(value: Record<string, unknown>): Record<string, unknown> {\n const descriptors: PropertyDescriptorMap = {};\n\n for (const [key, entryValue] of Object.entries(value)) {\n descriptors[key] = {\n value: entryValue,\n configurable: true,\n enumerable: true,\n writable: true\n };\n }\n\n return Object.defineProperties({}, descriptors);\n}\n\nfunction assignDocumentField(target: Record<string, unknown>, key: string, value: unknown): void {\n if (key === '$') {\n const json = (value as { toString?: () => string })?.toString?.() ?? value;\n if (typeof json === 'string') {\n try {\n Object.assign(target, JSON.parse(json));\n return;\n } catch {\n // Fallback to setting the raw value below.\n }\n }\n }\n\n target[key] = value;\n}\n\nexport function parseDocumentValue(value: unknown): Record<string, unknown> {\n const document: Record<string, unknown> = {};\n\n for (const [key, entryValue] of mapLikeEntries(value)) {\n assignDocumentField(document, key, entryValue);\n }\n\n return document;\n}\n\nfunction toWarningString(warning: unknown): string {\n if (typeof warning === 'string') return warning;\n if (warning instanceof Buffer) return warning.toString();\n if (warning === null || warning === undefined) return '';\n // Anything else (Map/Array/plain object) would collapse to \"[object Object]\"\n // under a naive toString — JSON-serialize instead so the caller can read it.\n try {\n return JSON.stringify(warning);\n } catch {\n return String(warning);\n }\n}\n\n/**\n * Extracts the `warning` field emitted by FT.SEARCH / FT.AGGREGATE / FT.HYBRID\n * alongside partial results when a query hits its timeout under a `return` /\n * `return-strict` on-timeout policy. Returns an empty array when absent (e.g.\n * RESP2 replies for FT.SEARCH / FT.AGGREGATE, which never carry warnings).\n */\nexport function parseWarnings(replyMap: Record<string, unknown>): Array<string> {\n const warnings = mapLikeValues(getMapValue(replyMap, ['warning', 'warnings']) ?? []);\n return warnings.map(toWarningString);\n}\n\nfunction normalizeProfileValue(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map(normalizeProfileValue);\n }\n\n if (value instanceof Map || isPlainObject(value)) {\n const normalized: Array<unknown> = [];\n for (const [key, entryValue] of mapLikeEntries(value)) {\n normalized.push(key, normalizeProfileValue(entryValue));\n }\n return normalized;\n }\n\n return value;\n}\n\nexport function normalizeProfileReply(profile: unknown): unknown {\n return normalizeProfileValue(profile);\n}\n\nexport function parseSearchResultRow(rawRow: unknown): {\n id: unknown;\n value: Record<string, unknown>;\n} {\n const row = mapLikeToObject(rawRow);\n\n const value: Record<string, unknown> = {};\n Object.assign(value, parseDocumentValue(getMapValue(row, ['values'])));\n Object.assign(value, parseDocumentValue(getMapValue(row, ['extra_attributes', 'extraAttributes'])));\n\n return {\n id: getMapValue(row, ['id', 'doc_id']),\n value: toCompatObject(value)\n };\n}\n\nexport function parseAggregateResultRow(rawRow: unknown): Record<string, unknown> {\n const row = mapLikeToObject(rawRow);\n\n const result: Record<string, unknown> = {};\n Object.assign(result, parseDocumentValue(getMapValue(row, ['values'])));\n Object.assign(result, parseDocumentValue(getMapValue(row, ['extra_attributes', 'extraAttributes'])));\n\n for (const [key, value] of Object.entries(row)) {\n if (\n key === 'id' ||\n key === 'values' ||\n key.toLowerCase() === 'extra_attributes' ||\n key === 'extraAttributes'\n ) {\n continue;\n }\n\n if (!Object.hasOwn(result, key)) {\n result[key] = value;\n }\n }\n\n return toCompatObject(result);\n}\n"]} |
@@ -16,3 +16,9 @@ import { ReplyUnion, TypeMapping } from '@redis/client/dist/lib/RESP/types'; | ||
| documents: Array<string>; | ||
| /** | ||
| * Warnings returned alongside partial results (e.g. on query timeout under a | ||
| * `return` / `return-strict` on-timeout policy). Only populated on RESP3; | ||
| * always empty on RESP2. | ||
| */ | ||
| warnings: Array<string>; | ||
| } | ||
| //# sourceMappingURL=SEARCH_NOCONTENT.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"SEARCH_NOCONTENT.d.ts","sourceRoot":"","sources":["../../../lib/commands/SEARCH_NOCONTENT.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,UAAU,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AACrF,OAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;;;;;;+CAUlB,oBAAoB;4BAOvC,UAAU,aAEN,GAAG,gBACA,WAAW,KACxB,oBAAoB;;;AAnB3B,wBAiC6B;AAE7B,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC1B"} | ||
| {"version":3,"file":"SEARCH_NOCONTENT.d.ts","sourceRoot":"","sources":["../../../lib/commands/SEARCH_NOCONTENT.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,UAAU,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AACrF,OAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;;;;;;+CAUlB,oBAAoB;4BASvC,UAAU,aAEN,GAAG,gBACA,WAAW,KACxB,oBAAoB;;;AArB3B,wBAqC6B;AAE7B,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACzB;;;;OAIG;IACH,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACzB"} |
@@ -18,3 +18,5 @@ "use strict"; | ||
| total: reply[0], | ||
| documents: reply.slice(1) | ||
| documents: reply.slice(1), | ||
| // FT.SEARCH only emits warnings on RESP3; RESP2 replies never carry them. | ||
| warnings: [] | ||
| }; | ||
@@ -28,3 +30,4 @@ }, | ||
| total: transformed.total, | ||
| documents: transformed.documents.map(document => document.id) | ||
| documents: transformed.documents.map(document => document.id), | ||
| warnings: transformed.warnings | ||
| }; | ||
@@ -31,0 +34,0 @@ } |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"SEARCH_NOCONTENT.js","sourceRoot":"","sources":["../../../lib/commands/SEARCH_NOCONTENT.ts"],"names":[],"mappings":";;;;;AACA,sDAAkD;AAElD,kBAAe;IACb,iBAAiB,EAAE,gBAAM,CAAC,iBAAiB;IAC3C,YAAY,EAAE,gBAAM,CAAC,YAAY;IACjC,YAAY,CAAC,GAAG,IAA4C;QAC1D,gBAAM,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5B,CAAC;IACD,cAAc,EAAE;QACd,CAAC,EAAE,CAAC,KAAqB,EAAwB,EAAE;YACjD,OAAO;gBACL,KAAK,EAAE,KAAK,CAAC,CAAC,CAAW;gBACzB,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAkB;aAC3C,CAAA;QACH,CAAC;QACD,CAAC,EAAE,CACD,KAAiB;QACjB,iGAAiG;QACjG,QAAc,EACd,WAAyB,EACH,EAAE;YACxB,MAAM,WAAW,GAAG,gBAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAKxE,CAAC;YAEF,OAAO;gBACL,KAAK,EAAE,WAAW,CAAC,KAAK;gBACxB,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;aAC9D,CAAC;QACJ,CAAC;KACF;CACyB,CAAC;AAK5B,CAAC","sourcesContent":["import { Command, ReplyUnion, TypeMapping } from '@redis/client/dist/lib/RESP/types';\nimport SEARCH, { SearchRawReply } from './SEARCH';\n\nexport default {\n NOT_KEYED_COMMAND: SEARCH.NOT_KEYED_COMMAND,\n IS_READ_ONLY: SEARCH.IS_READ_ONLY,\n parseCommand(...args: Parameters<typeof SEARCH.parseCommand>) {\n SEARCH.parseCommand(...args);\n args[0].push('NOCONTENT');\n },\n transformReply: {\n 2: (reply: SearchRawReply): SearchNoContentReply => {\n return {\n total: reply[0] as number,\n documents: reply.slice(1) as Array<string>\n }\n },\n 3: (\n reply: ReplyUnion,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- matches TransformReply contract\n preserve?: any,\n typeMapping?: TypeMapping\n ): SearchNoContentReply => {\n const transformed = SEARCH.transformReply[3](reply, preserve, typeMapping) as {\n total: number;\n documents: Array<{\n id: string;\n }>;\n };\n\n return {\n total: transformed.total,\n documents: transformed.documents.map(document => document.id)\n };\n }\n },\n} as const satisfies Command;\n\nexport interface SearchNoContentReply {\n total: number;\n documents: Array<string>;\n};\n"]} | ||
| {"version":3,"file":"SEARCH_NOCONTENT.js","sourceRoot":"","sources":["../../../lib/commands/SEARCH_NOCONTENT.ts"],"names":[],"mappings":";;;;;AACA,sDAAkD;AAElD,kBAAe;IACb,iBAAiB,EAAE,gBAAM,CAAC,iBAAiB;IAC3C,YAAY,EAAE,gBAAM,CAAC,YAAY;IACjC,YAAY,CAAC,GAAG,IAA4C;QAC1D,gBAAM,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5B,CAAC;IACD,cAAc,EAAE;QACd,CAAC,EAAE,CAAC,KAAqB,EAAwB,EAAE;YACjD,OAAO;gBACL,KAAK,EAAE,KAAK,CAAC,CAAC,CAAW;gBACzB,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAkB;gBAC1C,0EAA0E;gBAC1E,QAAQ,EAAE,EAAE;aACb,CAAA;QACH,CAAC;QACD,CAAC,EAAE,CACD,KAAiB;QACjB,iGAAiG;QACjG,QAAc,EACd,WAAyB,EACH,EAAE;YACxB,MAAM,WAAW,GAAG,gBAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAMxE,CAAC;YAEF,OAAO;gBACL,KAAK,EAAE,WAAW,CAAC,KAAK;gBACxB,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7D,QAAQ,EAAE,WAAW,CAAC,QAAQ;aAC/B,CAAC;QACJ,CAAC;KACF;CACyB,CAAC;AAW5B,CAAC","sourcesContent":["import { Command, ReplyUnion, TypeMapping } from '@redis/client/dist/lib/RESP/types';\nimport SEARCH, { SearchRawReply } from './SEARCH';\n\nexport default {\n NOT_KEYED_COMMAND: SEARCH.NOT_KEYED_COMMAND,\n IS_READ_ONLY: SEARCH.IS_READ_ONLY,\n parseCommand(...args: Parameters<typeof SEARCH.parseCommand>) {\n SEARCH.parseCommand(...args);\n args[0].push('NOCONTENT');\n },\n transformReply: {\n 2: (reply: SearchRawReply): SearchNoContentReply => {\n return {\n total: reply[0] as number,\n documents: reply.slice(1) as Array<string>,\n // FT.SEARCH only emits warnings on RESP3; RESP2 replies never carry them.\n warnings: []\n }\n },\n 3: (\n reply: ReplyUnion,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- matches TransformReply contract\n preserve?: any,\n typeMapping?: TypeMapping\n ): SearchNoContentReply => {\n const transformed = SEARCH.transformReply[3](reply, preserve, typeMapping) as {\n total: number;\n documents: Array<{\n id: string;\n }>;\n warnings: Array<string>;\n };\n\n return {\n total: transformed.total,\n documents: transformed.documents.map(document => document.id),\n warnings: transformed.warnings\n };\n }\n },\n} as const satisfies Command;\n\nexport interface SearchNoContentReply {\n total: number;\n documents: Array<string>;\n /**\n * Warnings returned alongside partial results (e.g. on query timeout under a\n * `return` / `return-strict` on-timeout policy). Only populated on RESP3;\n * always empty on RESP2.\n */\n warnings: Array<string>;\n};\n"]} |
@@ -66,3 +66,9 @@ import { CommandParser } from '@redis/client/dist/lib/client/parser'; | ||
| }>; | ||
| /** | ||
| * Warnings returned alongside partial results (e.g. on query timeout under a | ||
| * `return` / `return-strict` on-timeout policy). Only populated on RESP3; | ||
| * always empty on RESP2. | ||
| */ | ||
| warnings: Array<string>; | ||
| } | ||
| //# sourceMappingURL=SEARCH.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"SEARCH.d.ts","sourceRoot":"","sources":["../../../lib/commands/SEARCH.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"SEARCH.d.ts","sourceRoot":"","sources":["../../../lib/commands/SEARCH.ts"],"names":[],"mappings":"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"} |
@@ -112,3 +112,5 @@ "use strict"; | ||
| total: reply[0], | ||
| documents | ||
| documents, | ||
| // FT.SEARCH only emits warnings on RESP3; RESP2 replies never carry them. | ||
| warnings: [] | ||
| }; | ||
@@ -134,3 +136,4 @@ } | ||
| total, | ||
| documents | ||
| documents, | ||
| warnings: (0, reply_transformers_1.parseWarnings)(reply) | ||
| }; | ||
@@ -137,0 +140,0 @@ } |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"SEARCH.js","sourceRoot":"","sources":["../../../lib/commands/SEARCH.ts"],"names":[],"mappings":"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","sourcesContent":["import { CommandParser } from '@redis/client/dist/lib/client/parser';\nimport { RedisArgument, Command, ReplyUnion, TypeMapping } from '@redis/client/dist/lib/RESP/types';\nimport { RedisVariadicArgument, parseOptionalVariadicArgument } from '@redis/client/dist/lib/commands/generic-transformers';\nimport { RediSearchLanguage } from './CREATE';\nimport { DEFAULT_DIALECT } from '../dialect/default';\nimport { getMapValue, mapLikeToObject, mapLikeValues, parseDocumentValue, parseSearchResultRow } from './reply-transformers';\n\nexport type FtSearchParams = Record<string, RedisArgument | number>;\n\nexport function parseParamsArgument(parser: CommandParser, params?: FtSearchParams) {\n if (params) {\n parser.push('PARAMS');\n\n const args: Array<RedisArgument> = [];\n for (const key in params) {\n if (!Object.hasOwn(params, key)) continue;\n\n const value = params[key];\n args.push(\n key,\n typeof value === 'number' ? value.toString() : value\n );\n }\n\n parser.pushVariadicWithLength(args);\n }\n}\n\nexport interface FtSearchOptions {\n VERBATIM?: boolean;\n NOSTOPWORDS?: boolean;\n INKEYS?: RedisVariadicArgument;\n INFIELDS?: RedisVariadicArgument;\n RETURN?: RedisVariadicArgument;\n SUMMARIZE?: boolean | {\n FIELDS?: RedisArgument | Array<RedisArgument>;\n FRAGS?: number;\n LEN?: number;\n SEPARATOR?: RedisArgument;\n };\n HIGHLIGHT?: boolean | {\n FIELDS?: RedisArgument | Array<RedisArgument>;\n TAGS?: {\n open: RedisArgument;\n close: RedisArgument;\n };\n };\n SLOP?: number;\n TIMEOUT?: number;\n INORDER?: boolean;\n LANGUAGE?: RediSearchLanguage;\n EXPANDER?: RedisArgument;\n SCORER?: RedisArgument;\n SORTBY?: RedisArgument | {\n BY: RedisArgument;\n DIRECTION?: 'ASC' | 'DESC';\n };\n LIMIT?: {\n from: number | RedisArgument;\n size: number | RedisArgument;\n };\n PARAMS?: FtSearchParams;\n DIALECT?: number;\n}\n\nexport function parseSearchOptions(parser: CommandParser, options?: FtSearchOptions) {\n if (options?.VERBATIM) {\n parser.push('VERBATIM');\n }\n\n if (options?.NOSTOPWORDS) {\n parser.push('NOSTOPWORDS');\n }\n\n parseOptionalVariadicArgument(parser, 'INKEYS', options?.INKEYS);\n parseOptionalVariadicArgument(parser, 'INFIELDS', options?.INFIELDS);\n parseOptionalVariadicArgument(parser, 'RETURN', options?.RETURN);\n\n if (options?.SUMMARIZE) {\n parser.push('SUMMARIZE');\n\n if (typeof options.SUMMARIZE === 'object') {\n parseOptionalVariadicArgument(parser, 'FIELDS', options.SUMMARIZE.FIELDS);\n\n if (options.SUMMARIZE.FRAGS !== undefined) {\n parser.push('FRAGS', options.SUMMARIZE.FRAGS.toString());\n }\n\n if (options.SUMMARIZE.LEN !== undefined) {\n parser.push('LEN', options.SUMMARIZE.LEN.toString());\n }\n\n if (options.SUMMARIZE.SEPARATOR !== undefined) {\n parser.push('SEPARATOR', options.SUMMARIZE.SEPARATOR);\n }\n }\n }\n\n if (options?.HIGHLIGHT) {\n parser.push('HIGHLIGHT');\n\n if (typeof options.HIGHLIGHT === 'object') {\n parseOptionalVariadicArgument(parser, 'FIELDS', options.HIGHLIGHT.FIELDS);\n\n if (options.HIGHLIGHT.TAGS) {\n parser.push('TAGS', options.HIGHLIGHT.TAGS.open, options.HIGHLIGHT.TAGS.close);\n }\n }\n }\n\n if (options?.SLOP !== undefined) {\n parser.push('SLOP', options.SLOP.toString());\n }\n\n if (options?.TIMEOUT !== undefined) {\n parser.push('TIMEOUT', options.TIMEOUT.toString());\n }\n\n if (options?.INORDER) {\n parser.push('INORDER');\n }\n\n if (options?.LANGUAGE) {\n parser.push('LANGUAGE', options.LANGUAGE);\n }\n\n if (options?.EXPANDER) {\n parser.push('EXPANDER', options.EXPANDER);\n }\n\n if (options?.SCORER) {\n parser.push('SCORER', options.SCORER);\n }\n\n if (options?.SORTBY) {\n parser.push('SORTBY');\n\n if (typeof options.SORTBY === 'string' || options.SORTBY instanceof Buffer) {\n parser.push(options.SORTBY);\n } else {\n parser.push(options.SORTBY.BY);\n\n if (options.SORTBY.DIRECTION) {\n parser.push(options.SORTBY.DIRECTION);\n }\n }\n }\n\n if (options?.LIMIT) {\n parser.push('LIMIT', options.LIMIT.from.toString(), options.LIMIT.size.toString());\n }\n\n parseParamsArgument(parser, options?.PARAMS);\n\n if (options?.DIALECT) {\n parser.push('DIALECT', options.DIALECT.toString());\n } else {\n parser.push('DIALECT', DEFAULT_DIALECT);\n }\n}\n\nfunction transformSearchReplyResp2(\n reply: SearchRawReply,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- matches TransformReply contract\n _preserve?: any,\n _typeMapping?: TypeMapping\n): SearchReply {\n // if reply[2] is array, then we have content/documents. Otherwise, only ids\n const withoutDocuments = reply.length > 2 && !Array.isArray(reply[2]);\n\n const documents: SearchReply['documents'] = [];\n let i = 1;\n while (i < reply.length) {\n documents.push({\n id: reply[i++] as string,\n value: (withoutDocuments ? {} : documentValue(reply[i++])) as SearchDocumentValue\n });\n }\n\n return {\n total: reply[0] as number,\n documents\n };\n}\n\nfunction transformSearchReplyResp3(\n rawReply: ReplyUnion,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- matches TransformReply contract\n preserve?: any,\n typeMapping?: TypeMapping\n): SearchReply {\n if (Array.isArray(rawReply)) {\n return transformSearchReplyResp2(rawReply as SearchRawReply, preserve, typeMapping);\n }\n\n const reply = mapLikeToObject(rawReply);\n const total = Number(getMapValue(reply, ['total_results', 'total']) ?? 0);\n\n const results = mapLikeValues(\n getMapValue(reply, ['results', 'documents']) ?? []\n );\n\n const documents: SearchReply['documents'] = results.map(result => {\n const { id, value } = parseSearchResultRow(result);\n return {\n id: String((id as { toString?(): string })?.toString?.() ?? id ?? ''),\n value: value as SearchDocumentValue\n };\n });\n\n return {\n total,\n documents\n };\n}\n\nexport default {\n NOT_KEYED_COMMAND: true,\n IS_READ_ONLY: true,\n parseCommand(parser: CommandParser, index: RedisArgument, query: RedisArgument, options?: FtSearchOptions) {\n parser.push('FT.SEARCH', index, query);\n\n parseSearchOptions(parser, options);\n },\n transformReply: {\n 2: transformSearchReplyResp2,\n 3: transformSearchReplyResp3\n },\n} as const satisfies Command;\n\nexport type SearchRawReply = Array<unknown>;\n\ninterface SearchDocumentValue {\n [key: string]: string | number | null | Array<SearchDocumentValue> | SearchDocumentValue;\n}\n\nexport interface SearchReply {\n total: number;\n documents: Array<{\n id: string;\n value: SearchDocumentValue;\n }>;\n}\n\nfunction documentValue(tuples: unknown) {\n return parseDocumentValue(tuples);\n}\n"]} | ||
| {"version":3,"file":"SEARCH.js","sourceRoot":"","sources":["../../../lib/commands/SEARCH.ts"],"names":[],"mappings":"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","sourcesContent":["import { CommandParser } from '@redis/client/dist/lib/client/parser';\nimport { RedisArgument, Command, ReplyUnion, TypeMapping } from '@redis/client/dist/lib/RESP/types';\nimport { RedisVariadicArgument, parseOptionalVariadicArgument } from '@redis/client/dist/lib/commands/generic-transformers';\nimport { RediSearchLanguage } from './CREATE';\nimport { DEFAULT_DIALECT } from '../dialect/default';\nimport { getMapValue, mapLikeToObject, mapLikeValues, parseDocumentValue, parseSearchResultRow, parseWarnings } from './reply-transformers';\n\nexport type FtSearchParams = Record<string, RedisArgument | number>;\n\nexport function parseParamsArgument(parser: CommandParser, params?: FtSearchParams) {\n if (params) {\n parser.push('PARAMS');\n\n const args: Array<RedisArgument> = [];\n for (const key in params) {\n if (!Object.hasOwn(params, key)) continue;\n\n const value = params[key];\n args.push(\n key,\n typeof value === 'number' ? value.toString() : value\n );\n }\n\n parser.pushVariadicWithLength(args);\n }\n}\n\nexport interface FtSearchOptions {\n VERBATIM?: boolean;\n NOSTOPWORDS?: boolean;\n INKEYS?: RedisVariadicArgument;\n INFIELDS?: RedisVariadicArgument;\n RETURN?: RedisVariadicArgument;\n SUMMARIZE?: boolean | {\n FIELDS?: RedisArgument | Array<RedisArgument>;\n FRAGS?: number;\n LEN?: number;\n SEPARATOR?: RedisArgument;\n };\n HIGHLIGHT?: boolean | {\n FIELDS?: RedisArgument | Array<RedisArgument>;\n TAGS?: {\n open: RedisArgument;\n close: RedisArgument;\n };\n };\n SLOP?: number;\n TIMEOUT?: number;\n INORDER?: boolean;\n LANGUAGE?: RediSearchLanguage;\n EXPANDER?: RedisArgument;\n SCORER?: RedisArgument;\n SORTBY?: RedisArgument | {\n BY: RedisArgument;\n DIRECTION?: 'ASC' | 'DESC';\n };\n LIMIT?: {\n from: number | RedisArgument;\n size: number | RedisArgument;\n };\n PARAMS?: FtSearchParams;\n DIALECT?: number;\n}\n\nexport function parseSearchOptions(parser: CommandParser, options?: FtSearchOptions) {\n if (options?.VERBATIM) {\n parser.push('VERBATIM');\n }\n\n if (options?.NOSTOPWORDS) {\n parser.push('NOSTOPWORDS');\n }\n\n parseOptionalVariadicArgument(parser, 'INKEYS', options?.INKEYS);\n parseOptionalVariadicArgument(parser, 'INFIELDS', options?.INFIELDS);\n parseOptionalVariadicArgument(parser, 'RETURN', options?.RETURN);\n\n if (options?.SUMMARIZE) {\n parser.push('SUMMARIZE');\n\n if (typeof options.SUMMARIZE === 'object') {\n parseOptionalVariadicArgument(parser, 'FIELDS', options.SUMMARIZE.FIELDS);\n\n if (options.SUMMARIZE.FRAGS !== undefined) {\n parser.push('FRAGS', options.SUMMARIZE.FRAGS.toString());\n }\n\n if (options.SUMMARIZE.LEN !== undefined) {\n parser.push('LEN', options.SUMMARIZE.LEN.toString());\n }\n\n if (options.SUMMARIZE.SEPARATOR !== undefined) {\n parser.push('SEPARATOR', options.SUMMARIZE.SEPARATOR);\n }\n }\n }\n\n if (options?.HIGHLIGHT) {\n parser.push('HIGHLIGHT');\n\n if (typeof options.HIGHLIGHT === 'object') {\n parseOptionalVariadicArgument(parser, 'FIELDS', options.HIGHLIGHT.FIELDS);\n\n if (options.HIGHLIGHT.TAGS) {\n parser.push('TAGS', options.HIGHLIGHT.TAGS.open, options.HIGHLIGHT.TAGS.close);\n }\n }\n }\n\n if (options?.SLOP !== undefined) {\n parser.push('SLOP', options.SLOP.toString());\n }\n\n if (options?.TIMEOUT !== undefined) {\n parser.push('TIMEOUT', options.TIMEOUT.toString());\n }\n\n if (options?.INORDER) {\n parser.push('INORDER');\n }\n\n if (options?.LANGUAGE) {\n parser.push('LANGUAGE', options.LANGUAGE);\n }\n\n if (options?.EXPANDER) {\n parser.push('EXPANDER', options.EXPANDER);\n }\n\n if (options?.SCORER) {\n parser.push('SCORER', options.SCORER);\n }\n\n if (options?.SORTBY) {\n parser.push('SORTBY');\n\n if (typeof options.SORTBY === 'string' || options.SORTBY instanceof Buffer) {\n parser.push(options.SORTBY);\n } else {\n parser.push(options.SORTBY.BY);\n\n if (options.SORTBY.DIRECTION) {\n parser.push(options.SORTBY.DIRECTION);\n }\n }\n }\n\n if (options?.LIMIT) {\n parser.push('LIMIT', options.LIMIT.from.toString(), options.LIMIT.size.toString());\n }\n\n parseParamsArgument(parser, options?.PARAMS);\n\n if (options?.DIALECT) {\n parser.push('DIALECT', options.DIALECT.toString());\n } else {\n parser.push('DIALECT', DEFAULT_DIALECT);\n }\n}\n\nfunction transformSearchReplyResp2(\n reply: SearchRawReply,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- matches TransformReply contract\n _preserve?: any,\n _typeMapping?: TypeMapping\n): SearchReply {\n // if reply[2] is array, then we have content/documents. Otherwise, only ids\n const withoutDocuments = reply.length > 2 && !Array.isArray(reply[2]);\n\n const documents: SearchReply['documents'] = [];\n let i = 1;\n while (i < reply.length) {\n documents.push({\n id: reply[i++] as string,\n value: (withoutDocuments ? {} : documentValue(reply[i++])) as SearchDocumentValue\n });\n }\n\n return {\n total: reply[0] as number,\n documents,\n // FT.SEARCH only emits warnings on RESP3; RESP2 replies never carry them.\n warnings: []\n };\n}\n\nfunction transformSearchReplyResp3(\n rawReply: ReplyUnion,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- matches TransformReply contract\n preserve?: any,\n typeMapping?: TypeMapping\n): SearchReply {\n if (Array.isArray(rawReply)) {\n return transformSearchReplyResp2(rawReply as SearchRawReply, preserve, typeMapping);\n }\n\n const reply = mapLikeToObject(rawReply);\n const total = Number(getMapValue(reply, ['total_results', 'total']) ?? 0);\n\n const results = mapLikeValues(\n getMapValue(reply, ['results', 'documents']) ?? []\n );\n\n const documents: SearchReply['documents'] = results.map(result => {\n const { id, value } = parseSearchResultRow(result);\n return {\n id: String((id as { toString?(): string })?.toString?.() ?? id ?? ''),\n value: value as SearchDocumentValue\n };\n });\n\n return {\n total,\n documents,\n warnings: parseWarnings(reply)\n };\n}\n\nexport default {\n NOT_KEYED_COMMAND: true,\n IS_READ_ONLY: true,\n parseCommand(parser: CommandParser, index: RedisArgument, query: RedisArgument, options?: FtSearchOptions) {\n parser.push('FT.SEARCH', index, query);\n\n parseSearchOptions(parser, options);\n },\n transformReply: {\n 2: transformSearchReplyResp2,\n 3: transformSearchReplyResp3\n },\n} as const satisfies Command;\n\nexport type SearchRawReply = Array<unknown>;\n\ninterface SearchDocumentValue {\n [key: string]: string | number | null | Array<SearchDocumentValue> | SearchDocumentValue;\n}\n\nexport interface SearchReply {\n total: number;\n documents: Array<{\n id: string;\n value: SearchDocumentValue;\n }>;\n /**\n * Warnings returned alongside partial results (e.g. on query timeout under a\n * `return` / `return-strict` on-timeout policy). Only populated on RESP3;\n * always empty on RESP2.\n */\n warnings: Array<string>;\n}\n\nfunction documentValue(tuples: unknown) {\n return parseDocumentValue(tuples);\n}\n"]} |
+2
-2
| { | ||
| "name": "@redis/search", | ||
| "version": "6.1.0", | ||
| "version": "6.2.0-beta.0", | ||
| "license": "MIT", | ||
@@ -17,3 +17,3 @@ "main": "./dist/lib/index.js", | ||
| "peerDependencies": { | ||
| "@redis/client": "^6.1.0" | ||
| "@redis/client": "^6.2.0-beta.0" | ||
| }, | ||
@@ -20,0 +20,0 @@ "devDependencies": { |
Sorry, the diff of this file is too big to display
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
443051
3.71%162
2.53%4754
3.91%1
Infinity%