the-wireguard-effect
Version:
Cross platform wireguard api client for nodejs built on wireguard-go with effect-ts
23 lines (19 loc) • 774 B
text/typescript
/** @internal */
export type Tail<T extends ReadonlyArray<unknown>> = T extends
| [infer _First, ...infer Rest]
| readonly [infer _First, ...infer Rest]
? Rest
: Array<unknown>;
/** @internal */
export type Split<Str extends string, Delimiter extends string> = string extends Str | ""
? Array<string>
: Str extends `${infer Head}${Delimiter}${infer Rest}`
? [Head, ...Split<Rest, Delimiter>]
: [Str];
/** @internal */
export const tail = <T extends ReadonlyArray<unknown>>(elements: T): Tail<T> => elements.slice(1) as Tail<T>;
/** @internal */
export const splitLiteral = <Str extends string, Delimiter extends string>(
str: Str,
delimiter: Delimiter
): Split<Str, Delimiter> => str.split(delimiter) as Split<Str, Delimiter>;