UNPKG

@backland/schema

Version:

TypeScript schema declaration and validation library with static type inference

9 lines (8 loc) 823 B
import { L, S } from '@backland/utils'; export type SplitTokens<Strings extends string[]> = Strings extends [] ? [] : Strings extends [infer Head, ...infer Tail] ? Head extends string ? Tail extends [] ? _SplitTokens<Head> : Tail extends string[] ? [..._SplitTokens<Head>, ...SplitTokens<Tail>] : never : never : never; export type _SplitTokens<T extends string> = L.Filter<__SplitTokens<__SplitTokens<__SplitTokens<[ T ], '\n'>, ';'>, ' '>, ''>; export type __SplitTokens<Strings extends string[], R extends string> = Strings extends [] ? [] : Strings extends [infer Head, ...infer Tail] ? Head extends string ? Tail extends [] ? Split<Head, R> : Tail extends string[] ? [...Split<Head, R>, ...__SplitTokens<Tail, R>] : never : never : never; type Split<T extends string, S extends string> = S.Split<T, S>; export {};