UNPKG

@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
/// <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 {};