Bird
Raised Fist0
Denoframework~5 mins

Permission prompts at runtime in Deno - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of permission prompts at runtime in Deno?
Permission prompts at runtime in Deno ask the user to allow or deny access to sensitive resources like files, network, or environment variables. This protects the system by preventing unauthorized access.
Click to reveal answer
beginner
How do you request permission to read a file at runtime in Deno?
You use the Deno.permissions.request({ name: "read", path: "./file.txt" }) method. It returns a promise that resolves with the permission status, letting you check if access was granted.
Click to reveal answer
beginner
What are the possible permission states returned by Deno's permission API?
The states are granted (access allowed), denied (access denied), and prompt (user has not decided yet).
Click to reveal answer
intermediate
How can you check the current permission status without prompting the user in Deno?
Use Deno.permissions.query({ name: "read" }). It returns the current permission state without asking the user again.
Click to reveal answer
intermediate
Why is it important to request permissions at runtime instead of granting all permissions upfront?
Requesting permissions at runtime improves security by limiting access only when needed. It also builds user trust by showing exactly what the program wants to do.
Click to reveal answer
Which Deno method requests permission and may show a prompt to the user?
ADeno.permissions.request()
BDeno.permissions.query()
CDeno.permissions.grant()
DDeno.permissions.check()
What permission name would you use to request network access in Deno?
A"network"
B"net"
C"connect"
D"socket"
If a permission status is "prompt", what does it mean?
AUser has already granted permission
BUser has denied permission
CPermission is not required
DUser has not decided yet
Which of these is NOT a valid permission name in Deno?
A"read"
B"write"
C"execute"
D"env"
Why might you want to check permission status before requesting it?
ATo avoid prompting the user unnecessarily
BTo grant permission automatically
CTo disable permissions
DTo restart the program
Explain how Deno handles permission prompts at runtime and why this is important.
Think about how programs ask for permission to use files or network.
You got /4 concepts.
    Describe the difference between Deno.permissions.request() and Deno.permissions.query().
    One asks the user, the other just checks silently.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does Deno.permissions.query() do in a Deno program?
      easy
      A. It checks if a specific permission is already granted or denied.
      B. It automatically grants all permissions to the program.
      C. It revokes permissions from the program at runtime.
      D. It lists all permissions the program will request in the future.

      Solution

      1. Step 1: Understand the purpose of Deno.permissions.query()

        This method is used to check the current status of a permission, whether it is granted, denied, or prompt.
      2. Step 2: Compare with other permission methods

        Unlike request() which asks for permission, query() only checks the status without changing it.
      3. Final Answer:

        It checks if a specific permission is already granted or denied. -> Option A
      4. Quick Check:

        Permission check = A [OK]
      Hint: Query checks status without changing permissions [OK]
      Common Mistakes:
      • Confusing query() with request()
      • Thinking query() grants permissions
      • Assuming query() revokes permissions
      2. Which of the following is the correct syntax to request read permission for the file data.txt in Deno?
      easy
      A. await Deno.permissions.request("read", "data.txt");
      B. Deno.permissions.request({ permission: "read", file: "data.txt" });
      C. await Deno.permissions.request({ name: "read", path: "data.txt" });
      D. Deno.permissions.query({ name: "read", path: "data.txt" });

      Solution

      1. Step 1: Identify correct method and parameters

        The request() method takes an object with a name property for permission type and optional path for file-specific permission.
      2. Step 2: Check syntax correctness

        await Deno.permissions.request({ name: "read", path: "data.txt" }); uses correct async call with an object containing name: "read" and path: "data.txt". Other options misuse parameters or use query instead of request.
      3. Final Answer:

        await Deno.permissions.request({ name: "read", path: "data.txt" }); -> Option C
      4. Quick Check:

        Correct request syntax = B [OK]
      Hint: Use object with name and path in request() [OK]
      Common Mistakes:
      • Passing parameters as separate arguments
      • Using query() instead of request()
      • Wrong property names like permission or file
      3. Consider this code snippet in Deno:
      const status = await Deno.permissions.query({ name: "net" });
      console.log(status.state);
      If the program has not requested network permission yet, what will be printed?
      medium
      A. "granted"
      B. "denied"
      C. An error is thrown
      D. "prompt"

      Solution

      1. Step 1: Understand default permission state

        When a permission like "net" is queried before any request, Deno returns the state "prompt" indicating user has not yet granted or denied.
      2. Step 2: Confirm no error thrown on query

        Querying permission does not throw errors; it returns the current state as a string.
      3. Final Answer:

        "prompt" -> Option D
      4. Quick Check:

        Unrequested permission state = prompt [OK]
      Hint: Unasked permissions show 'prompt' state [OK]
      Common Mistakes:
      • Assuming default is granted or denied
      • Expecting an error on query
      • Confusing query() with request() behavior
      4. What is wrong with this Deno code snippet?
      const permission = Deno.permissions.request({ name: "read" });
      if (permission.state === "granted") {
        console.log("Access allowed");
      }
      medium
      A. Missing await before Deno.permissions.request call.
      B. Using wrong permission name "read" instead of "readFile".
      C. Cannot check permission.state directly; must use a callback.
      D. request() does not return a permission status object.

      Solution

      1. Step 1: Check async usage of request()

        The request() method returns a Promise, so it must be awaited to get the permission status object.
      2. Step 2: Identify missing await impact

        Without await, permission is a Promise, so accessing permission.state is invalid and causes errors.
      3. Final Answer:

        Missing await before Deno.permissions.request call. -> Option A
      4. Quick Check:

        Always await request() for permission object [OK]
      Hint: Always await async permission requests [OK]
      Common Mistakes:
      • Forgetting await on async calls
      • Confusing permission names
      • Trying to use callbacks instead of promises
      5. You want to write a Deno script that reads a file only if the user grants permission at runtime. Which approach correctly handles permission requests and reading the file?
      hard
      A. const status = Deno.permissions.query({ name: "read", path: "file.txt" }); if (status.state === "granted") { const data = Deno.readTextFileSync("file.txt"); console.log(data); }
      B. const status = await Deno.permissions.request({ name: "read", path: "file.txt" }); if (status.state === "granted") { const data = await Deno.readTextFile("file.txt"); console.log(data); } else { console.log("Permission denied."); }
      C. await Deno.readTextFile("file.txt"); console.log("File read without permission check.");
      D. Deno.permissions.request({ name: "read" }); const data = await Deno.readTextFile("file.txt"); console.log(data);

      Solution

      1. Step 1: Request permission with await and check result

        const status = await Deno.permissions.request({ name: "read", path: "file.txt" }); if (status.state === "granted") { const data = await Deno.readTextFile("file.txt"); console.log(data); } else { console.log("Permission denied."); } correctly awaits the permission request and checks if the state is "granted" before proceeding.
      2. Step 2: Read file only if permission granted

        It reads the file asynchronously only after permission is granted, otherwise it informs the user permission was denied.
      3. Step 3: Identify errors in other options

        const status = Deno.permissions.query({ name: "read", path: "file.txt" }); if (status.state === "granted") { const data = Deno.readTextFileSync("file.txt"); console.log(data); } uses query() which does not request permission; await Deno.readTextFile("file.txt"); console.log("File read without permission check."); reads without permission check; Deno.permissions.request({ name: "read" }); const data = await Deno.readTextFile("file.txt"); console.log(data); does not await request() and reads file regardless.
      4. Final Answer:

        const status = await Deno.permissions.request({ name: "read", path: "file.txt" }); if (status.state === "granted") { const data = await Deno.readTextFile("file.txt"); console.log(data); } else { console.log("Permission denied."); } -> Option B
      5. Quick Check:

        Request permission, await result, then read file [OK]
      Hint: Always await request() and check state before file access [OK]
      Common Mistakes:
      • Using query() instead of request() to ask permission
      • Not awaiting async permission requests
      • Reading files without permission check
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard