summaryrefslogtreecommitdiff
path: root/cli/js/lib.deno_runtime.d.ts
diff options
context:
space:
mode:
authorYoshiya Hinosawa <stibium121@gmail.com>2019-10-28 00:22:53 +0900
committerRy Dahl <ry@tinyclouds.org>2019-10-27 11:22:53 -0400
commitefd7e78af3fc086dfdec51738905665d38d08eb4 (patch)
treebb921f7d960f33c6d4d13c043a7a45ebe74290ba /cli/js/lib.deno_runtime.d.ts
parent2598f9c68d8983934c73c135c9d277b33c98e333 (diff)
Use web standard Permissions API (#3200)
Diffstat (limited to 'cli/js/lib.deno_runtime.d.ts')
-rw-r--r--cli/js/lib.deno_runtime.d.ts84
1 files changed, 57 insertions, 27 deletions
diff --git a/cli/js/lib.deno_runtime.d.ts b/cli/js/lib.deno_runtime.d.ts
index 3036ea2d1..c0bebf461 100644
--- a/cli/js/lib.deno_runtime.d.ts
+++ b/cli/js/lib.deno_runtime.d.ts
@@ -883,34 +883,64 @@ declare namespace Deno {
}
// @url js/permissions.d.ts
+ /** Permissions as granted by the caller
+ * See: https://w3c.github.io/permissions/#permission-registry
+ */
+ export type PermissionName =
+ | "run"
+ | "read"
+ | "write"
+ | "net"
+ | "env"
+ | "hrtime";
+ /** https://w3c.github.io/permissions/#status-of-a-permission */
+ export type PermissionState = "granted" | "denied" | "prompt";
+ interface RunPermissionDescriptor {
+ name: "run";
+ }
+ interface ReadWritePermissionDescriptor {
+ name: "read" | "write";
+ path?: string;
+ }
+ interface NetPermissionDescriptor {
+ name: "net";
+ url?: string;
+ }
+ interface EnvPermissionDescriptor {
+ name: "env";
+ }
+ interface HrtimePermissionDescriptor {
+ name: "hrtime";
+ }
+ /** See: https://w3c.github.io/permissions/#permission-descriptor */
+ type PermissionDescriptor =
+ | RunPermissionDescriptor
+ | ReadWritePermissionDescriptor
+ | NetPermissionDescriptor
+ | EnvPermissionDescriptor
+ | HrtimePermissionDescriptor;
+
+ export class Permissions {
+ /** Queries the permission.
+ * const status = await Deno.permissions.query({ name: "read", path: "/etc" });
+ * if (status.state === "granted") {
+ * data = await Deno.readFile("/etc/passwd");
+ * }
+ */
+ query(d: PermissionDescriptor): Promise<PermissionStatus>;
+ /** Revokes the permission.
+ * const status = await Deno.permissions.revoke({ name: "run" });
+ * assert(status.state !== "granted")
+ */
+ revoke(d: PermissionDescriptor): Promise<PermissionStatus>;
+ }
+ export const permissions: Permissions;
- /** Permissions as granted by the caller */
- export interface Permissions {
- read: boolean;
- write: boolean;
- net: boolean;
- env: boolean;
- run: boolean;
- hrtime: boolean;
- }
- 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;
- /** 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;
+ /** https://w3c.github.io/permissions/#permissionstatus */
+ export class PermissionStatus {
+ state: PermissionState;
+ constructor(state: PermissionState);
+ }
// @url js/truncate.d.ts