// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license. import * as dispatch from "./dispatch.ts"; import { sendSync } from "./dispatch_json.ts"; /** Permissions as granted by the caller */ export interface Permissions { read: boolean; write: boolean; net: boolean; env: boolean; run: boolean; hrtime: boolean; // NOTE: Keep in sync with src/permissions.rs } export type Permission = keyof Permissions; /** Inspect granted permissions for the current program. * * if (Deno.permissions().read) { * const file = await Deno.readFile("example.test"); * // ... * } */ export function permissions(): Permissions { return sendSync(dispatch.OP_PERMISSIONS) as Permissions; } /** Revoke a permission. When the permission was already revoked nothing changes * * if (Deno.permissions().read) { * const file = await Deno.readFile("example.test"); * Deno.revokePermission('read'); * } * Deno.readFile("example.test"); // -> error or permission prompt */ export function revokePermission(permission: Permission): void { sendSync(dispatch.OP_REVOKE_PERMISSION, { permission }); }