Skip to main content
Glama
ssv445

Lorem Ipsum MCP Server

by ssv445
RedBlackTree.ts17.9 kB
/** * @since 2.0.0 */ import type { Chunk } from "./Chunk.js" import type { Equal } from "./Equal.js" import type { Inspectable } from "./Inspectable.js" import * as RBT from "./internal/redBlackTree.js" import * as RBTI from "./internal/redBlackTree/iterator.js" import type { Option } from "./Option.js" import type { Order } from "./Order.js" import type { Pipeable } from "./Pipeable.js" import type * as Types from "./Types.js" const TypeId: unique symbol = RBT.RedBlackTreeTypeId as TypeId /** * @since 2.0.0 * @category symbol */ export type TypeId = typeof TypeId /** * @since 2.0.0 * @category constants */ export const Direction = RBTI.Direction /** * A Red-Black Tree. * * @since 2.0.0 * @category models */ export interface RedBlackTree<in out Key, out Value> extends Iterable<[Key, Value]>, Equal, Pipeable, Inspectable { readonly [TypeId]: { readonly _Key: Types.Invariant<Key> readonly _Value: Types.Covariant<Value> } } /** * @since 2.0.0 */ export declare namespace RedBlackTree { /** * @since 2.0.0 */ export type Direction = number & { readonly Direction: unique symbol } } /** * @since 2.0.0 * @category refinements */ export const isRedBlackTree: { /** * @since 2.0.0 * @category refinements */ <K, V>(u: Iterable<readonly [K, V]>): u is RedBlackTree<K, V> /** * @since 2.0.0 * @category refinements */ (u: unknown): u is RedBlackTree<unknown, unknown> } = RBT.isRedBlackTree /** * Creates an empty `RedBlackTree`. * * @since 2.0.0 * @category constructors */ export const empty: <K, V = never>(ord: Order<K>) => RedBlackTree<K, V> = RBT.empty /** * Creates a new `RedBlackTree` from an iterable collection of key/value pairs. * * @since 2.0.0 * @category constructors */ export const fromIterable: { /** * Creates a new `RedBlackTree` from an iterable collection of key/value pairs. * * @since 2.0.0 * @category constructors */ <B>(ord: Order<B>): <K extends B, V>(entries: Iterable<readonly [K, V]>) => RedBlackTree<K, V> /** * Creates a new `RedBlackTree` from an iterable collection of key/value pairs. * * @since 2.0.0 * @category constructors */ <K extends B, V, B>(entries: Iterable<readonly [K, V]>, ord: Order<B>): RedBlackTree<K, V> } = RBT.fromIterable /** * Constructs a new `RedBlackTree` from the specified entries. * * @since 2.0.0 * @category constructors */ export const make: <K>( ord: Order<K> ) => <Entries extends Array<readonly [K, any]>>( ...entries: Entries ) => RedBlackTree<K, Entries[number] extends readonly [any, infer V] ? V : never> = RBT.make /** * Returns an iterator that points to the element at the specified index of the * tree. * * **Note**: The iterator will run through elements in order. * * @since 2.0.0 * @category traversing */ export const at: { /** * Returns an iterator that points to the element at the specified index of the * tree. * * **Note**: The iterator will run through elements in order. * * @since 2.0.0 * @category traversing */ (index: number): <K, V>(self: RedBlackTree<K, V>) => Iterable<[K, V]> /** * Returns an iterator that points to the element at the specified index of the * tree. * * **Note**: The iterator will run through elements in order. * * @since 2.0.0 * @category traversing */ <K, V>(self: RedBlackTree<K, V>, index: number): Iterable<[K, V]> } = RBT.atForwards /** * Returns an iterator that points to the element at the specified index of the * tree. * * **Note**: The iterator will run through elements in reverse order. * * @since 2.0.0 * @category traversing */ export const atReversed: { /** * Returns an iterator that points to the element at the specified index of the * tree. * * **Note**: The iterator will run through elements in reverse order. * * @since 2.0.0 * @category traversing */ (index: number): <K, V>(self: RedBlackTree<K, V>) => Iterable<[K, V]> /** * Returns an iterator that points to the element at the specified index of the * tree. * * **Note**: The iterator will run through elements in reverse order. * * @since 2.0.0 * @category traversing */ <K, V>(self: RedBlackTree<K, V>, index: number): Iterable<[K, V]> } = RBT.atBackwards /** * Finds all values in the tree associated with the specified key. * * @since 2.0.0 * @category elements */ export const findAll: { /** * Finds all values in the tree associated with the specified key. * * @since 2.0.0 * @category elements */ <K>(key: K): <V>(self: RedBlackTree<K, V>) => Chunk<V> /** * Finds all values in the tree associated with the specified key. * * @since 2.0.0 * @category elements */ <K, V>(self: RedBlackTree<K, V>, key: K): Chunk<V> } = RBT.findAll /** * Finds the first value in the tree associated with the specified key, if it exists. * * @category elements * @since 2.0.0 */ export const findFirst: { /** * Finds the first value in the tree associated with the specified key, if it exists. * * @category elements * @since 2.0.0 */ <K>(key: K): <V>(self: RedBlackTree<K, V>) => Option<V> /** * Finds the first value in the tree associated with the specified key, if it exists. * * @category elements * @since 2.0.0 */ <K, V>(self: RedBlackTree<K, V>, key: K): Option<V> } = RBT.findFirst /** * Returns the first entry in the tree, if it exists. * * @since 2.0.0 * @category getters */ export const first: <K, V>(self: RedBlackTree<K, V>) => Option<[K, V]> = RBT.first /** * Returns the element at the specified index within the tree or `None` if the * specified index does not exist. * * @since 2.0.0 * @category elements */ export const getAt: { /** * Returns the element at the specified index within the tree or `None` if the * specified index does not exist. * * @since 2.0.0 * @category elements */ (index: number): <K, V>(self: RedBlackTree<K, V>) => Option<[K, V]> /** * Returns the element at the specified index within the tree or `None` if the * specified index does not exist. * * @since 2.0.0 * @category elements */ <K, V>(self: RedBlackTree<K, V>, index: number): Option<[K, V]> } = RBT.getAt /** * Gets the `Order<K>` that the `RedBlackTree<K, V>` is using. * * @since 2.0.0 * @category getters */ export const getOrder: <K, V>(self: RedBlackTree<K, V>) => Order<K> = RBT.getOrder /** * Returns an iterator that traverse entries in order with keys greater than the * specified key. * * @since 2.0.0 * @category traversing */ export const greaterThan: { /** * Returns an iterator that traverse entries in order with keys greater than the * specified key. * * @since 2.0.0 * @category traversing */ <K>(key: K): <V>(self: RedBlackTree<K, V>) => Iterable<[K, V]> /** * Returns an iterator that traverse entries in order with keys greater than the * specified key. * * @since 2.0.0 * @category traversing */ <K, V>(self: RedBlackTree<K, V>, key: K): Iterable<[K, V]> } = RBT.greaterThanForwards /** * Returns an iterator that traverse entries in reverse order with keys greater * than the specified key. * * @since 2.0.0 * @category traversing */ export const greaterThanReversed: { /** * Returns an iterator that traverse entries in reverse order with keys greater * than the specified key. * * @since 2.0.0 * @category traversing */ <K>(key: K): <V>(self: RedBlackTree<K, V>) => Iterable<[K, V]> /** * Returns an iterator that traverse entries in reverse order with keys greater * than the specified key. * * @since 2.0.0 * @category traversing */ <K, V>(self: RedBlackTree<K, V>, key: K): Iterable<[K, V]> } = RBT.greaterThanBackwards /** * Returns an iterator that traverse entries in order with keys greater than or * equal to the specified key. * * @since 2.0.0 * @category traversing */ export const greaterThanEqual: { /** * Returns an iterator that traverse entries in order with keys greater than or * equal to the specified key. * * @since 2.0.0 * @category traversing */ <K>(key: K): <V>(self: RedBlackTree<K, V>) => Iterable<[K, V]> /** * Returns an iterator that traverse entries in order with keys greater than or * equal to the specified key. * * @since 2.0.0 * @category traversing */ <K, V>(self: RedBlackTree<K, V>, key: K): Iterable<[K, V]> } = RBT.greaterThanEqualForwards /** * Returns an iterator that traverse entries in reverse order with keys greater * than or equal to the specified key. * * @since 2.0.0 * @category traversing */ export const greaterThanEqualReversed: { /** * Returns an iterator that traverse entries in reverse order with keys greater * than or equal to the specified key. * * @since 2.0.0 * @category traversing */ <K>(key: K): <V>(self: RedBlackTree<K, V>) => Iterable<[K, V]> /** * Returns an iterator that traverse entries in reverse order with keys greater * than or equal to the specified key. * * @since 2.0.0 * @category traversing */ <K, V>(self: RedBlackTree<K, V>, key: K): Iterable<[K, V]> } = RBT.greaterThanEqualBackwards /** * Finds the item with key, if it exists. * * @since 2.0.0 * @category elements */ export const has: { /** * Finds the item with key, if it exists. * * @since 2.0.0 * @category elements */ <K>(key: K): <V>(self: RedBlackTree<K, V>) => boolean /** * Finds the item with key, if it exists. * * @since 2.0.0 * @category elements */ <K, V>(self: RedBlackTree<K, V>, key: K): boolean } = RBT.has /** * Insert a new item into the tree. * * @since 2.0.0 */ export const insert: { /** * Insert a new item into the tree. * * @since 2.0.0 */ <K, V>(key: K, value: V): (self: RedBlackTree<K, V>) => RedBlackTree<K, V> /** * Insert a new item into the tree. * * @since 2.0.0 */ <K, V>(self: RedBlackTree<K, V>, key: K, value: V): RedBlackTree<K, V> } = RBT.insert /** * Get all the keys present in the tree in order. * * @since 2.0.0 * @category getters */ export const keys: <K, V>(self: RedBlackTree<K, V>) => IterableIterator<K> = RBT.keysForward /** * Get all the keys present in the tree in reverse order. * * @since 2.0.0 * @category getters */ export const keysReversed: <K, V>(self: RedBlackTree<K, V>) => IterableIterator<K> = RBT.keysBackward /** * Returns the last entry in the tree, if it exists. * * @since 2.0.0 * @category getters */ export const last: <K, V>(self: RedBlackTree<K, V>) => Option<[K, V]> = RBT.last /** * Returns an iterator that traverse entries in order with keys less than the * specified key. * * @since 2.0.0 * @category traversing */ export const lessThan: { /** * Returns an iterator that traverse entries in order with keys less than the * specified key. * * @since 2.0.0 * @category traversing */ <K>(key: K): <V>(self: RedBlackTree<K, V>) => Iterable<[K, V]> /** * Returns an iterator that traverse entries in order with keys less than the * specified key. * * @since 2.0.0 * @category traversing */ <K, V>(self: RedBlackTree<K, V>, key: K): Iterable<[K, V]> } = RBT.lessThanForwards /** * Returns an iterator that traverse entries in reverse order with keys less * than the specified key. * * @since 2.0.0 * @category traversing */ export const lessThanReversed: { /** * Returns an iterator that traverse entries in reverse order with keys less * than the specified key. * * @since 2.0.0 * @category traversing */ <K>(key: K): <V>(self: RedBlackTree<K, V>) => Iterable<[K, V]> /** * Returns an iterator that traverse entries in reverse order with keys less * than the specified key. * * @since 2.0.0 * @category traversing */ <K, V>(self: RedBlackTree<K, V>, key: K): Iterable<[K, V]> } = RBT.lessThanBackwards /** * Returns an iterator that traverse entries in order with keys less than or * equal to the specified key. * * @since 2.0.0 * @category traversing */ export const lessThanEqual: { /** * Returns an iterator that traverse entries in order with keys less than or * equal to the specified key. * * @since 2.0.0 * @category traversing */ <K>(key: K): <V>(self: RedBlackTree<K, V>) => Iterable<[K, V]> /** * Returns an iterator that traverse entries in order with keys less than or * equal to the specified key. * * @since 2.0.0 * @category traversing */ <K, V>(self: RedBlackTree<K, V>, key: K): Iterable<[K, V]> } = RBT.lessThanEqualForwards /** * Returns an iterator that traverse entries in reverse order with keys less * than or equal to the specified key. * * @since 2.0.0 * @category traversing */ export const lessThanEqualReversed: { /** * Returns an iterator that traverse entries in reverse order with keys less * than or equal to the specified key. * * @since 2.0.0 * @category traversing */ <K>(key: K): <V>(self: RedBlackTree<K, V>) => Iterable<[K, V]> /** * Returns an iterator that traverse entries in reverse order with keys less * than or equal to the specified key. * * @since 2.0.0 * @category traversing */ <K, V>(self: RedBlackTree<K, V>, key: K): Iterable<[K, V]> } = RBT.lessThanEqualBackwards /** * Execute the specified function for each node of the tree, in order. * * @since 2.0.0 * @category traversing */ export const forEach: { /** * Execute the specified function for each node of the tree, in order. * * @since 2.0.0 * @category traversing */ <K, V>(f: (key: K, value: V) => void): (self: RedBlackTree<K, V>) => void /** * Execute the specified function for each node of the tree, in order. * * @since 2.0.0 * @category traversing */ <K, V>(self: RedBlackTree<K, V>, f: (key: K, value: V) => void): void } = RBT.forEach /** * Visit each node of the tree in order with key greater then or equal to max. * * @since 2.0.0 * @category traversing */ export const forEachGreaterThanEqual: { /** * Visit each node of the tree in order with key greater then or equal to max. * * @since 2.0.0 * @category traversing */ <K, V>(min: K, f: (key: K, value: V) => void): (self: RedBlackTree<K, V>) => void /** * Visit each node of the tree in order with key greater then or equal to max. * * @since 2.0.0 * @category traversing */ <K, V>(self: RedBlackTree<K, V>, min: K, f: (key: K, value: V) => void): void } = RBT.forEachGreaterThanEqual /** * Visit each node of the tree in order with key lower then max. * * @since 2.0.0 * @category traversing */ export const forEachLessThan: { /** * Visit each node of the tree in order with key lower then max. * * @since 2.0.0 * @category traversing */ <K, V>(max: K, f: (key: K, value: V) => void): (self: RedBlackTree<K, V>) => void /** * Visit each node of the tree in order with key lower then max. * * @since 2.0.0 * @category traversing */ <K, V>(self: RedBlackTree<K, V>, max: K, f: (key: K, value: V) => void): void } = RBT.forEachLessThan /** * Visit each node of the tree in order with key lower than max and greater * than or equal to min. * * @since 2.0.0 * @category traversing */ export const forEachBetween: { /** * Visit each node of the tree in order with key lower than max and greater * than or equal to min. * * @since 2.0.0 * @category traversing */ <K, V>( options: { readonly min: K readonly max: K readonly body: (key: K, value: V) => void } ): (self: RedBlackTree<K, V>) => void /** * Visit each node of the tree in order with key lower than max and greater * than or equal to min. * * @since 2.0.0 * @category traversing */ <K, V>( self: RedBlackTree<K, V>, options: { readonly min: K readonly max: K readonly body: (key: K, value: V) => void } ): void } = RBT.forEachBetween /** * Reduce a state over the entries of the tree. * * @since 2.0.0 * @category folding */ export const reduce: { /** * Reduce a state over the entries of the tree. * * @since 2.0.0 * @category folding */ <Z, V, K>(zero: Z, f: (accumulator: Z, value: V, key: K) => Z): (self: RedBlackTree<K, V>) => Z /** * Reduce a state over the entries of the tree. * * @since 2.0.0 * @category folding */ <Z, V, K>( self: RedBlackTree<K, V>, zero: Z, f: (accumulator: Z, value: V, key: K) => Z ): Z } = RBT.reduce /** * Removes the entry with the specified key, if it exists. * * @since 2.0.0 */ export const removeFirst: { /** * Removes the entry with the specified key, if it exists. * * @since 2.0.0 */ <K>(key: K): <V>(self: RedBlackTree<K, V>) => RedBlackTree<K, V> /** * Removes the entry with the specified key, if it exists. * * @since 2.0.0 */ <K, V>(self: RedBlackTree<K, V>, key: K): RedBlackTree<K, V> } = RBT.removeFirst /** * Traverse the tree in reverse order. * * @since 2.0.0 * @category traversing */ export const reversed: <K, V>(self: RedBlackTree<K, V>) => Iterable<[K, V]> = RBT.reversed /** * Returns the size of the tree. * * @since 2.0.0 * @category getters */ export const size: <K, V>(self: RedBlackTree<K, V>) => number = RBT.size /** * Get all values present in the tree in order. * * @since 2.0.0 * @category getters */ export const values: <K, V>(self: RedBlackTree<K, V>) => IterableIterator<V> = RBT.valuesForward /** * Get all values present in the tree in reverse order. * * @since 2.0.0 * @category getters */ export const valuesReversed: <K, V>(self: RedBlackTree<K, V>) => IterableIterator<V> = RBT.valuesBackward

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ssv445/lorem-ipsum-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server