chromium/tools/typescript/definitions/file_system.d.ts

// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

/** @fileoverview Definitions for chrome.fileSystem API. */

// Declare minimal definitions for deprecated parts of the File API, which are
// not appearing in TypeScript compiler's default definiions, and are used by
// the chrome.fileSystem API.
interface FileSystemFileEntry {
  createWriter(callback: (writer: FileWriter) => void): void;
}

interface FileWriter {
  write(data: Blob): void;
}

declare namespace chrome {
  export namespace fileSystem {
    interface AcceptsOption {
      description?: string;
      mimeTypes?: string[];
      extensions?: string[];
    }

    type ChooseEntryType =
        'openFile'|'openWritableFile'|'saveFile'|'openDirectory';

    interface ChooseEntryOptions {
      type?: ChooseEntryType;
      suggestedName?: string;
      accepts?: AcceptsOption[];
      acceptsAllTypes?: boolean;
      acceptsMultiple?: boolean;
    }

    type ChoosEntryCallback = (entry?: FileSystemFileEntry) => void;

    export function chooseEntry(
        optionsOrCallback: ChooseEntryOptions,
        callback?: ChoosEntryCallback): void;
  }
}