import type { Bool, False, True } from './bool.js'; import type { Apply1, Assume, HKT1, HKT2, HKT3, HKT4, Pipe1 } from './hkt.js'; import type { List } from './list.js'; import type { Int, Nat } from './num/index.js'; import type { Str } from './str.js'; export type Cast = T extends U ? T : U; export interface NonNullable$ extends HKT1 { new: (x: Assume) => NonNullable; } export type Eq = (() => G extends T ? 1 : 2) extends < G, >() => G extends U ? 1 : 2 ? True : False; export interface Eq$ extends HKT1 { new: (x: Assume) => Eq; } export interface Eq$$ extends HKT2 { new: ( x: Assume, y: Assume, ) => Eq; } export type IfEq = If, Then, Else>; export interface IfEq$ extends HKT1 { new: (x: Assume) => IfEq; } export interface IfEq$$ extends HKT2 { new: ( x: Assume, y: Assume, ) => IfEq; } export interface IfEq$$$ extends HKT3 { new: ( x: Assume, y: Assume, then: Assume, ) => IfEq; } export interface IfEq$$$$ extends HKT4 { new: ( x: Assume, y: Assume, then: Assume, else_: Assume, ) => IfEq; } export type IfpEq = Eq< T, U > extends True ? Apply1 : Apply1; export interface IfpEq$ extends HKT1 { new: (x: Assume) => IfpEq; } export interface IfpEq$$ extends HKT2 { new: ( x: Assume, y: Assume, ) => IfpEq; } export interface IfpEq$$$ extends HKT3 { new: ( x: Assume, y: Assume, thenFn: Assume, ) => IfpEq; } export interface IfpEq$$$$ extends HKT4 { new: ( x: Assume, y: Assume, thenFn: Assume, elseFn: Assume, ) => IfpEq; } export type If = Cond extends True ? Then : Else; export interface If$ extends HKT1 { new: (x: Assume) => If; } export interface If$$ extends HKT2 { new: ( x: Assume, y: Assume, ) => If; } export interface If$$$ extends HKT3 { new: ( x: Assume, y: Assume, z: Assume, ) => If; } export type IfNot = If, Then, Else>; export interface IfNot$ extends HKT1 { new: (x: Assume) => IfNot; } export interface IfNot$$ extends HKT2 { new: ( x: Assume, y: Assume, ) => IfNot; } export interface IfNot$$$ extends HKT3 { new: ( x: Assume, y: Assume, z: Assume, ) => IfNot; } export interface Yield1$ extends HKT1 { new: (x: Assume) => T; } export interface Yield1$$ extends HKT2 { new: ( x: Assume, y: Assume, ) => typeof y; } export interface Yield2$$ extends HKT2 { new: (x: Assume, y: Assume) => T; } export interface Yield2$$$ extends HKT3 { new: ( x: Assume, y: Assume, z: Assume, ) => typeof z; } export type Ifp< T, Pred extends HKT1, ThenFn extends HKT1, ElseFn extends HKT1, > = Apply1 extends True ? Apply1 : Apply1; export interface Ifp$< Pred extends HKT1, ThenFn extends HKT1, ElseFn extends HKT1, > extends HKT1 { new: (x: Assume) => Ifp; } export interface Ifp$$ extends HKT2 { new: ( x: Assume, pred: Assume, ) => Ifp; } export interface Ifp$$$ extends HKT3 { new: ( x: Assume, pred: Assume, thenFn: Assume, ) => Ifp; } export interface Ifp$$$$ extends HKT4 { new: ( x: Assume, pred: Assume, thenFn: Assume, elseFn: Assume, ) => Ifp; } export type IfNotP< T, Pred extends HKT1, ThenFn extends HKT1, ElseFn extends HKT1, > = Apply1 extends False ? Apply1 : Apply1; export interface IfNotP$< Pred extends HKT1, ThenFn extends HKT1, ElseFn extends HKT1, > extends HKT1 { new: ( x: Assume, ) => IfNotP; } export interface IfNotP$$ extends HKT2 { new: ( x: Assume, pred: Assume, ) => IfNotP; } export interface IfNotP$$$ extends HKT3 { new: ( x: Assume, pred: Assume, thenFn: Assume, ) => IfNotP; } export interface IfNotP$$$$ extends HKT4 { new: ( x: Assume, pred: Assume, thenFn: Assume, elseFn: Assume, ) => IfNotP; } export type IsNullish = T extends Nullish ? True : False; export interface IsNullish$ extends HKT1 { new: (x: Assume) => IsNullish; } export type IfNullish = If, Then, Else>; export interface IfNullish$ extends HKT1 { new: (x: Assume) => IfNullish; } export interface IfNullish$$ extends HKT2 { new: ( x: Assume, y: Assume, ) => IfNullish; } export interface IfNullish$$$ extends HKT3 { new: ( x: Assume, y: Assume, z: Assume, ) => IfNullish; } export type IsNonNullish = Not>; export interface IsNonNullish$ extends HKT1 { new: (x: Assume) => IsNonNullish; } export type IfNonNullish = If, Then, Else>; export interface IfNonNullish$ extends HKT1 { new: (x: Assume) => IfNonNullish; } export interface IfNonNullish$$ extends HKT2 { new: ( x: Assume, y: Assume, ) => IfNonNullish; } export interface IfNonNullish$$$ extends HKT3 { new: ( x: Assume, y: Assume, z: Assume, ) => IfNonNullish; } export type In = Pipe1< AS, List.Some$, IfCovers$>> >; export interface In$ extends HKT1 { new: (x: Assume) => In; } export interface In$$ extends HKT2 { new: ( x: Assume, as: Assume, ) => In; } export type IfIn = If, Then, Else>; export interface IfIn$ extends HKT1 { new: (x: Assume) => IfIn; } export interface IfIn$$ extends HKT2 { new: ( x: Assume, as: Assume, ) => IfIn; } export interface IfIn$$$ extends HKT3 { new: ( x: Assume, as: Assume, then: Assume, ) => IfIn; } export interface IfIn$$$$ extends HKT4 { new: ( x: Assume, as: Assume, then: Assume, else_: Assume, ) => IfIn; } export type IfpIn< T, AS extends List, ThenFn extends HKT1, ElseFn extends HKT1, > = In extends True ? Apply1 : Apply1; export interface IfpIn$< AS extends List, ThenFn extends HKT1, ElseFn extends HKT1, > extends HKT1 { new: (x: Assume) => IfpIn; } export interface IfpIn$$ extends HKT2 { new: ( x: Assume, as: Assume, ) => IfpIn; } export interface IfpIn$$$ extends HKT3 { new: ( x: Assume, as: Assume, thenFn: Assume, ) => IfpIn; } export interface IfpIn$$$$ extends HKT4 { new: ( x: Assume, as: Assume, thenFn: Assume, elseFn: Assume, ) => IfpIn; } export type Identity = T; export interface Identity$ extends HKT1 { new: (x: Assume) => Identity; } export type Repeat = number extends Int.Dec ? readonly T[] : N extends 0 ? readonly [] : readonly [T, ...Repeat>]; export interface Repeat$ extends HKT1 { new: (x: Assume) => Repeat; } export type Not = Bool.Not; export interface Not$ extends HKT1 { new: (x: Assume) => Not; } export type Extends = T extends U ? True : False; export interface Extends$ extends HKT1 { new: (x: Assume) => Extends; } export interface Extends$$ extends HKT2 { new: ( x: Assume, y: Assume, ) => Extends; } export type IfExtends = If, Then, Else>; export interface IfExtends$ extends HKT1 { new: (x: Assume) => IfExtends; } export interface IfExtends$$ extends HKT2 { new: ( x: Assume, y: Assume, ) => IfExtends; } export interface IfExtends$$$ extends HKT3 { new: ( x: Assume, y: Assume, then: Assume, ) => IfExtends; } export interface IfExtends$$$$ extends HKT4 { new: ( x: Assume, y: Assume, then: Assume, else_: Assume, ) => IfExtends; } export type Covers = U extends T ? True : False; export interface Covers$ extends HKT1 { new: (x: Assume) => Covers; } export interface Covers$$ extends HKT2 { new: ( x: Assume, y: Assume, ) => Covers; } export type IfCovers = If, Then, Else>; export interface IfCovers$ extends HKT1 { new: (x: Assume) => IfCovers; } export interface IfCovers$$ extends HKT2 { new: ( x: Assume, y: Assume, ) => IfCovers; } export interface IfCovers$$$ extends HKT3 { new: ( x: Assume, y: Assume, then: Assume, ) => IfCovers; } export interface IfCovers$$$$ extends HKT4 { new: ( x: Assume, y: Assume, then: Assume, else_: Assume, ) => IfCovers; } export type All = AS extends readonly [ infer Head, ...infer Tail, ] ? Head extends True ? All : False : True; export interface All$ extends HKT1 { new: (x: Assume) => All; } export type None = AS extends readonly [ infer Head, ...infer Tail, ] ? Head extends False ? None : False : True; export interface None$ extends HKT1 { new: (x: Assume) => None; } export type Any = AS extends readonly [ infer Head, ...infer Tail, ] ? Head extends True ? True : Any : False; export interface Any$ extends HKT1 { new: (x: Assume) => Any; } export type And1 = A; export interface And1$ extends HKT1 { new: (a: Assume) => And1; } export type And2 = A extends True ? B : False; export interface And2$ extends HKT1 { new: (a: Assume) => And2; } export interface And2$$ extends HKT2 { new: ( a: Assume, b: Assume, ) => And2; } export type And3< A extends Bool, B extends Bool, C extends Bool, > = A extends True ? (B extends True ? C : False) : False; export interface And3$ extends HKT1 { new: (a: Assume) => And3; } export interface And3$$ extends HKT2 { new: ( a: Assume, b: Assume, ) => And3; } export interface And3$$$ extends HKT3 { new: ( a: Assume, b: Assume, c: Assume, ) => And3; } export type Path = T extends Str ? List.ToReadonly<_ParsePath> : T; type _ParsePath< S extends Str, Prev extends Str = '', PrevChar extends Str = '', InString extends Bool = False, StringQuote extends "'" | '"' = "'", Result extends List = [], > = S extends `${infer L}${infer R}` ? InString extends True ? L extends '\\' ? PrevChar extends '\\' ? _ParsePath : _ParsePath : L extends StringQuote ? PrevChar extends '\\' ? _ParsePath : _ParsePath> : _ParsePath : L extends "'" | '"' ? PrevChar extends '[' ? _ParsePath : _ParsePath> : L extends '[' ? _ParsePath> : L extends ']' ? PrevChar extends "'" | '"' ? _ParsePath : _ParsePath> : L extends '.' ? _ParsePath> : _ParsePath : _AppendPrev; type _AppendPrev, S extends Str> = S extends '' ? AS : [...AS, S]; export {}; //# sourceMappingURL=common.d.ts.map