Skip to content

List

ts
import { Directory } from './dir.js';
import { DirentWrapper } from '../wrapper/dirent.js';
import type { LoomFile } from './file.js';
import { ObjectDirentInterface } from '../definitions.js';
export type ListTypes = LoomFile | Directory;
type PickMatching<T, V> = {
    [K in keyof T as T[K] extends V ? K : never]: T[K];
};
type DirentMethodsName = keyof PickMatching<DirentWrapper, () => unknown>;
export declare class List<T extends ListTypes = ListTypes> {
    protected _dirent: DirentWrapper[];
    static from<T extends ListTypes>(list: List<T>): List<T>;
    static from<T extends ListTypes>(direntWraps: DirentWrapper[]): List<T>;
    constructor();
    constructor(dir: Directory, paths: ObjectDirentInterface[]);
    protected add(paths: DirentWrapper[]): void;
    protected add(list: List<T>): void;
    protected add(listOrWrap: List<T> | DirentWrapper[]): void;
    concat<U extends ListTypes>(...lists: Array<List<U>>): List<T | U>;
    get length(): number;
    protected convert(wrap: DirentWrapper): LoomFile | Directory;
    at(index: number): LoomFile | Directory;
    first<T = Directory | LoomFile>(): T;
    last<T = Directory | LoomFile>(): T;
    asArray(): Array<T>;
    filter<T extends ListTypes>(fn: (wrap: DirentWrapper) => boolean): List<T>;
    only(type: 'directories' | 'dirs'): List<Directory>;
    only(type: 'files'): List<LoomFile>;
    /**
     * @deprecated Deprecated use only instead
     */
    filterByType(direntMethod: DirentMethodsName): List<ListTypes>;
    [Symbol.iterator](): IterableIterator<T>;
    get [Symbol.toStringTag](): string;
}
export {};