{"version":3,"file":"reverse-index.cjs","sources":["../../../src/indexes/reverse-index.ts"],"sourcesContent":["import type { IndexInterface, IndexOperation, IndexReader } from './base-index'\nimport type { RangeQueryOptions } from './btree-index'\n\nexport class ReverseIndex<\n  TKey extends string | number,\n> implements IndexReader<TKey> {\n  private originalIndex: IndexInterface<TKey>\n\n  constructor(index: IndexInterface<TKey>) {\n    this.originalIndex = index\n  }\n\n  // Define the reversed operations\n\n  lookup(operation: IndexOperation, value: any): Set<TKey> {\n    const reverseOperation =\n      operation === `gt`\n        ? `lt`\n        : operation === `gte`\n          ? `lte`\n          : operation === `lt`\n            ? `gt`\n            : operation === `lte`\n              ? `gte`\n              : operation\n    return this.originalIndex.lookup(reverseOperation, value)\n  }\n\n  rangeQuery(options: RangeQueryOptions = {}): Set<TKey> {\n    return this.originalIndex.rangeQueryReversed(options)\n  }\n\n  take(n: number, from: any, filterFn?: (key: TKey) => boolean): Array<TKey> {\n    return this.originalIndex.takeReversed(n, from, filterFn)\n  }\n\n  takeFromStart(n: number, filterFn?: (key: TKey) => boolean): Array<TKey> {\n    return this.originalIndex.takeReversedFromEnd(n, filterFn)\n  }\n\n  // All operations below delegate to the original index\n\n  supports(operation: IndexOperation): boolean {\n    return this.originalIndex.supports(operation)\n  }\n\n  get supportsRangeOptimization(): boolean {\n    return this.originalIndex.supportsRangeOptimization\n  }\n\n  canOptimizeRangeFor(value: unknown): boolean {\n    return this.originalIndex.canOptimizeRangeFor?.(value) ?? true\n  }\n\n  get keyCount(): number {\n    return this.originalIndex.keyCount\n  }\n}\n"],"names":[],"mappings":";;AAGO,MAAM,aAEkB;AAAA,EAG7B,YAAY,OAA6B;AACvC,SAAK,gBAAgB;AAAA,EACvB;AAAA;AAAA,EAIA,OAAO,WAA2B,OAAuB;AACvD,UAAM,mBACJ,cAAc,OACV,OACA,cAAc,QACZ,QACA,cAAc,OACZ,OACA,cAAc,QACZ,QACA;AACZ,WAAO,KAAK,cAAc,OAAO,kBAAkB,KAAK;AAAA,EAC1D;AAAA,EAEA,WAAW,UAA6B,IAAe;AACrD,WAAO,KAAK,cAAc,mBAAmB,OAAO;AAAA,EACtD;AAAA,EAEA,KAAK,GAAW,MAAW,UAAgD;AACzE,WAAO,KAAK,cAAc,aAAa,GAAG,MAAM,QAAQ;AAAA,EAC1D;AAAA,EAEA,cAAc,GAAW,UAAgD;AACvE,WAAO,KAAK,cAAc,oBAAoB,GAAG,QAAQ;AAAA,EAC3D;AAAA;AAAA,EAIA,SAAS,WAAoC;AAC3C,WAAO,KAAK,cAAc,SAAS,SAAS;AAAA,EAC9C;AAAA,EAEA,IAAI,4BAAqC;AACvC,WAAO,KAAK,cAAc;AAAA,EAC5B;AAAA,EAEA,oBAAoB,OAAyB;AAC3C,WAAO,KAAK,cAAc,sBAAsB,KAAK,KAAK;AAAA,EAC5D;AAAA,EAEA,IAAI,WAAmB;AACrB,WAAO,KAAK,cAAc;AAAA,EAC5B;AACF;;"}