Skip to content

Commit

Permalink
update Deno deps (*down-to* [email protected]; *pin*); avoid permission pro…
Browse files Browse the repository at this point in the history
…mpt(s)

- revert to earlier deno::std library version without NODE_DEBUG permission prompts

# [why]

In the change from deno::[email protected] to deno::[email protected], a change was made to remove
a top-level async permission query gate from the library, replacing it with a synchronous
`try...catch`.[1] This was done to avoid unexpected module load order since the module with
`await` will run at a time later than synchronous peers (although still prior to user
code).[2,3]

Unfortunately, the, now default, behavior of Deno is to prompt on use for permissions which
aren't 'granted' or 'denied'. This leads to ugly UI/UX for scripts which try to control
their logging and UI (as well as being confusing and unexpected for non-developer users).
This UI/UX behavior is only avoidable if the script is run with the `--no-prompt` option
flag or all needed permissions enabled, encouraging use of `--no-prompt` and, more
problematically, `--allow-all`.

As of 2022-08, with the current Deno (Deno v1.8.0+) and deno::std (deno::[email protected]+)
library implementation, no work-around is possible due to: 1. being impossible to actually
revoke a permission (`revoke` just "downgrade[s] a permission from 'granted' to 'prompt');
2. the permission API has no synchronous functions making revocation impossible prior to a
synchronous access (even if a polyfill patch via module was attempted).

Reversion and pinning of deno::std to v0.134.0 avoids the patch changing from async gating
to sync `try...catch` while still maintaining most of the functionality of later deno::std
library versions.

# refs

[1] [fix(node): Make global.ts evaluate synchronously](denoland/std#2098)
[2] [Execution order of imports in deno is unclear/unexpected](denoland/deno#14243)
[3] [std/node should avoid TLA](denoland/std#2097)

## related discussion/issues

[Discussion ~ Bring back permission prompt behind a flag](denoland/deno#3811)
[Security prompt by default (instead of throw)](denoland/deno#10183)
[Seeking a better UX for permissions](denoland/deno#11061)
[Design Meeting 2021-07-29 ~ `Prompt by default`](denoland/deno#11767)
[permission prompt problems](denoland/deno#11936)
[`deno repl` has permissions by default?](denoland/deno#12665)
[Bad UX with prompt by default](denoland/deno#13730)
[DENO_NO_PROMPT env var support](denoland/deno#14208)
[feat: Add DENO_NO_PROMPT variable](denoland/deno#14209)
[HowTO test that a module is *no-panic* and *no-prompt* when statically imported?](denoland/deno#15356)
  • Loading branch information
rivy committed Aug 9, 2022
1 parent c6c0497 commit 3e43e55
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion src/platform-adapters/deno.deno.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
import * as path from 'https://deno.land/std@0.150.0/path/mod.ts';
import * as path from 'https://deno.land/std@0.134.0/path/mod.ts';

/* eslint-disable @typescript-eslint/ban-ts-comment */

Expand Down

0 comments on commit 3e43e55

Please sign in to comment.