- Core API Reference
- Collection
- createCollection
- liveQueryCollectionOptions
- createLiveQueryCollection
- createOptimisticAction
- createTransaction
- Electric DB Collection
- electricCollectionOptions
- Query DB Collection
- queryCollectionOptions
- RxDB DB Collection
- rxdbCollectionOptions
- PowerSync Collection
- powerSyncCollectionOptions
- createIndexedDB
- indexedDBCollectionOptions
- React Hooks
- useLiveQuery
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#
- BaseIndex<TKey>
Type Parameters#
TKey#
TKey extends string | number = string | number
Constructors#
Constructor#
new BasicIndex<TKey>(
id,
expression,
name?,
options?): BasicIndex<TKey>;Defined in: packages/db/src/indexes/base-index.ts:158
Parameters#
id#
number
expression#
name?#
string
options?#
any
Returns#
BasicIndex<TKey>
Inherited from#
Properties#
compareFn()#
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#
compareOptions#
protected readonly compareOptions: CompareOptions;Defined in: packages/db/src/indexes/base-index.ts:144
Inherited from#
expression#
readonly expression: BasicExpression;Defined in: packages/db/src/indexes/base-index.ts:142
Inherited from#
hasCustomComparator#
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#
id#
readonly id: number;Defined in: packages/db/src/indexes/base-index.ts:140
Inherited from#
name?#
readonly optional name: string;Defined in: packages/db/src/indexes/base-index.ts:141
Inherited from#
supportedOperations#
readonly supportedOperations: Set<"eq" | "gt" | "gte" | "lt" | "lte" | "in" | "like" | "ilike">;Defined in: packages/db/src/indexes/base-index.ts:143
Inherited from#
Accessors#
keyCount#
Get Signature#
get keyCount(): number;Defined in: packages/db/src/indexes/basic-index.ts:234
Gets the number of indexed keys
Returns#
number
Overrides#
supportsOrderOptimization#
Get Signature#
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#
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()#
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#
addRangeValue()#
protected addRangeValue(value): void;Defined in: packages/db/src/indexes/base-index.ts:277
Parameters#
value#
unknown
Returns#
void
Inherited from#
build()#
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#
canOptimizeRangeFor()#
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#
clear()#
clear(): void;Defined in: packages/db/src/indexes/basic-index.ts:213
Clears all data from the index
Returns#
void
Overrides#
clearRangeValues()#
protected clearRangeValues(): void;Defined in: packages/db/src/indexes/base-index.ts:295
Returns#
void
Inherited from#
equalityLookup()#
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#
evaluateAddedValue()#
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#
evaluateIndexExpression()#
protected evaluateIndexExpression(item): any;Defined in: packages/db/src/indexes/base-index.ts:367
Parameters#
item#
any
Returns#
any
Inherited from#
BaseIndex.evaluateIndexExpression
exactBucketKeys()#
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#
inArrayLookup()#
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#
initialize()#
protected initialize(_options?): void;Defined in: packages/db/src/indexes/base-index.ts:365
Parameters#
_options?#
any
Returns#
void
Inherited from#
lookup()#
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#
lookupSupportedOperation()#
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()#
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()#
matchesDirection(direction): boolean;Defined in: packages/db/src/indexes/base-index.ts:361
Checks if the index matches the provided direction.
Parameters#
direction#
Returns#
boolean
Inherited from#
matchesField()#
matchesField(fieldPath): boolean;Defined in: packages/db/src/indexes/base-index.ts:309
Parameters#
fieldPath#
string[]
Returns#
boolean
Inherited from#
rangeQuery()#
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#
rangeQueryReversed()#
rangeQueryReversed(options): Set<TKey>;Defined in: packages/db/src/indexes/base-index.ts:237
Parameters#
options#
RangeQueryOptions = {}
Returns#
Set<TKey>
Inherited from#
remove()#
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#
removeRangeValue()#
protected removeRangeValue(value): void;Defined in: packages/db/src/indexes/base-index.ts:286
Parameters#
value#
unknown
Returns#
void
Inherited from#
supports()#
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#
take()#
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#
takeFromStart()#
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#
takeReversed()#
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#
takeReversedFromEnd()#
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#
update()#
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