TanStack

BasicIndex

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

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/base-index.ts:158

Parameters

id

number

expression

BasicExpression

name?

string

options?

any

Returns

BasicIndex<TKey>

Inherited from

BaseIndex.constructor

Properties

compareFn()

ts
protected readonly compareFn: (a, b) => number;

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

Orders indexed values. Every result is checked, because a custom comparator or custom collation may be supplied by the user.

Parameters

a

any

b

any

Returns

number

Inherited from

BaseIndex.compareFn


compareOptions

ts
protected readonly compareOptions: CompareOptions;

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

Inherited from

BaseIndex.compareOptions


expression

ts
readonly expression: BasicExpression;

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

Inherited from

BaseIndex.expression


hasCustomComparator

ts
protected readonly hasCustomComparator: boolean;

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

A user-supplied comparator's 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:140

Inherited from

BaseIndex.id


name?

ts
readonly optional name: string;

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

Inherited from

BaseIndex.name


supportedOperations

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

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

Inherited from

BaseIndex.supportedOperations

Accessors

keyCount

Get Signature

ts
get keyCount(): number;

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

Gets the number of indexed keys

Returns

number

Overrides

BaseIndex.keyCount


supportsOrderOptimization

Get Signature

ts
get supportsOrderOptimization(): boolean;

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

Whether a query can use this index for its declared ordered prefix.

Returns

boolean

Whether a query can use this index for its declared ordered prefix.

Inherited from

BaseIndex.supportsOrderOptimization


supportsRangeOptimization

Get Signature

ts
get supportsRangeOptimization(): boolean;

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

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

Methods

add()

ts
add(key, item): void;

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

Adds a value to the index

Parameters

key

TKey

item

any

Returns

void

Overrides

BaseIndex.add


addRangeValue()

ts
protected addRangeValue(value): void;

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

Parameters

value

unknown

Returns

void

Inherited from

BaseIndex.addRangeValue


build()

ts
build(entries): void;

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

Builds the index from a collection of entries

Parameters

entries

Iterable<[TKey, any]>

Returns

void

Overrides

BaseIndex.build


canOptimizeRangeFor()

ts
canOptimizeRangeFor(value): boolean;

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

Whether the live values in this index share the predicate operand's relational domain. Mixed domains can sort differently in the index and WHERE evaluator, which can make a range lookup omit matching rows.

Parameters

value

unknown

Returns

boolean

Inherited from

BaseIndex.canOptimizeRangeFor


clear()

ts
clear(): void;

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

Clears all data from the index

Returns

void

Overrides

BaseIndex.clear


clearRangeValues()

ts
protected clearRangeValues(): void;

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

Returns

void

Inherited from

BaseIndex.clearRangeValues


equalityLookup()

ts
equalityLookup(value): Set<TKey>;

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

Performs an equality lookup - O(1)

Parameters

value

any

Returns

Set<TKey>

Overrides

BaseIndex.equalityLookup


evaluateAddedValue()

ts
protected evaluateAddedValue(key, item): any;

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

The indexed value of a row being added. A throwing expression fails the write.

Parameters

key

TKey

item

any

Returns

any

Inherited from

BaseIndex.evaluateAddedValue


evaluateIndexExpression()

ts
protected evaluateIndexExpression(item): any;

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

Parameters

item

any

Returns

any

Inherited from

BaseIndex.evaluateIndexExpression


exactBucketKeys()

ts
protected exactBucketKeys(value): Iterable<TKey, any, any> | undefined;

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

Parameters

value

any

Returns

Iterable<TKey, any, any> | undefined

Inherited from

BaseIndex.exactBucketKeys


inArrayLookup()

ts
inArrayLookup(values): Set<TKey>;

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

Combine exact buckets without copying each bucket first.

Parameters

values

any[]

Returns

Set<TKey>

Inherited from

BaseIndex.inArrayLookup


initialize()

ts
protected initialize(_options?): void;

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

Parameters

_options?

any

Returns

void

Inherited from

BaseIndex.initialize


lookup()

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

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

Parameters

operation

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

value

any

Returns

Set<TKey>

Overrides

BaseIndex.lookup


lookupSupportedOperation()

ts
protected lookupSupportedOperation(operation, value): Set<TKey> | undefined;

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

Parameters

operation

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

value

any

Returns

Set<TKey> | undefined

Inherited from

BaseIndex.lookupSupportedOperation


matchesCompareOptions()

ts
matchesCompareOptions(compareOptions): boolean;

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

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:361

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:309

Parameters

fieldPath

string[]

Returns

boolean

Inherited from

BaseIndex.matchesField


rangeQuery()

ts
rangeQuery(options): Set<TKey>;

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

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/base-index.ts:237

Parameters

options

RangeQueryOptions = {}

Returns

Set<TKey>

Inherited from

BaseIndex.rangeQueryReversed


remove()

ts
remove(key, item): void;

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

Removes a value from the index

Parameters

key

TKey

item

any

Returns

void

Overrides

BaseIndex.remove


removeRangeValue()

ts
protected removeRangeValue(value): void;

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

Parameters

value

unknown

Returns

void

Inherited from

BaseIndex.removeRangeValue


supports()

ts
supports(operation): boolean;

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

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:313

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:360

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:334

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:367

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

Parameters

n

number

filterFn?

(key) => boolean

Returns

TKey[]

Overrides

BaseIndex.takeReversedFromEnd


update()

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

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

Updates a value in the index

Parameters

key

TKey

oldItem

any

newItem

any

Returns

void

Overrides

BaseIndex.update