TanStack

BasicIndex

Class: BasicIndex<TKey>

Defined in: packages/db/src/indexes/basic-index.ts:43

Basic index using Map + sorted Array.

  • Map for O(1) equality lookups
  • Sorted Array for O(log n) range queries via binary search
  • O(n) updates to maintain sort order

Simpler and smaller than BTreeIndex, good for read-heavy workloads. Use BTreeIndex for write-heavy workloads with large collections.

Extends

Type Parameters

TKey

TKey extends string | number = string | number

Constructors

Constructor

ts
new BasicIndex<TKey>(
   id, 
   expression, 
   name?, 
options?): BasicIndex<TKey>;

Defined in: packages/db/src/indexes/basic-index.ts:64

Parameters

id

number

expression

BasicExpression

name?

string

options?

any

Returns

BasicIndex<TKey>

Overrides

BaseIndex.constructor

Properties

compareOptions

ts
protected compareOptions: CompareOptions;

Defined in: packages/db/src/indexes/base-index.ts:102

Inherited from

BaseIndex.compareOptions


expression

ts
readonly expression: BasicExpression;

Defined in: packages/db/src/indexes/base-index.ts:96

Inherited from

BaseIndex.expression


hasCustomComparator

ts
protected hasCustomComparator: boolean = false;

Defined in: packages/db/src/indexes/base-index.ts:108

Set by subclasses when constructed with a user-supplied comparator, whose ordering may not match the WHERE evaluator's relational operators.

Inherited from

BaseIndex.hasCustomComparator


id

ts
readonly id: number;

Defined in: packages/db/src/indexes/base-index.ts:94

Inherited from

BaseIndex.id


lastUpdated

ts
protected lastUpdated: Date;

Defined in: packages/db/src/indexes/base-index.ts:101

Inherited from

BaseIndex.lastUpdated


lookupCount

ts
protected lookupCount: number = 0;

Defined in: packages/db/src/indexes/base-index.ts:99

Inherited from

BaseIndex.lookupCount


name?

ts
readonly optional name: string;

Defined in: packages/db/src/indexes/base-index.ts:95

Inherited from

BaseIndex.name


supportedOperations

ts
readonly supportedOperations: Set<"eq" | "gt" | "gte" | "lt" | "lte" | "in" | "like" | "ilike">;

Defined in: packages/db/src/indexes/basic-index.ts:46

Overrides

BaseIndex.supportedOperations


totalLookupTime

ts
protected totalLookupTime: number = 0;

Defined in: packages/db/src/indexes/base-index.ts:100

Inherited from

BaseIndex.totalLookupTime

Accessors

indexedKeysSet

Get Signature

ts
get indexedKeysSet(): Set<TKey>;

Defined in: packages/db/src/indexes/basic-index.ts:519

Returns

Set<TKey>

Overrides

BaseIndex.indexedKeysSet


keyCount

Get Signature

ts
get keyCount(): number;

Defined in: packages/db/src/indexes/basic-index.ts:273

Gets the number of indexed keys

Returns

number

Overrides

BaseIndex.keyCount


orderedEntriesArray

Get Signature

ts
get orderedEntriesArray(): [any, Set<TKey>][];

Defined in: packages/db/src/indexes/basic-index.ts:523

Returns

[any, Set<TKey>][]

Overrides

BaseIndex.orderedEntriesArray


orderedEntriesArrayReversed

Get Signature

ts
get orderedEntriesArrayReversed(): [any, Set<TKey>][];

Defined in: packages/db/src/indexes/basic-index.ts:530

Returns

[any, Set<TKey>][]

Overrides

BaseIndex.orderedEntriesArrayReversed


supportsRangeOptimization

Get Signature

ts
get supportsRangeOptimization(): boolean;

Defined in: packages/db/src/indexes/base-index.ts:163

Whether range lookups (gt/gte/lt/lte) on this index can be trusted to return every matching key. Range traversal relies on the index ordering, so it is unsafe when the index uses a custom comparator, whose order may not match the WHERE evaluator's relational operators. Callers must fall back to a full scan when this is false.

Returns

boolean

Inherited from

BaseIndex.supportsRangeOptimization


valueMapData

Get Signature

ts
get valueMapData(): Map<any, Set<TKey>>;

Defined in: packages/db/src/indexes/basic-index.ts:539

Returns

Map<any, Set<TKey>>

Overrides

BaseIndex.valueMapData

Methods

add()

ts
add(key, item): void;

Defined in: packages/db/src/indexes/basic-index.ts:83

Adds a value to the index

Parameters

key

TKey

item

any

Returns

void

Overrides

BaseIndex.add


build()

ts
build(entries): void;

Defined in: packages/db/src/indexes/basic-index.ts:191

Builds the index from a collection of entries

Parameters

entries

Iterable<[TKey, any]>

Returns

void

Overrides

BaseIndex.build


clear()

ts
clear(): void;

Defined in: packages/db/src/indexes/basic-index.ts:228

Clears all data from the index

Returns

void

Overrides

BaseIndex.clear


equalityLookup()

ts
equalityLookup(value): Set<TKey>;

Defined in: packages/db/src/indexes/basic-index.ts:280

Performs an equality lookup - O(1)

Parameters

value

any

Returns

Set<TKey>

Overrides

BaseIndex.equalityLookup


evaluateIndexExpression()

