Skip to main content
The Deno 2 Release Candidate is here
Learn more
Module

x/willow/mod.deno.ts>Skiplist

Exploring Willow in the most efficient and sound programming language
Go to Latest
Re-export
import { Skiplist } from "https://deno.land/x/willow@0.2.1/mod.deno.ts";

Type Parameters

LogicalKey extends KvKey
LogicalValue
SummaryData

Properties

private
_maxHeight: number
private
isSetup
private
kv: KvDriver
private
logicalValueEq: (a: LogicalValue, b: LogicalValue) => boolean
private
monoid: LiftingMonoid<[LogicalKey, LogicalValue], [SummaryData, number]>

Methods

private
getLeftNode(key: PhysicalKey<LogicalKey>): Promise<Node<LogicalKey, LogicalValue, SummaryData> | undefined>

Get the node to the left of the given key in the skiplist. Returns undefined if the given key is the leftmost item of its layer.

private
getRightNode(key: PhysicalKey<LogicalKey>): Promise<Node<LogicalKey, LogicalValue, SummaryData> | undefined>

Get the node to the right of the given key in the skiplist. Returns undefined if the given key is the rightmost item of its layer.

private
setup()
private
summariseSingleLayer(start: PhysicalKey<LogicalKey>, end?: LogicalKey): Promise<[SummaryData, number]>

Summarise nodes on a single layer until reaching a node whose logical key is >= end (the end node is excluded). If end is undefined, summarises untl the end of the layer.

Returns the empty summary if the sequence of nodes in question is empty.

allEntries(reverse?: boolean): AsyncIterable<{ key: LogicalKey; value: LogicalValue; }>
entries(
start: LogicalKey | undefined,
end: LogicalKey | undefined,
opts?: { limit?: number; reverse?: boolean; },
): AsyncIterable<{ key: LogicalKey; value: LogicalValue; }>
get(key: LogicalKey): Promise<LogicalValue | undefined>
insert(
value: LogicalValue,
opts?: { layer?: number; },
): Promise<void>
remove(key: LogicalKey): Promise<boolean>
setMaxHeight(level: number)
summarise(start?: LogicalKey, end?: LogicalKey): Promise<{ fingerprint: SummaryData; size: number; }>