# Parser.TakeWhile1Internal

Requires the type-level allowed-character prefix to be non-empty.

## Signatures

```ts
type TakeWhile1Internal<Input extends string, Allowed extends string> = TakeWhileInternal<Input, Allowed> extends readonly [
    infer Taken extends string,
    infer Rest extends string
] ? Taken extends "" ? never : readonly [
    Taken,
    Rest
] : never;
```

## Why

TakeWhile1 can distinguish failure from a successful empty match.

## Ownership and lifetime

`TakeWhile1Internal` exists only during type checking and reuses `TakeWhileInternal`'s result;
it creates no runtime validation or retained prefix.