ts
protected evaluateIndexExpression(item): any;

Defined in: packages/db/src/indexes/base-index.ts:214

Parameters

item

any

Returns

any

Inherited from

BaseIndex.evaluateIndexExpression


getStats()

ts
getStats(): IndexStats;

Defined in: packages/db/src/indexes/base-index.ts:202

Returns

IndexStats

Inherited from

BaseIndex.getStats


inArrayLookup()

ts
inArrayLookup(values): Set<TKey>;

Defined in: packages/db/src/indexes/basic-index.ts:504

Performs an IN array lookup - O(k) where k is values.length

Parameters

values

any[]

Returns

Set<TKey>

Overrides

BaseIndex.inArrayLookup


initialize()

ts
protected initialize(_options?): void;

Defined in: packages/db/src/indexes/basic-index.ts:78

Parameters

_options?

BasicIndexOptions

Returns

void

Overrides

BaseIndex.initialize


lookup()

ts
lookup(operation, value): Set<TKey>;

Defined in: packages/db/src/indexes/basic-index.ts:238

Performs a lookup operation

Parameters

operation

"eq" | "gt" | "gte" | "lt" | "lte" | "in" | "like" | "ilike"

value

any

Returns

Set<TKey>

Overrides

BaseIndex.lookup


matchesCompareOptions()

ts
matchesCompareOptions(compareOptions): boolean;

Defined in: packages/db/src/indexes/base-index.ts:179

Checks if the compare options match the index's compare options. The direction is ignored because the index can be reversed if the direction is different.

Parameters

compareOptions

CompareOptions

Returns

boolean

Inherited from

BaseIndex.matchesCompareOptions


matchesDirection()

ts
matchesDirection(direction): boolean;

Defined in: packages/db/src/indexes/base-index.ts:198

Checks if the index matches the provided direction.

Parameters

direction

OrderByDirection

Returns

boolean

Inherited from

BaseIndex.matchesDirection


matchesField()

ts
matchesField(fieldPath): boolean;

Defined in: packages/db/src/indexes/base-index.ts:167

Parameters

fieldPath

string[]

Returns

boolean

Inherited from

BaseIndex.matchesField


rangeQuery()

ts
rangeQuery(options): Set<TKey>;

Defined in: packages/db/src/indexes/basic-index.ts:288

Performs a range query using binary search - O(log n + m)

Parameters

options

RangeQueryOptions = {}

Returns

Set<TKey>

Overrides

BaseIndex.rangeQuery


rangeQueryReversed()

ts
rangeQueryReversed(options): Set<TKey>;

Defined in: packages/db/src/indexes/basic-index.ts:349

Performs a reversed range query

Parameters

options

RangeQueryOptions = {}

Returns

Set<TKey>

Overrides

BaseIndex.rangeQueryReversed


remove()

ts
remove(key, item): void;

Defined in: packages/db/src/indexes/basic-index.ts:124

Removes a value from the index

Parameters

key

TKey

item

any

Returns

void

Overrides

BaseIndex.remove


supports()

ts
supports(operation): boolean;

Defined in: packages/db/src/indexes/base-index.ts:159

Parameters

operation

"eq" | "gt" | "gte" | "lt" | "lte" | "in" | "like" | "ilike"

Returns

boolean

Inherited from

BaseIndex.supports


take()

ts
take(
   n, 
   from?, 
   filterFn?): TKey[];

Defined in: packages/db/src/indexes/basic-index.ts:374

Returns the next n items in sorted order

Parameters

n

number

from?

any

filterFn?

(key) => boolean

Returns

TKey[]

Overrides

BaseIndex.take


takeFromStart()

ts
takeFromStart(n, filterFn?): TKey[];

Defined in: packages/db/src/indexes/basic-index.ts:459

Returns the first n items in sorted order (from the start)

Parameters

n

number

filterFn?

(key) => boolean

Returns

TKey[]

Overrides

BaseIndex.takeFromStart


takeReversed()

ts
takeReversed(
   n, 
   from?, 
   filterFn?): TKey[];

Defined in: packages/db/src/indexes/basic-index.ts:416

Returns the next n items in reverse sorted order

Parameters

n

number

from?

any

filterFn?

(key) => boolean

Returns

TKey[]

Overrides

BaseIndex.takeReversed


takeReversedFromEnd()

ts
takeReversedFromEnd(n, filterFn?): TKey[];

Defined in: packages/db/src/indexes/basic-index.ts:478

Returns the first n items in reverse sorted order (from the end)

Parameters

n

number

filterFn?

(key) => boolean

Returns

TKey[]

Overrides

BaseIndex.takeReversedFromEnd


trackLookup()

ts
protected trackLookup(startTime): void;

Defined in: packages/db/src/indexes/base-index.ts:220

Parameters

startTime

number

Returns

void

Inherited from

BaseIndex.trackLookup


update()

ts
update(
   key, 
   oldItem, 
   newItem): void;

Defined in: packages/db/src/indexes/basic-index.ts:162

Updates a value in the index

Parameters

key

TKey

oldItem

any

newItem

any

Returns

void

Overrides

BaseIndex.update


updateTimestamp()

ts
protected updateTimestamp(): void;

Defined in: packages/db/src/indexes/base-index.ts:226

Returns

void

Inherited from

BaseIndex.updateTimestamp