@tanstack/db
Version:
A reactive client store for building super fast apps on sync
1 lines • 2.55 kB
Source Map (JSON)
{"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;;"}