UNPKG

@tai-kun/surrealdb

Version:

The SurrealDB SDK for JavaScript

51 lines (43 loc) 1.47 kB
import { defineAsRange } from "../_internals/define"; import BoundExcluded from "./bound-excluded"; import BoundIncluded from "./bound-included"; type BoundIncludedBase = new(source: any) => BoundIncluded; type BoundExcludedBase = new(source: any) => BoundExcluded; type Bound<TTypes extends RangeTypes> = | InstanceType<TTypes["BoundIncluded"]> | InstanceType<TTypes["BoundExcluded"]>; export type RangeTypes< TBoundIncluded extends BoundIncludedBase = BoundIncludedBase, TBoundExcluded extends BoundExcludedBase = BoundExcludedBase, > = { readonly BoundIncluded: TBoundIncluded; readonly BoundExcluded: TBoundExcluded; }; export type RangeSource<TTypes extends RangeTypes = RangeTypes> = readonly [ begin: Bound<TTypes> | null, end: Bound<TTypes> | null, ]; /** * @experimental */ export class RangeBase<TTypes extends RangeTypes = RangeTypes> { readonly begin: Bound<TTypes> | null; readonly end: Bound<TTypes> | null; constructor(source: RangeSource<TTypes>, readonly types: TTypes) { [this.begin, this.end] = source; defineAsRange(this); } } /** * [API Reference](https://tai-kun.github.io/surrealdb.js/v2/api/data/range) * @experimental */ export class Range extends RangeBase<RangeTypes<typeof BoundIncluded, typeof BoundExcluded>> { static readonly BoundIncluded = BoundIncluded; static readonly BoundExcluded = BoundExcluded; constructor(source: RangeSource<typeof Range>) { super(source, Range); } }