diff options
author | Bartek Iwańczuk <biwanczuk@gmail.com> | 2020-07-13 18:23:24 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-13 18:23:24 +0200 |
commit | 11560387bb056098c55049db22c63550358c953a (patch) | |
tree | eb3a4704c2ee7f2ae36a035833e1b1962a594ba0 /cli/js/permissions.ts | |
parent | 44187c81f4a09dbec0ca83b91e5f378590c93cff (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.ts | 79 |
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(); |