🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@redis/search

Package Overview
Dependencies
Maintainers
2
Versions
41
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@redis/search - npm Package Compare versions

Comparing version
6.1.0
to
6.2.0-beta.0
+13
dist/lib/commands/ALIASLIST.d.ts
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"]}
+17
-1

@@ -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

@@ -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":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAW,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AACrK,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAuB,MAAM,UAAU,CAAC;AAM/D,KAAK,SAAS,GAAG,kBAAkB,GAAG;IACpC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,EAAE,CAAC,EAAE,aAAa,CAAC;CACpB,CAAA;AAED,eAAO,MAAM,kBAAkB;;;;;;CAMrB,CAAC;AAEX,KAAK,kBAAkB,GAAG,OAAO,kBAAkB,CAAC;AAEpD,MAAM,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,kBAAkB,CAAC,CAAC;AAE3E,UAAU,aAAa,CAAC,CAAC,SAAS,eAAe;IAC/C,IAAI,EAAE,CAAC,CAAC;CACT;AAED,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;CAcjC,CAAC;AAEX,KAAK,8BAA8B,GAAG,OAAO,8BAA8B,CAAC;AAE5E,MAAM,MAAM,yBAAyB,GAAG,8BAA8B,CAAC,MAAM,8BAA8B,CAAC,CAAC;AAE7G,UAAU,cAAc,CAAC,CAAC,SAAS,yBAAyB;IAC1D,IAAI,EAAE,CAAC,CAAC;IACR,EAAE,CAAC,EAAE,aAAa,CAAC;CACpB;AAED,UAAU,0BAA0B,CAAC,CAAC,SAAS,yBAAyB,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IACjG,QAAQ,EAAE,kBAAkB,CAAC;CAC9B;AAED,KAAK,YAAY,GAAG,cAAc,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC,CAAC;AAE5E,KAAK,oBAAoB,GAAG,0BAA0B,CAAC,8BAA8B,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAEzG,KAAK,uBAAuB,GAAG,0BAA0B,CAAC,8BAA8B,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAE/G,KAAK,UAAU,GAAG,0BAA0B,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAC;AAEpF,KAAK,UAAU,GAAG,0BAA0B,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAC;AAEpF,KAAK,UAAU,GAAG,0BAA0B,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAC;AAEpF,KAAK,UAAU,GAAG,0BAA0B,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAC;AAEpF,KAAK,aAAa,GAAG,0BAA0B,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC,CAAC;AAE1F,UAAU,eAAgB,SAAQ,0BAA0B,CAAC,8BAA8B,CAAC,UAAU,CAAC,CAAC;IACtG,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,KAAK,aAAa,GAAG,0BAA0B,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC,CAAC;AAE1F,UAAU,iBAAkB,SAAQ,0BAA0B,CAAC,8BAA8B,CAAC,aAAa,CAAC,CAAC;IAC3G,EAAE,CAAC,EAAE,kBAAkB,GAAG;QACxB,QAAQ,EAAE,kBAAkB,CAAC;QAC7B,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;KAC5B,CAAC;CACH;AAED,UAAU,mBAAoB,SAAQ,0BAA0B,CAAC,8BAA8B,CAAC,eAAe,CAAC,CAAC;IAC/G,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,cAAe,SAAQ,cAAc,CAAC,8BAA8B,CAAC,SAAS,CAAC,CAAC;IACxF,MAAM,EAAE,GAAG,GAAG,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;IAChD,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,oBAAoB,GAAG,uBAAuB,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,aAAa,GAAG,eAAe,GAAG,aAAa,GAAG,iBAAiB,GAAG,mBAAmB,GAAG,cAAc,CAAC;AAE7P,UAAU,WAAY,SAAQ,aAAa,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACxE,UAAU,CAAC,EAAE,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC5D,MAAM,EAAE,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC;CAClD;AAED,KAAK,cAAc,GAAG,aAAa,GAAG;IACpC,EAAE,EAAE,kBAAkB,CAAC;IACvB,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC5B,CAAC;AAEF,UAAU,QAAS,SAAQ,aAAa,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACpE,EAAE,EAAE,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,UAAU,SAAU,SAAQ,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACpE,UAAU,EAAE,aAAa,CAAC;IAC1B,EAAE,EAAE,aAAa,CAAC;CACnB;AAED,UAAU,SAAU,SAAQ,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,UAAW,SAAQ,aAAa,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACtE,UAAU,EAAE,aAAa,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,GAAG,GAAG,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC,CAAC;IAC3E,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC;IAC/B,GAAG,OAAO,EAAE,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC;CACjE,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC;IAC3D;;;;OAIG;IACH,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACzB;AAED,iBAAS,4BAA4B,CACnC,QAAQ,EAAE,iBAAiB,EAE3B,QAAQ,CAAC,EAAE,GAAG,EACd,WAAW,CAAC,EAAE,WAAW,GACxB,cAAc,CAiBhB;AAED,iBAAS,4BAA4B,CACnC,QAAQ,EAAE,UAAU,EAEpB,QAAQ,CAAC,EAAE,GAAG,EACd,WAAW,CAAC,EAAE,WAAW,GACxB,cAAc,CA+BhB;;;;gDAKsB,aAAa,SAAS,aAAa,SAAS,aAAa,YAAY,kBAAkB;;;;;;AAH9G,wBAY6B;AAE7B,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,QA6FxF;AAcD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,QAmFlF"}

@@ -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":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAW,MAAM,mCAAmC,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAiC,MAAM,sDAAsD,CAAC;AAE5H,eAAO,MAAM,iBAAiB;;;;;;;CAOpB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,OAAO,iBAAiB,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAEvF,UAAU,WAAW,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe;IAC/D,IAAI,EAAE,CAAC,CAAC;IACR,EAAE,CAAC,EAAE,aAAa,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,UAAU,iBAAiB,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IAC7F,QAAQ,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,0BAA0B;;;;;CAK7B,CAAC;AAEX,MAAM,MAAM,uBAAuB,GAAG,OAAO,0BAA0B,CAAC,MAAM,OAAO,0BAA0B,CAAC,CAAC;AAEjH,UAAU,eAAgB,SAAQ,iBAAiB,CAAC,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACnF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,uBAAuB,CAAC;IACnC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,KAAK,kBAAkB,GAAG,iBAAiB,CAAC,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;AAEjF,KAAK,cAAc,GAAG,iBAAiB,CAAC,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;AAEzE,UAAU,cAAe,SAAQ,iBAAiB,CAAC,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACjF,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,6BAA6B;;;IAGxC;;MAEE;;CAEM,CAAC;AAEX,MAAM,MAAM,0BAA0B,GAAG,OAAO,6BAA6B,CAAC,MAAM,OAAO,6BAA6B,CAAC,CAAC;AAE1H,UAAU,iBAAkB,SAAQ,WAAW,CAAC,OAAO,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACjF,SAAS,EAAE,0BAA0B,CAAC;IACtC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;IACxE,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,IAAI,GAAG,IAAI,GAAG,QAAQ,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,qBAAsB,SAAQ,iBAAiB;IACvD,SAAS,EAAE,OAAO,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,qBAAsB,SAAQ,iBAAiB;IACvD,SAAS,EAAE,OAAO,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,4BAA4B;;;;;;;CAO/B,CAAC;AAEX,MAAM,MAAM,0BAA0B,GACpC,OAAO,4BAA4B,CAAC,MAAM,OAAO,4BAA4B,CAAC,CAAC;AAEjF,UAAU,uBAAwB,SAAQ,iBAAiB;IACzD,SAAS,EAAE,OAAO,6BAA6B,CAAC,QAAQ,CAAC,CAAC;IAC1D,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;IAE5B,WAAW,CAAC,EAAE,0BAA0B,CAAC;IACzC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,6BAA6B;;;CAGhC,CAAC;AAEX,MAAM,MAAM,8BAA8B,GAAG,OAAO,6BAA6B,CAAC,MAAM,OAAO,6BAA6B,CAAC,CAAC;AAE9H,UAAU,mBAAoB,SAAQ,WAAW,CAAC,OAAO,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACrF,YAAY,CAAC,EAAE,8BAA8B,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAC7B,eAAe,GACf,kBAAkB,GAClB,cAAc,GACd,cAAc,GACd,qBAAqB,GACrB,qBAAqB,GACrB,uBAAuB,GACvB,mBAAmB,GACnB,eAAe,CAAC;AAEpB;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,gBAAgB;IAC/B,CAAC,KAAK,EAAE,MAAM,GAAG,qBAAqB,GAAG,qBAAqB,EAAE,CAAC;CAClE;AAgBD,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,gBAAgB,QAkL1E;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCtB,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,OAAO,mBAAmB,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAE9F,MAAM,MAAM,kBAAkB,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,MAAM,EAAE,CAAC;AAE1D;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAErE,MAAM,WAAW,aAAa;IAC5B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAElC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,qBAAqB,CAAC;CACnC;;;;gDAKsB,aAAa,SAAS,aAAa,UAAU,gBAAgB,YAAY,aAAa;mCAiE7D,kBAAkB,IAAI,CAAC;;AApEvE,wBAqE6B"}

@@ -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":"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"}

@@ -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":";;;;;AAAA,oDAA4B;AAC5B,oDAA4B;AAC5B,kFAA0D;AAC1D,4DAAoC;AACpC,0DAAkC;AAClC,0DAAkC;AAClC,gEAAwC;AACxC,8DAAsC;AACtC,8DAAsC;AACtC,sDAA8B;AAC9B,8DAAsC;AACtC,gEAAwC;AACxC,wDAAgC;AAChC,wDAAgC;AAChC,0DAAkC;AAClC,4DAAoC;AACpC,wDAAgC;AAChC,8DAAsC;AACtC,sDAA8B;AAC9B,kDAA0B;AAC1B,sEAA6C;AAC7C,4EAAmD;AACnD,0EAAkD;AAClD,sDAA8B;AAC9B,8DAAsC;AACtC,sDAA8B;AAC9B,sDAA8B;AAC9B,gFAAwD;AACxD,sGAA8E;AAC9E,4EAAoD;AACpD,sDAA8B;AAC9B,sDAA8B;AAC9B,wDAAgC;AAChC,4DAAoC;AACpC,wDAAgC;AAEhC,kBAAe;IACb;;OAEG;IACH,KAAK,EAAL,eAAK;IACL;;OAEG;IACH,KAAK,EAAE,eAAK;IACZ;;;;OAIG;IACH,KAAK,EAAL,eAAK;IACL;;;;OAIG;IACH,KAAK,EAAE,eAAK;IACZ;;;;;;;;OAQG;IACH,oBAAoB,EAApB,8BAAoB;IACpB;;;;;;;;OAQG;IACH,mBAAmB,EAAE,8BAAoB;IACzC;;;;;;;;;;OAUG;IACH,SAAS,EAAT,mBAAS;IACT;;;;;;;;;;OAUG;IACH,SAAS,EAAE,mBAAS;IACpB;;;;OAIG;IACH,QAAQ,EAAR,kBAAQ;IACR;;;;OAIG;IACH,QAAQ,EAAE,kBAAQ;IAClB;;;OAGG;IACH,QAAQ,EAAR,kBAAQ;IACR;;;OAGG;IACH,QAAQ,EAAE,kBAAQ;IAClB;;;;OAIG;IACH,WAAW,EAAX,qBAAW;IACX;;;;OAIG;IACH,WAAW,EAAE,qBAAW;IACxB;;;OAGG;IACH,UAAU,EAAV,oBAAU;IACV;;;OAGG;IACH,SAAS,EAAE,oBAAU;IACrB;;;;OAIG;IACH,UAAU,EAAV,oBAAU;IACV;;;;OAIG;IACH,SAAS,EAAE,oBAAU;IACrB;;;;;;;;;;;;;;;OAeG;IACH,MAAM,EAAN,gBAAM;IACN;;;;;;;;;;;;;;;OAeG;IACH,MAAM,EAAE,gBAAM;IACd;;;;OAIG;IACH,UAAU,EAAV,oBAAU;IACV;;;;OAIG;IACH,SAAS,EAAE,oBAAU;IACrB;;;;;;OAMG;IACH,WAAW,EAAX,qBAAW;IACX;;;;;;OAMG;IACH,UAAU,EAAE,qBAAW;IACvB;;;;OAIG;IACH,OAAO,EAAP,iBAAO;IACP;;;;OAIG;IACH,OAAO,EAAE,iBAAO;IAChB;;;;OAIG;IACH,OAAO,EAAP,iBAAO;IACP;;;;OAIG;IACH,OAAO,EAAE,iBAAO;IAChB;;;OAGG;IACH,QAAQ,EAAR,kBAAQ;IACR;;;OAGG;IACH,QAAQ,EAAE,kBAAQ;IAClB;;;;;OAKG;IACH,SAAS,EAAT,mBAAS;IACT;;;;;OAKG;IACH,SAAS,EAAE,mBAAS;IACpB;;;;;;;OAOG;IACH,OAAO,EAAP,iBAAO;IACP;;;;;;;OAOG;IACH,OAAO,EAAE,iBAAO;IAChB;;;;;;OAMG;IACH,UAAU,EAAV,oBAAU;IACV;;;;;;OAMG;IACH,UAAU,EAAE,oBAAU;IACtB;;;;;;;;;;;;;;;OAeG;IACH,MAAM,EAAN,gBAAM;IACN;;;;;;;;;;;;;;;OAeG;IACH,MAAM,EAAE,gBAAM;IACd;;;OAGG;IACH,IAAI,EAAJ,cAAI;IACJ;;;OAGG;IACH,IAAI,EAAE,cAAI;IACV;;;;;;;OAOG;IACH,aAAa,EAAb,wBAAa;IACb;;;;;;;OAOG;IACH,aAAa,EAAE,wBAAa;IAC5B;;;;;;;OAOG;IACH,gBAAgB,EAAhB,2BAAgB;IAChB;;;;;;;OAOG;IACH,gBAAgB,EAAE,2BAAgB;IAClC;;;;;;;OAOG;IACH,gBAAgB,EAAhB,0BAAgB;IAChB;;;;;;;OAOG;IACH,eAAe,EAAE,0BAAgB;IACjC;;;;;;;;;;;;;OAaG;IACH,MAAM,EAAN,gBAAM;IACN;;;;;;;;;;;;;OAaG;IACH,MAAM,EAAE,gBAAM;IACd;;;;;;;;OAQG;IACH,UAAU,EAAV,oBAAU;IACV;;;;;;;;OAQG;IACH,UAAU,EAAE,oBAAU;IACtB;;;;;;;;OAQG;IACH,MAAM,EAAN,gBAAM;IACN;;;;;;;;OAQG;IACH,MAAM,EAAE,gBAAM;IACd;;;;OAIG;IACH,MAAM,EAAN,gBAAM;IACN;;;;OAIG;IACH,MAAM,EAAE,gBAAM;IACd;;;;;;;OAOG;IACH,mBAAmB,EAAnB,6BAAmB;IACnB;;;;;;;OAOG;IACH,kBAAkB,EAAE,6BAAmB;IACvC;;;;;;;OAOG;IACH,8BAA8B,EAA9B,wCAA8B;IAC9B;;;;;;;OAOG;IACH,4BAA4B,EAAE,wCAA8B;IAC5D;;;;;;;OAOG;IACH,iBAAiB,EAAjB,2BAAiB;IACjB;;;;;;;OAOG;IACH,gBAAgB,EAAE,2BAAiB;IACnC;;;;;;;OAOG;IACH,MAAM,EAAN,gBAAM;IACN;;;;;;;OAOG;IACH,MAAM,EAAE,gBAAM;IACd;;;OAGG;IACH,MAAM,EAAN,gBAAM;IACN;;;OAGG;IACH,MAAM,EAAE,gBAAM;IACd;;;OAGG;IACH,OAAO,EAAP,iBAAO;IACP;;;OAGG;IACH,OAAO,EAAE,iBAAO;IAChB;;;;;;;OAOG;IACH,SAAS,EAAT,mBAAS;IACT;;;;;;;OAOG;IACH,SAAS,EAAE,mBAAS;IACpB;;;;OAIG;IACH,OAAO,EAAP,iBAAO;IACP;;;;OAIG;IACH,OAAO,EAAE,iBAAO;CACjB,CAAC","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"]}
{
"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