Skip to content

tyneq


tyneq / orderedTerminal

Function: orderedTerminal()

orderedTerminal<TArgs>(name, validate?): <TClass>(target, _context) => TClass

Defined in: src/plugin/decorators/orderedTerminal.ts:34

Class decorator that registers a TyneqOrderedTerminalOperator subclass as a terminal operator available only on ordered sequences.

The class constructor receives the full OrderedEnumerable as its first argument, giving access to ordered-sequence members (comparers, parent chain, etc.).

Type Parameters

Type ParameterDefault type
TArgs extends unknown[]never

Parameters

ParameterTypeDescription
namestringMethod name to expose on ordered sequences.
validate?(...args) => voidOptional eager validation function for user-supplied arguments.

Returns

<TClass>(target, _context): TClass

Type Parameters

Type Parameter
TClass extends Constructor<{ process: unknown; }>

Parameters

ParameterType
targetTClass
_contextClassDecoratorContext<TClass>

Returns

TClass

Example

ts
@orderedTerminal("isSorted")
class IsSortedOperator<T> extends TyneqOrderedTerminalOperator<T, boolean> {
    process(): boolean {
        const items = [...this.source];
        for (let i = 1; i < items.length; i++) {
            if (this.source.comparer(items[i - 1], items[i]) > 0) return false;
        }
        return true;
    }
}