no-window-prefix
Disallows the use of Web APIs via the window object.
Disallows the use of Web APIs via the window object.
In most situations, the global variable window works like globalThis. For
example, you could call the fetch API like window.fetch(..) instead of
fetch(..) or globalThis.fetch(..). In Web Workers, however, window is not
available, but instead self, globalThis, or no prefix work fine. Therefore,
for compatibility between Web Workers and other contexts, it's highly
recommended to not access global properties via window.
Some APIs, including window.alert, window.location and window.history, are
allowed to call with window because these APIs are not supported or have
different meanings in Workers. In other words, this lint rule complains about
the use of window only if it's completely replaceable with self,
globalThis, or no prefix.
Invalid:
const a = await window.fetch("https://deno.land");
const b = window.Deno.metrics();
Valid:
const a1 = await fetch("https://deno.land");
const a2 = await globalThis.fetch("https://deno.land");
const a3 = await self.fetch("https://deno.land");
const b1 = Deno.metrics();
const b2 = globalThis.Deno.metrics();
const b3 = self.Deno.metrics();
// `alert` is allowed to call with `window` because it's not supported in Workers
window.alert("🍣");
// `location` is also allowed
window.location.host;