summaryrefslogtreecommitdiff
path: root/cli/js/permissions.ts
diff options
context:
space:
mode:
authorBartek Iwańczuk <biwanczuk@gmail.com>2020-07-13 18:23:24 +0200
committerGitHub <noreply@github.com>2020-07-13 18:23:24 +0200
commit11560387bb056098c55049db22c63550358c953a (patch)
treeeb3a4704c2ee7f2ae36a035833e1b1962a594ba0 /cli/js/permissions.ts
parent44187c81f4a09dbec0ca83b91e5f378590c93cff (diff)
Revert "feat: move unstable Deno.permissions to navigator.permissions… (#6729)
* Revert "feat: move unstable Deno.permissions to navigator.permissions (#6244)" This reverts commit 202e7fa6ad366ee56a6d070e94eaecb6dbc745bf.
Diffstat (limited to 'cli/js/permissions.ts')
-rw-r--r--cli/js/permissions.ts79
1 files changed, 79 insertions, 0 deletions
diff --git a/cli/js/permissions.ts b/cli/js/permissions.ts
new file mode 100644
index 000000000..ab0612ad4
--- /dev/null
+++ b/cli/js/permissions.ts
@@ -0,0 +1,79 @@
+// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
+
+import * as permissionsOps from "./ops/permissions.ts";
+
+export type PermissionName =
+ | "read"
+ | "write"
+ | "net"
+ | "env"
+ | "run"
+ | "plugin"
+ | "hrtime";
+// NOTE: Keep in sync with cli/permissions.rs
+
+export type PermissionState = "granted" | "denied" | "prompt";
+
+export interface RunPermissionDescriptor {
+ name: "run";
+}
+
+export interface ReadPermissionDescriptor {
+ name: "read";
+ path?: string;
+}
+
+export interface WritePermissionDescriptor {
+ name: "write";
+ path?: string;
+}
+
+export interface NetPermissionDescriptor {
+ name: "net";
+ url?: string;
+}
+
+export interface EnvPermissionDescriptor {
+ name: "env";
+}
+
+export interface PluginPermissionDescriptor {
+ name: "plugin";
+}
+
+export interface HrtimePermissionDescriptor {
+ name: "hrtime";
+}
+
+export type PermissionDescriptor =
+ | RunPermissionDescriptor
+ | ReadPermissionDescriptor
+ | WritePermissionDescriptor
+ | NetPermissionDescriptor
+ | EnvPermissionDescriptor
+ | PluginPermissionDescriptor
+ | HrtimePermissionDescriptor;
+
+export class PermissionStatus {
+ constructor(public state: PermissionState) {}
+ // TODO(kt3k): implement onchange handler
+}
+
+export class Permissions {
+ query(desc: PermissionDescriptor): Promise<PermissionStatus> {
+ const state = permissionsOps.query(desc);
+ return Promise.resolve(new PermissionStatus(state));
+ }
+
+ revoke(desc: PermissionDescriptor): Promise<PermissionStatus> {
+ const state = permissionsOps.revoke(desc);
+ return Promise.resolve(new PermissionStatus(state));
+ }
+
+ request(desc: PermissionDescriptor): Promise<PermissionStatus> {
+ const state = permissionsOps.request(desc);
+ return Promise.resolve(new PermissionStatus(state));
+ }
+}
+
+export const permissions = new Permissions();