veffect
Version:
powerful TypeScript validation library built on the robust foundation of Effect combining exceptional type safety, high performance, and developer experience. Taking inspiration from Effect's functional principles, VEffect delivers a balanced approach tha
33 lines (29 loc) • 685 B
text/typescript
/**
* @since 2.0.0
*/
/**
* @category symbol
* @since 2.0.0
*/
export declare const nonEmpty: unique symbol
/**
* @category model
* @since 2.0.0
*/
export interface NonEmptyIterable<out A> extends Iterable<A> {
readonly [nonEmpty]: A
}
/**
* @category getters
* @since 2.0.0
*/
export const unprepend = <A>(self: NonEmptyIterable<A>): [firstElement: A, remainingElements: Iterator<A>] => {
const iterator = self[Symbol.iterator]()
const next = iterator.next()
if (next.done) {
throw new Error(
"BUG: NonEmptyIterator should not be empty - please report an issue at https://github.com/Effect-TS/effect/issues"
)
}
return [next.value, iterator]
}