From 900929f65c94585de713cb8864aacb5fdc065759 Mon Sep 17 00:00:00 2001 From: Asher Gomez Date: Wed, 25 Jan 2023 08:42:44 +0900 Subject: 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" --- runtime/js/10_permissions.js | 48 ++++++++++++++++++++++++++++++-------------- 1 file changed, 33 insertions(+), 15 deletions(-) (limited to 'runtime/js') 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); } } -- cgit v1.2.3