mirror of
https://github.com/denoland/deno.git
synced 2024-11-25 15:29:32 -05:00
39 lines
1.2 KiB
TypeScript
39 lines
1.2 KiB
TypeScript
// 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 });
|
|
}
|