summaryrefslogtreecommitdiff
path: root/cli/js/ops/fs/open.ts
blob: edd52c3767ea4104386f4162dfebcc8fd9585cdd (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
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.

import { sendSync, sendAsync } from "../dispatch_json.ts";
import { pathFromURL } from "../../util.ts";

export interface OpenOptions {
  read?: boolean;
  write?: boolean;
  append?: boolean;
  truncate?: boolean;
  create?: boolean;
  createNew?: boolean;
  /** Permissions to use if creating the file (defaults to `0o666`, before
   * the process's umask).
   * It's an error to specify mode without also setting create or createNew to `true`.
   * Ignored on Windows. */
  mode?: number;
}

export function openSync(path: string | URL, options: OpenOptions): number {
  const mode: number | undefined = options?.mode;
  return sendSync("op_open", { path: pathFromURL(path), options, mode });
}

export function open(
  path: string | URL,
  options: OpenOptions
): Promise<number> {
  const mode: number | undefined = options?.mode;
  return sendAsync("op_open", { path: pathFromURL(path), options, mode });
}