summaryrefslogtreecommitdiff
path: root/cli/js/ops/fs/read_dir.ts
blob: 75c821c338503b4199803c1f60d92a06632cc756 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
import { sendSync, sendAsync } from "../dispatch_json.ts";
import { FileInfo, FileInfoImpl } from "../../file_info.ts";
import { StatResponse } from "./stat.ts";

interface ReadDirResponse {
  entries: StatResponse[];
}

function res(response: ReadDirResponse): FileInfo[] {
  return response.entries.map(
    (statRes: StatResponse): FileInfo => {
      return new FileInfoImpl(statRes);
    }
  );
}

/** Synchronously reads the directory given by `path` and returns an array of
 * `Deno.FileInfo`.
 *
 *       const files = Deno.readdirSync("/");
 *
 * Requires `allow-read` permission. */
export function readdirSync(path: string): FileInfo[] {
  return res(sendSync("op_read_dir", { path }));
}

/** UNSTABLE: Maybe need to return an `AsyncIterable`.
 *
 * Reads the directory given by `path` and resolves to an array of `Deno.FileInfo`.
 *
 *       const files = await Deno.readdir("/");
 *
 * Requires `allow-read` permission. */
export async function readdir(path: string): Promise<FileInfo[]> {
  return res(await sendAsync("op_read_dir", { path }));
}