@tai-kun/surrealdb
Version:
The SurrealDB SDK for JavaScript
37 lines • 1.54 kB
TypeScript
import type { Encoded, Formatter } from "@tai-kun/surrealdb/formatter";
import type { SlotLike } from "@tai-kun/surrealdb/types";
export interface SlotOptions<TValue = any> {
readonly parse?: ((value: unknown) => TValue) | undefined;
readonly formatter?: Formatter | undefined;
readonly defaultValue?: TValue | Encoded<TValue>;
}
export default class Slot<TName extends string = any, TRequired extends boolean = any, TValue = any> implements SlotLike {
readonly name: TName;
readonly isRequired: TRequired;
protected readonly fmt?: Formatter;
readonly _parse: (value: unknown) => TValue;
readonly defaultValue?: TValue | Encoded<TValue>;
constructor(name: TName, isRequired: TRequired, options?: SlotOptions<TValue>);
protected toOptions(): SlotOptions<TValue>;
/**
* @alias {@link type}
*/
as<TBind extends TValue>(): Slot<TName, true, TBind>;
/**
* @alias {@link type}
*/
as<TBind extends TValue>(parser: (value: unknown) => TBind): Slot<TName, true, TBind>;
/**
* @alias {@link as}
*/
type<TBind extends TValue>(): Slot<TName, true, TBind>;
/**
* @alias {@link as}
*/
type<TBind extends TValue>(parser: (value: unknown) => TBind): Slot<TName, true, TBind>;
rename<const TName extends string>(name: TName): Slot<TName, TRequired, TValue>;
default(defaultValue: TValue): Slot<TName, false, TValue>;
optional(): Slot<TName, false, TValue>;
required(): Slot<TName, true, TValue>;
}
//# sourceMappingURL=slot.d.ts.map