1 | import { Option } from '@glimmer/interfaces';
|
2 | import { Reference, ReferenceEnvironment } from './reference';
|
3 | export interface IterationItem<T, U> {
|
4 | key: unknown;
|
5 | value: T;
|
6 | memo: U;
|
7 | }
|
8 | export interface AbstractIterator<T, U, V extends IterationItem<T, U>> {
|
9 | isEmpty(): boolean;
|
10 | next(): Option<V>;
|
11 | }
|
12 | export declare type OpaqueIterationItem = IterationItem<unknown, unknown>;
|
13 | export declare type OpaqueIterator = AbstractIterator<unknown, unknown, OpaqueIterationItem>;
|
14 | export interface IteratorDelegate {
|
15 | isEmpty(): boolean;
|
16 | next(): {
|
17 | value: unknown;
|
18 | memo: unknown;
|
19 | } | null;
|
20 | }
|
21 | export interface IteratorReferenceEnvironment extends ReferenceEnvironment {
|
22 | getPath(obj: unknown, path: string): unknown;
|
23 | toIterator(obj: unknown): Option<IteratorDelegate>;
|
24 | }
|
25 | declare type KeyFor = (item: unknown, index: unknown) => unknown;
|
26 | export declare function createIteratorRef(listRef: Reference, key: string): Reference<ArrayIterator | IteratorWrapper>;
|
27 | export declare function createIteratorItemRef(_value: unknown): Reference<unknown>;
|
28 | declare class IteratorWrapper implements OpaqueIterator {
|
29 | private inner;
|
30 | private keyFor;
|
31 | constructor(inner: IteratorDelegate, keyFor: KeyFor);
|
32 | isEmpty(): boolean;
|
33 | next(): OpaqueIterationItem;
|
34 | }
|
35 | declare 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 | }
|
44 | export {};
|
45 |
|
\ | No newline at end of file |