UNPKG

1.63 kBTypeScriptView Raw
1import { Option } from '@glimmer/interfaces';
2import { Reference, ReferenceEnvironment } from './reference';
3export interface IterationItem<T, U> {
4 key: unknown;
5 value: T;
6 memo: U;
7}
8export interface AbstractIterator<T, U, V extends IterationItem<T, U>> {
9 isEmpty(): boolean;
10 next(): Option<V>;
11}
12export declare type OpaqueIterationItem = IterationItem<unknown, unknown>;
13export declare type OpaqueIterator = AbstractIterator<unknown, unknown, OpaqueIterationItem>;
14export interface IteratorDelegate {
15 isEmpty(): boolean;
16 next(): {
17 value: unknown;
18 memo: unknown;
19 } | null;
20}
21export interface IteratorReferenceEnvironment extends ReferenceEnvironment {
22 getPath(obj: unknown, path: string): unknown;
23 toIterator(obj: unknown): Option<IteratorDelegate>;
24}
25declare type KeyFor = (item: unknown, index: unknown) => unknown;
26export declare function createIteratorRef(listRef: Reference, key: string): Reference<ArrayIterator | IteratorWrapper>;
27export declare function createIteratorItemRef(_value: unknown): Reference<unknown>;
28declare class IteratorWrapper implements OpaqueIterator {
29 private inner;
30 private keyFor;
31 constructor(inner: IteratorDelegate, keyFor: KeyFor);
32 isEmpty(): boolean;
33 next(): OpaqueIterationItem;
34}
35declare class ArrayIterator implements OpaqueIterator {
36 private iterator;
37 private keyFor;
38 private current;
39 private pos;
40 constructor(iterator: unknown[] | readonly unknown[], keyFor: KeyFor);
41 isEmpty(): boolean;
42 next(): Option<IterationItem<unknown, number>>;
43}
44export {};
45//# sourceMappingURL=iterable.d.ts.map
\No newline at end of file