summaryrefslogtreecommitdiff
path: root/runtime/js/10_permissions.js
diff options
context:
space:
mode:
authorAsher Gomez <ashersaupingomez@gmail.com>2023-01-25 08:42:44 +0900
committerGitHub <noreply@github.com>2023-01-25 00:42:44 +0100
commit900929f65c94585de713cb8864aacb5fdc065759 (patch)
treeadbfca78424c9cdb9f81d7a1d6913e58777afb62 /runtime/js/10_permissions.js
parentf14ea3d4d43eb579674f508b6a534429cc9191d6 (diff)
feat: Add sync APIs for "Deno.permissions" (#17019)
This commit adds sync versions of async APIs to "Deno.permissions" namespace. Following APIs were added: - "Deno.permissions.querySync" - "Deno.permissions.requestSync" - "Deno.permissions.revokeSync"
Diffstat (limited to 'runtime/js/10_permissions.js')
-rw-r--r--runtime/js/10_permissions.js48
1 files changed, 33 insertions, 15 deletions
diff --git a/runtime/js/10_permissions.js b/runtime/js/10_permissions.js
index c2ce6cef0..7c4af8ed0 100644
--- a/runtime/js/10_permissions.js
+++ b/runtime/js/10_permissions.js
@@ -183,48 +183,66 @@
}
query(desc) {
+ try {
+ return PromiseResolve(this.querySync(desc));
+ } catch (error) {
+ return PromiseReject(error);
+ }
+ }
+
+ querySync(desc) {
if (!isValidDescriptor(desc)) {
- return PromiseReject(
- new TypeError(
- `The provided value "${desc?.name}" is not a valid permission name.`,
- ),
+ throw new TypeError(
+ `The provided value "${desc?.name}" is not a valid permission name.`,
);
}
formDescriptor(desc);
const state = opQuery(desc);
- return PromiseResolve(cache(desc, state));
+ return cache(desc, state);
}
revoke(desc) {
+ try {
+ return PromiseResolve(this.revokeSync(desc));
+ } catch (error) {
+ return PromiseReject(error);
+ }
+ }
+
+ revokeSync(desc) {
if (!isValidDescriptor(desc)) {
- return PromiseReject(
- new TypeError(
- `The provided value "${desc?.name}" is not a valid permission name.`,
- ),
+ throw new TypeError(
+ `The provided value "${desc?.name}" is not a valid permission name.`,
);
}
formDescriptor(desc);
const state = opRevoke(desc);
- return PromiseResolve(cache(desc, state));
+ return cache(desc, state);
}
request(desc) {
+ try {
+ return PromiseResolve(this.requestSync(desc));
+ } catch (error) {
+ return PromiseReject(error);
+ }
+ }
+
+ requestSync(desc) {
if (!isValidDescriptor(desc)) {
- return PromiseReject(
- new TypeError(
- `The provided value "${desc?.name}" is not a valid permission name.`,
- ),
+ throw new TypeError(
+ `The provided value "${desc?.name}" is not a valid permission name.`,
);
}
formDescriptor(desc);
const state = opRequest(desc);
- return PromiseResolve(cache(desc, state));
+ return cache(desc, state);
}
}