@rbxts/zircon
Version:
<div> <img src="https://i.imgur.com/YgpbX7G.png" align="left" width="128"/> <h1>ZIRCON</h1> <h3>A clean, sleek, runtime debugging console for Roblox</h3> <a href="https://npmjs.com/package/@rbxts/zircon"><img src="https://badge.fury.io
94 lines (93 loc) • 5.42 kB
TypeScript
/// <reference types="@rbxts/types" />
/// <reference types="@rbxts/compiler-types" />
import { ZrEnum } from "@rbxts/zirconium/out/Data/Enum";
import { ZrEnumItem } from "@rbxts/zirconium/out/Data/EnumItem";
import { ZrValue } from "@rbxts/zirconium/out/Data/Locals";
import ZrObject from "@rbxts/zirconium/out/Data/Object";
import ZrUndefined from "@rbxts/zirconium/out/Data/Undefined";
import { ZrInstanceUserdata } from "@rbxts/zirconium/out/Data/Userdata";
import { ZirconEnum, ZirconEnumValidator } from "./ZirconEnum";
import { ZirconFuzzyPlayerValidator } from "./Validators/ZirconFuzzyPlayerValidator";
import ZrRange from "@rbxts/zirconium/out/Data/Range";
import { ZirconFunction } from "./ZirconFunction";
export interface ZirconValidator<T, U = never> {
/**
* The type label
*/
readonly Type: string;
/**
* The validator
*/
Validate(value: unknown, player?: Player): value is T;
Transform?(value: T, player?: Player): U;
ErrorMessage?: ((arg: ZrValue | ZrUndefined, index: number, func: ZirconFunction<any, any>) => string) | string;
}
export interface ZirconArgument<T extends Validator> {
Type: T;
Label?: string;
Optional?: boolean;
}
export declare type InferValidatorFromArgument<T extends ZirconArgument<any>> = T["Type"] extends Validator ? InferValidator<T["Type"]> : never;
export declare const ZirconString: ZirconValidator<string>;
export declare const ZirconNumber: ZirconValidator<number>;
export declare const ZirconBoolean: ZirconValidator<boolean>;
export declare const ZirconObject: ZirconValidator<ZrObject>;
export declare const NativeEnum: ZirconValidator<ZrEnum>;
export declare const NativeEnumItem: ZirconValidator<ZrEnumItem>;
export interface ZirconOptionalValidator<T, U = T> extends ZirconValidator<T | undefined, U | undefined> {
}
export declare function ZirconOptionalValidator<I, O>(validator: ZirconValidator<I, O>): ZirconOptionalValidator<I, InferOptionalOutput<I, O>>;
declare type InferOptionalOutput<I, O> = [
O
] extends [
undefined
] ? I : O;
export declare const ZirconUnknown: ZirconValidator<ZrValue | ZrUndefined>;
export declare const ZirconDefined: ZirconValidator<ZrValue>;
export declare const ZirconRange: ZirconValidator<ZrRange | number, ZrRange>;
export declare function ZirconInstanceIsA<K extends keyof Instances>(typeName: K): ZirconValidator<ZrInstanceUserdata<Instance>, Instances[K]>;
export declare const ZirconPlayer: ZirconValidator<ZrInstanceUserdata<Instance>, Player>;
export declare const BuiltInValidators: {
string: ZirconValidator<string, never>;
number: ZirconValidator<number, never>;
boolean: ZirconValidator<boolean, never>;
object: ZirconValidator<ZrObject, never>;
defined: ZirconValidator<ZrValue, never>;
"object?": ZirconOptionalValidator<ZrObject, ZrObject>;
player: ZirconFuzzyPlayerValidator;
players: import("./Validators/ZirconFuzzyPlayersValidator").ZirconFuzzyPlayersValidator;
"player?": ZirconOptionalValidator<string | number | ZrInstanceUserdata<Player>, Player>;
"players?": ZirconOptionalValidator<string | number | ZrInstanceUserdata<Player>[], Player[]>;
"string?": ZirconOptionalValidator<string, string>;
"number?": ZirconOptionalValidator<number, number>;
"boolean?": ZirconOptionalValidator<boolean, boolean>;
unknown: ZirconValidator<ZrValue | typeof ZrUndefined, never>;
/** @internal */
ZrEnum: ZirconValidator<ZrEnum, never>;
/** @internal */
ZrEnumItem: ZirconValidator<ZrEnumItem, never>;
range: ZirconValidator<number | ZrRange, ZrRange>;
"range?": ZirconOptionalValidator<number | ZrRange, ZrRange>;
};
export declare type BuiltInValidators = typeof BuiltInValidators;
export declare type Validator = keyof typeof BuiltInValidators | ZirconValidator<any, any> | ZirconEnum<any>;
export declare type InferValidators<T extends ReadonlyArray<Validator>> = {
readonly [P in keyof T]: T[P] extends Validator ? InferValidator<T[P]> : never;
};
export declare type ExtractValidators<T extends readonly Validator[]> = {
[P in keyof T]: T[P] extends keyof BuiltInValidators ? BuiltInValidators[T[P] & string] : T[P];
};
export declare type IWantToStabMyselfWithAFuckingFork<T> = T extends keyof BuiltInValidators ? BuiltInValidators[T] : T;
export declare type InferArguments<T extends readonly ZirconValidator<any, any>[]> = T extends [
] ? [
...(readonly (ZrValue | ZrUndefined)[])
] : {
readonly [P in keyof T]: T[P] extends ZirconValidator<any, any> ? InferTypeFromValidator2<T[P]> : never;
};
export declare type InferValidator<T extends Validator> = T extends keyof BuiltInValidators ? BuiltInValidators[T] : T extends ZirconEnum<infer K> ? ZirconEnumValidator<K> : T;
export declare type InferTypeFromValidator<T extends Validator> = T extends keyof BuiltInValidators ? InferTypeFromValidator<BuiltInValidators[T] & Validator> : T extends ZirconValidator<infer A, never> ? A : T extends ZirconValidator<infer _, infer U> ? U : T extends ZirconEnum<infer K> ? ZirconEnumValidator<K> : never;
export declare type InferTypeFromValidator2<T extends ZirconValidator<any, any>> = T extends ZirconValidator<infer A, never> ? A : T extends ZirconValidator<infer _, infer U> ? U : never;
export declare type ValidatorArgument = {
type: Validator;
};
export {};